The usual changes when a release is nearing...
This commit is contained in:
parent
a6c707c679
commit
76be6eda96
113
BUGS
113
BUGS
|
@ -5,6 +5,99 @@ nother to make an entry in this file, unless it was a serious bug
|
||||||
|
|
||||||
==> Status indicators: (-) not fixed; (*) fixed; (?) don't know what to do.
|
==> Status indicators: (-) not fixed; (*) fixed; (?) don't know what to do.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Known BUGS in 1.1.1 and 1.2
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
(-) arraymodule doesn't compile under Ultrix (FPROTO macro)
|
||||||
|
|
||||||
|
(-) Linux uses GNU getopt by default which is broken
|
||||||
|
|
||||||
|
(-) makesetup assumes CCC is the C++ compiler -- not portable
|
||||||
|
|
||||||
|
(-) "make depend" assumes mkdep exists -- not portable
|
||||||
|
|
||||||
|
(-) threadmodule.c leaks LOTS of memory at thread exit
|
||||||
|
|
||||||
|
(-) tkinter seems to leave an exception around sometime which breaks
|
||||||
|
unmarshalling code objects
|
||||||
|
|
||||||
|
(-) memory leak (namebuf) in initmodule2
|
||||||
|
|
||||||
|
(-) regen calls h2py which isn't defined by default
|
||||||
|
|
||||||
|
(-) shared install in Modules still doesn't work for empty list
|
||||||
|
|
||||||
|
(-) make libinstall (or similar) references to machdep directory but
|
||||||
|
doesn't create it
|
||||||
|
|
||||||
|
(-) destroying all modules may destroy __builtin__ while destructors
|
||||||
|
of other modules may still need it
|
||||||
|
|
||||||
|
(-) hash() of float values returns suspect values
|
||||||
|
|
||||||
|
(-) sockets aren't thread safe (address of static struct returned,
|
||||||
|
some calls aren't thread safe)
|
||||||
|
|
||||||
|
(-) Everything else that uses err_get() should probably use err_get_tb()
|
||||||
|
|
||||||
|
(-) struct module aligns doubles wrongly when compiled with -DDEBUG on sparc
|
||||||
|
|
||||||
|
(-) pow(int, int, long) (etc.) dumps core on Linux (and other Intel machines?)
|
||||||
|
|
||||||
|
(-) C-level coerce() doesn't call __coerce__ when it should (and
|
||||||
|
similar for __cmp__)
|
||||||
|
|
||||||
|
(-) DECREF can cause the interpreter to be called recursively (for
|
||||||
|
__del__ disciplines) -- so list and dict implementation calls doing
|
||||||
|
DECREF can cause recursive calls to methods of the object being
|
||||||
|
modified. Other files too. (Only partially fixed.)
|
||||||
|
|
||||||
|
(-) HP doesn't compile out of the box (needs LIBS=-ldld or
|
||||||
|
LIBS=/usr/lib/libdld.sl)
|
||||||
|
|
||||||
|
(-) something fishy with softspace and print_error (flushline clears
|
||||||
|
the error)
|
||||||
|
|
||||||
|
(-) tkinter doesn't seem to see any declaration of malloc on sunos 4.1.3
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
BUGS present in 1.1.1 and fixed in 1.2
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
(*) threadmodule.c leaks 'res' in t_bootstrap
|
||||||
|
|
||||||
|
(*) errors.c shouldn't declare strerror() on NT
|
||||||
|
|
||||||
|
(*) DECREF can cause the interpreter to be called recursively (for
|
||||||
|
__del__ disciplines) -- so list and dict implementation calls doing
|
||||||
|
DECREF can cause recursive calls to methods of the object being
|
||||||
|
modified. Other files too. (Only partially fixed.)
|
||||||
|
|
||||||
|
(*) tkinter dereferences NULL if timer callback raises an exception
|
||||||
|
|
||||||
|
(*) must link with -lieee for linux
|
||||||
|
|
||||||
|
(*) if a timer handler routine raises an exception, the interpreter
|
||||||
|
dereferences NULL
|
||||||
|
|
||||||
|
(*) __getattr__ doesn't clear error
|
||||||
|
|
||||||
|
(*) '%s' % a, where a is a class instance, fails
|
||||||
|
|
||||||
|
(*) "make test" won't find freshly built dynamically loaded modules --
|
||||||
|
should add ./Modules to TESTPATH
|
||||||
|
|
||||||
|
(*) lshift calls __rshift__ instead of __rlshift__
|
||||||
|
|
||||||
|
(*) memory leak in creation of sys.builtin_module_names
|
||||||
|
|
||||||
|
(*) Bugs in instance_dealloc(): (a) memory leak for exception
|
||||||
|
type+value; (2) should save+restore traceback as well
|
||||||
|
|
||||||
|
(*) modsupport.c(vmkvalue): on systems where va_list is an array, the
|
||||||
|
calls to do_mkvalue and do_mktuple don't want an "&" before va.
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
BUGS found in 1.1 and fixed in 1.1.1
|
BUGS found in 1.1 and fixed in 1.1.1
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
@ -39,21 +132,12 @@ max is >0
|
||||||
|
|
||||||
(*) sorting class instances broken if no __cmp__ defined
|
(*) sorting class instances broken if no __cmp__ defined
|
||||||
|
|
||||||
BUGS found in 1.1 and not yet fixed
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
(-) HP doesn't compile out of the box (needs LIBS=-ldld or
|
|
||||||
LIBS=/usr/lib/libdld.sl)
|
|
||||||
|
|
||||||
(-) something fishy with softspace and print_error (flushline clears
|
|
||||||
the error)
|
|
||||||
|
|
||||||
(-) tkinter doesn't seem to see any declaration of malloc on sunos 4.1.3
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
BUGS found in 1.0.3 and fixed in 1.1
|
BUGS found in 1.0.3 and fixed in 1.1
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
(*) 2 specific leaks: 1 PYTHONPATH; 2 reading code from .pyc
|
||||||
|
|
||||||
(*) If class C doesn't define __cmp__, cmp(a,b) will return -2 and
|
(*) If class C doesn't define __cmp__, cmp(a,b) will return -2 and
|
||||||
[a,b].sort() will fail
|
[a,b].sort() will fail
|
||||||
|
|
||||||
|
@ -66,9 +150,6 @@ involved.
|
||||||
(*) freeze script needs major rewrite to cope with multiple extensions
|
(*) freeze script needs major rewrite to cope with multiple extensions
|
||||||
(Jack seems to have fixed it now -- where is it?)
|
(Jack seems to have fixed it now -- where is it?)
|
||||||
|
|
||||||
(*) various memory leaks (see purify report from anthony.baxter@aaii.oz.au)
|
|
||||||
(several leaks fixed anyway :-)
|
|
||||||
|
|
||||||
(*) unwanted entries in stack trace if err_clear() clears an error
|
(*) unwanted entries in stack trace if err_clear() clears an error
|
||||||
that also set a stack trace
|
that also set a stack trace
|
||||||
|
|
||||||
|
@ -158,10 +239,6 @@ end in linefeed
|
||||||
Bugs found in 1.0.1 and not yet fixed
|
Bugs found in 1.0.1 and not yet fixed
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
(?) modsupport.c(vmkvalue): on systems where va_list is an array, the
|
|
||||||
calls to do_mkvalue and do_mktuple don't want an "&" before va.
|
|
||||||
(don't know what to do about this)
|
|
||||||
|
|
||||||
(?) threads are slow on Solaris 2
|
(?) threads are slow on Solaris 2
|
||||||
(so what?)
|
(so what?)
|
||||||
|
|
||||||
|
|
199
ChangeLog
199
ChangeLog
|
@ -1,3 +1,202 @@
|
||||||
|
Fri Dec 30 16:19:17 1994 Guido van Rossum <guido@voorn.cwi.nl>
|
||||||
|
|
||||||
|
* Parser/tokenizer.c (tok_nextc): zap tok->buf after freeing
|
||||||
|
|
||||||
|
* Include/traceback.h: added struct _frame declaration for ANSI C
|
||||||
|
|
||||||
|
* Include/bitset.h: move definition of testbit() around
|
||||||
|
|
||||||
|
Thu Dec 29 10:09:25 1994 Guido van Rossum <guido@voorn.cwi.nl>
|
||||||
|
|
||||||
|
* Objects/mappingobject.c (mapping_has_key): don't call
|
||||||
|
lookmapping() for empty dictionary
|
||||||
|
|
||||||
|
* Modules/Makefile.pre.in: use new style @prefix@ substitution
|
||||||
|
(sharedinstall): fix case of loop over empty $(SHAREDMODS)
|
||||||
|
|
||||||
|
* Several files: removed redundant variables etc. (Sam Leffler)
|
||||||
|
|
||||||
|
Wed Dec 28 12:09:10 1994 Guido van Rossum <guido@voorn.cwi.nl>
|
||||||
|
|
||||||
|
* Modules/threadmodule.c (t_bootstrap): XDECREF the return value;
|
||||||
|
(thread_exit_thread): DECREF the frame returned by save_thread()
|
||||||
|
|
||||||
|
* Modules/md5module.c, Doc/libmd5.tex: renamed md5.md5() to md5.new()
|
||||||
|
|
||||||
|
Wed Dec 21 13:30:47 1994 Guido van Rossum <guido@voorn.cwi.nl>
|
||||||
|
|
||||||
|
* Python/ceval.c (build_class): add hook for Donald Beaudry
|
||||||
|
|
||||||
|
Mon Dec 19 17:35:13 1994 Guido van Rossum <guido@voorn.cwi.nl>
|
||||||
|
|
||||||
|
* Doc/libposixfile.tex: the fileopen function was erroneously
|
||||||
|
documented as openfile
|
||||||
|
|
||||||
|
Tue Dec 13 11:46:03 1994 Guido Van Rossum <guido@tesla>
|
||||||
|
|
||||||
|
* config.h.in, configure: rewritten *by* autoconf 2.0
|
||||||
|
|
||||||
|
* configure.in: parts rewritten for autoconf 2.0; strip spaces
|
||||||
|
from uname output for QNX; test for some new things like
|
||||||
|
ftruncate, truncate and va_list as array
|
||||||
|
|
||||||
|
* acconfig.h: some reordering to get things in alphabetical order;
|
||||||
|
added GETTIMEOFDAY_NO_TZ and VA_LIST_IS_ARRAY
|
||||||
|
|
||||||
|
* README: Added SCO notes
|
||||||
|
|
||||||
|
* Python/thread_solaris.h (start_new_thread): create new threads
|
||||||
|
with THR_DETACHED option instead of THR_NEW_LWP -- else there's a
|
||||||
|
limit to the number of threads you can create in total, ever, per
|
||||||
|
process
|
||||||
|
|
||||||
|
* Python/traceback.c (tb_print): don't store in sys.last_traceback
|
||||||
|
(that's done in pythonrun.c:print_error() now)
|
||||||
|
|
||||||
|
* Python/pythonrun.c (print_error): use fatal() instead of
|
||||||
|
abort(); use err_fetch() instead of err_get(); call tb_print()
|
||||||
|
instead of going through ceval.c:printtraceback()
|
||||||
|
|
||||||
|
* Python/modsupport.c: fix vmkvalue() for systems where va_list is
|
||||||
|
an array; add support for creating lists and dcitionaries; added
|
||||||
|
convenience functions for calling functions/methods with format
|
||||||
|
and argument list
|
||||||
|
|
||||||
|
* Python/marshal.c (rd[s]_object): add trap for calls while an
|
||||||
|
exception condition is still set
|
||||||
|
|
||||||
|
* Python/{import.c,importdl.c}: completely restructured: moved
|
||||||
|
all dynamic loading stuff to importdl.c; added public interface
|
||||||
|
to the functionality through module 'imp' (for __import__ hack)
|
||||||
|
|
||||||
|
* Modules/threadmodule.c (t_bootstrap): fix leak of result value
|
||||||
|
(still a massive leak left I think)
|
||||||
|
|
||||||
|
* Python/errors.c: don't declare strerror on NT
|
||||||
|
|
||||||
|
* Python/getargs.c (vgetargs[1]): fix for systems where va_list
|
||||||
|
is an array
|
||||||
|
|
||||||
|
* Python/compile.c: use fatal() instead of abort(); use
|
||||||
|
err_{fetch,restore}
|
||||||
|
|
||||||
|
* Python/ceval.c: move some (X)DECREF's around for improved
|
||||||
|
re-entrancy; call built-in __import__ to implement IMPORT_NAME;
|
||||||
|
use err_{fetch,restore}; fix call to __rshift__ in __lshift__;
|
||||||
|
check for string left arg before anything else in rem()
|
||||||
|
|
||||||
|
* Python/ceval.c, Include/ceval.h: get rid of printtraceback
|
||||||
|
|
||||||
|
* Python/bltinmodule.c: added __import__ built-in function;
|
||||||
|
restructured argument parsing of most built-ins to use
|
||||||
|
newgetargs()
|
||||||
|
|
||||||
|
* Python/Makefile.in: add importdl.o to OBJS; special-case
|
||||||
|
compilation of importdl.c instead of import.c
|
||||||
|
|
||||||
|
* Parser/{pgen.c,parser.c,grammar.c}: use fatal() instead of abort()
|
||||||
|
|
||||||
|
* Objects/object.c: use fatal() instead of abort()
|
||||||
|
|
||||||
|
* Objects/mappingobject.c: fix re-entrancy bugs (allow ma_table
|
||||||
|
and ma_size to be 0)
|
||||||
|
|
||||||
|
* Objects/listobject.c: fix some re-entrancy bugs (not complete)
|
||||||
|
|
||||||
|
* Objects/frameobject.c: use err_{fetch,restore} everywhere; use
|
||||||
|
fatal() instead of abort()
|
||||||
|
|
||||||
|
* Objects/fileobject.c (file_truncate): new method (only of
|
||||||
|
ftruncate() is in libc)
|
||||||
|
|
||||||
|
* Objects/classobject.c (instance_getattr): add err_clear() when
|
||||||
|
retrying after failing instance_getattr1() call; use
|
||||||
|
err_{fetch,restore} everywhere
|
||||||
|
|
||||||
|
* Modules/tkintermodule.c: use PyErr_{Fetch,Restore} instead of
|
||||||
|
{GetAndClear,SetObject}; fix NULL dereference in TimerHandler
|
||||||
|
|
||||||
|
* configure.in, Modules/timemodule.c: on some systems,
|
||||||
|
gettimeofday() has no second argument
|
||||||
|
|
||||||
|
* Modules/socketmodule.c: if O_NDELAY undefined, use O_NONBLOCK
|
||||||
|
(for QNX); use gethostbyname_r if it exists (since it is
|
||||||
|
re-entrant); use h_error and hstrerror when they exist; other
|
||||||
|
changes for re-entrancy; make printable representation more
|
||||||
|
useful; cosmetic changes in argument lists
|
||||||
|
|
||||||
|
* Modules/signalmodule.c: if NSIG undefined, use _SIGMAX + 1
|
||||||
|
|
||||||
|
* Modules/posixmodule.c: changes for direct/dirent dictated by
|
||||||
|
autoconf 2.0
|
||||||
|
|
||||||
|
* Modules/config.c.in: added standard built-in module "imp"
|
||||||
|
|
||||||
|
* Modules/{Makefile.pre.in,makesetup}: change @...@ to _..._
|
||||||
|
|
||||||
|
* Makefile.in: adapted to autoconf 2.0; treat prefix in a standard
|
||||||
|
way, remove config caches in distclean target
|
||||||
|
|
||||||
|
* Lib/tkinter/Tkinter.py (Pack.propagate): fix calling convention
|
||||||
|
|
||||||
|
* Lib/test/test_b2.py: test reload() of built-in module (marshal)
|
||||||
|
|
||||||
|
* Lib/test/{test_b1.py,testall.out}: added test for __import__
|
||||||
|
|
||||||
|
* Include/rename1.h: change HEAD_INIT to macro with argument
|
||||||
|
|
||||||
|
* Include/import.h: added decl for get_pyc_magic()
|
||||||
|
|
||||||
|
* Include/{rename1.h,errors.h}, Python/errors.c: added err_fetch()
|
||||||
|
and err_restore(), get rid of err_get()
|
||||||
|
|
||||||
|
* Include/bltinmodule.h, Python/bltinmodule.c (getbuiltins): new
|
||||||
|
like getbuiltin() buit takes char * instead of stringobject *
|
||||||
|
argument (for __import__ hack)
|
||||||
|
|
||||||
|
* Doc/tut.tex: use spam, bacon and eggs instead of foo, bar, bletch
|
||||||
|
|
||||||
|
* Doc/libtypes.tex (File Objects): add footnote
|
||||||
|
explaining why readline() leaves the trailing newline in
|
||||||
|
|
||||||
|
Sat Nov 19 15:14:02 1994 Guido Van Rossum <guido@tesla>
|
||||||
|
|
||||||
|
* Objects/mappingobject.c: ma_table may now be NULL (when ma_size
|
||||||
|
== ); changes to avoid re-entering the interpreter via DECREF
|
||||||
|
while the mapping object is being modified
|
||||||
|
|
||||||
|
* Several other places: similar
|
||||||
|
|
||||||
|
* errors.[ch]: new functions err_fetch and err_restore
|
||||||
|
fetch and restore all three exception related values (plus places
|
||||||
|
using these)
|
||||||
|
|
||||||
|
* Makefile.in (TESTPATH): Added ./Modules to test path so
|
||||||
|
dynamically loaded modules are found even if not yet installed
|
||||||
|
|
||||||
|
Wed Nov 16 14:19:01 1994 Guido Van Rossum <guido@tesla>
|
||||||
|
|
||||||
|
* Python/sysmodule.c (list_builtin_module_names): stop a leak
|
||||||
|
|
||||||
|
Mon Nov 14 13:21:45 1994 Guido van Rossum <guido@tesla>
|
||||||
|
|
||||||
|
* Doc/ref[467].tex: don't use \verb{...} in footnotes; rewritten
|
||||||
|
using {\tt ...}
|
||||||
|
|
||||||
|
* Lib/urlparse.py (urljoin): safe version of Andy Bensky's fix to
|
||||||
|
urllib.py
|
||||||
|
|
||||||
|
* Lib/urllib.py (basejoin): (Andy Bensky) fix case where url has a
|
||||||
|
type and a path but no host -- the host from the base should be
|
||||||
|
inserted
|
||||||
|
|
||||||
|
* Parser/grammar.c: (Don Beaudry) initialize accelerators print
|
||||||
|
"Translating labels" header only if debugging
|
||||||
|
|
||||||
|
* Doc/ref[36].tex: some typos
|
||||||
|
|
||||||
|
* Doc/ref[35].tex: clarify reverse/backward quotes, add them to
|
||||||
|
the index
|
||||||
|
|
||||||
===================================
|
===================================
|
||||||
==> Release 1.1.1 (10 Nov 1994) <==
|
==> Release 1.1.1 (10 Nov 1994) <==
|
||||||
|
|
15
Makefile.in
15
Makefile.in
|
@ -33,18 +33,11 @@ RANLIB= @RANLIB@
|
||||||
# Machine-dependent subdirectories
|
# Machine-dependent subdirectories
|
||||||
MACHDEP= @MACHDEP@
|
MACHDEP= @MACHDEP@
|
||||||
|
|
||||||
# Install prefixes are treated specially by the configure script:
|
|
||||||
# it only changes these lines if it has received a --prefix=... or
|
|
||||||
# --exec-prefix=... command line option. Note that $(prefix) is
|
|
||||||
# also used when compiling config.c in Modules to set the default
|
|
||||||
# module search path, so if you change it later be sure to change it
|
|
||||||
# there too and rebuild.
|
|
||||||
|
|
||||||
# Install prefix for architecture-independent files
|
# Install prefix for architecture-independent files
|
||||||
prefix= /usr/local
|
prefix= @prefix@
|
||||||
|
|
||||||
# Install prefix for architecture-dependent files
|
# Install prefix for architecture-dependent files
|
||||||
exec_prefix= $(prefix)
|
exec_prefix= @exec_prefix@
|
||||||
|
|
||||||
# Expanded directories
|
# Expanded directories
|
||||||
MANDIR=$(prefix)/man
|
MANDIR=$(prefix)/man
|
||||||
|
@ -93,7 +86,7 @@ python: Makefiles
|
||||||
done
|
done
|
||||||
|
|
||||||
# Test the interpreter (twice, once without .pyc files, once with)
|
# Test the interpreter (twice, once without .pyc files, once with)
|
||||||
TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test
|
TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test:./Modules
|
||||||
test: python
|
test: python
|
||||||
-rm -f $(srcdir)/Lib/test/*.pyc
|
-rm -f $(srcdir)/Lib/test/*.pyc
|
||||||
PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
|
PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
|
||||||
|
@ -242,7 +235,7 @@ clobber: localclobber
|
||||||
# Make things extra clean, before making a distribution
|
# Make things extra clean, before making a distribution
|
||||||
distclean: clobber
|
distclean: clobber
|
||||||
-$(MAKE) SUBDIRS="$(SUBDIRSTOO)" clobber
|
-$(MAKE) SUBDIRS="$(SUBDIRSTOO)" clobber
|
||||||
-rm -f config.status config.h Makefile
|
-rm -f config.status config.log config.cache config.h Makefile
|
||||||
-for i in $(SUBDIRS) $(SUBDIRSTOO); do \
|
-for i in $(SUBDIRS) $(SUBDIRSTOO); do \
|
||||||
for f in $$i/*.in; do \
|
for f in $$i/*.in; do \
|
||||||
f=`basename "$$f" .in`; \
|
f=`basename "$$f" .in`; \
|
||||||
|
|
28
README
28
README
|
@ -1,13 +1,9 @@
|
||||||
Python release 1.1.1
|
Python release 1.2
|
||||||
====================
|
==================
|
||||||
|
|
||||||
==> This is Python version 1.1.1.
|
==> This version provides new functionality as well as bug fixes.
|
||||||
|
Everyone should upgrade. For a description of what's changed, see
|
||||||
==> Python 1.1.1 is a pure bugfix release. It fixes two core dumps
|
Misc/NEWS.
|
||||||
related to the changed implementation of (new)getargs, some
|
|
||||||
portability bugs, and some very minor things here and there. If
|
|
||||||
you have 1.1, you only need to install 1.1 if bugs in it are
|
|
||||||
bugging you.
|
|
||||||
|
|
||||||
==> If you don't know yet what Python is: it's an interpreted,
|
==> If you don't know yet what Python is: it's an interpreted,
|
||||||
extensible, embeddable, interactive, object-oriented programming
|
extensible, embeddable, interactive, object-oriented programming
|
||||||
|
@ -130,6 +126,20 @@ IRIX 5) you need to call the configure script with the option
|
||||||
found. (On some other systems, e.g. IRIX 5, these libraries exist but
|
found. (On some other systems, e.g. IRIX 5, these libraries exist but
|
||||||
are incompatible with other system libraries such as X11 and GL.)
|
are incompatible with other system libraries such as X11 and GL.)
|
||||||
|
|
||||||
|
- On SCO, a number of notes apply:
|
||||||
|
|
||||||
|
1) Everything works much better if you add -U__STDC__ to the
|
||||||
|
defs. This is because all the SCO header files are broken.
|
||||||
|
Anything that isn't mentioned in the C standard it's
|
||||||
|
conditionally excluded when __STDC__ is defined.
|
||||||
|
|
||||||
|
2) Due to the U.S. export restrictions, SCO broke the crypt
|
||||||
|
stuff out into a separate library, libcrypt_i.a so the LIBS
|
||||||
|
needed be set to:
|
||||||
|
|
||||||
|
LIBS=' -lsocket -lcrypt_i'
|
||||||
|
|
||||||
|
|
||||||
- If you want to install the binaries and the Python library somewhere
|
- If you want to install the binaries and the Python library somewhere
|
||||||
else than in /usr/local/{bin,lib}, you can pass the option
|
else than in /usr/local/{bin,lib}, you can pass the option
|
||||||
--prefix=DIRECTORY; the interpreter binary will be installed as
|
--prefix=DIRECTORY; the interpreter binary will be installed as
|
||||||
|
|
68
TODO
68
TODO
|
@ -1,4 +1,70 @@
|
||||||
(*) 2 specific leaks: 1 PYTHONPATH; 2 reading code from .pyc
|
(-) reentrancy with global variables vs. decref in
|
||||||
|
./Modules/cdmodule.c ./Modules/flmodule.c ./Objects/accessobject.c
|
||||||
|
./Objects/frameobject.c ./Python/traceback.c
|
||||||
|
|
||||||
|
(-) speed up regsub.gsub
|
||||||
|
|
||||||
|
(-) change md5.md5() to md5.new()
|
||||||
|
|
||||||
|
(-) try posixenviron.c and merge back into posixmodule.c?
|
||||||
|
|
||||||
|
(-) document chown()
|
||||||
|
|
||||||
|
(-) add and document chroot() ?
|
||||||
|
|
||||||
|
(-) use add gethostname_r and release thread lock when it exists
|
||||||
|
|
||||||
|
(-) Add `@CFLAGS@', `@CPPFLAGS@', and `@LDFLAGS@' to `Makefile.in'
|
||||||
|
|
||||||
|
(-) modules should be able to define a module destructor hook
|
||||||
|
|
||||||
|
(-) goaway() / cleanup() call AtExit funcs *after* donimport()
|
||||||
|
|
||||||
|
(-) destroy modules in reverse order of importation
|
||||||
|
|
||||||
|
(-) make array a standard built-in object
|
||||||
|
|
||||||
|
(-) makesetup should accept .o files without corresponding .c file
|
||||||
|
|
||||||
|
(-) use autoconf 2.0
|
||||||
|
|
||||||
|
(-) configure(.in ?) contains a line beginning with '+'
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Release 1.1.1 (10 Nov 1994)
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
(-) try Boehm/Dehmers/Weiser conservative garbage collector
|
||||||
|
|
||||||
|
(-) implement new 'flatten' module
|
||||||
|
|
||||||
|
(-) document new Python/C API
|
||||||
|
|
||||||
|
(*) __import__, module imp
|
||||||
|
|
||||||
|
(-) add various things to module dictionary, e.g. pathname, dictionary
|
||||||
|
where found, __version__ string?
|
||||||
|
|
||||||
|
(-) pass dict of builtins to exec / execfile / eval ???
|
||||||
|
|
||||||
|
(-) stack frame correspondence problem (Jim Roskind)
|
||||||
|
(probably solved by err_setval_tb)
|
||||||
|
|
||||||
|
(-) make lots of places use newgetargs
|
||||||
|
|
||||||
|
(-) no tp_str member in typeobject
|
||||||
|
|
||||||
|
(-) readline 2.0 on sequent has ^C problem (works only first time)
|
||||||
|
|
||||||
|
(*) add explanatory comments to Setup (especially about SGI modules
|
||||||
|
like 'cd')
|
||||||
|
|
||||||
|
(-) need to add truncate() and ftruncate() to posixmodule.c (Windows:
|
||||||
|
chsize(fd, size)
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Release 1.1 (11 Oct 1994)
|
||||||
|
======================================================================
|
||||||
|
|
||||||
(-) if __getattr__ prints something, calling repr(x) from cmd line
|
(-) if __getattr__ prints something, calling repr(x) from cmd line
|
||||||
forgets a newline
|
forgets a newline
|
||||||
|
|
17
acconfig.h
17
acconfig.h
|
@ -15,8 +15,9 @@
|
||||||
/* Define if getpgrp() must be called as getpgrp(0). */
|
/* Define if getpgrp() must be called as getpgrp(0). */
|
||||||
#undef GETPGRP_HAVE_ARG
|
#undef GETPGRP_HAVE_ARG
|
||||||
|
|
||||||
/* Define if setpgrp() must be called as setpgrp(0, 0). */
|
/* Define if gettimeofday() does not have second (timezone) argument
|
||||||
#undef SETPGRP_HAVE_ARG
|
This is the case on Motorola V4 (R40V4.2) */
|
||||||
|
#undef GETTIMEOFDAY_NO_TZ
|
||||||
|
|
||||||
/* Define this if your time.h defines altzone */
|
/* Define this if your time.h defines altzone */
|
||||||
#undef HAVE_ALTZONE
|
#undef HAVE_ALTZONE
|
||||||
|
@ -31,6 +32,9 @@
|
||||||
/* Define if you have POSIX threads */
|
/* Define if you have POSIX threads */
|
||||||
#undef _POSIX_THREADS
|
#undef _POSIX_THREADS
|
||||||
|
|
||||||
|
/* Define if setpgrp() must be called as setpgrp(0, 0). */
|
||||||
|
#undef SETPGRP_HAVE_ARG
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
/* Define to empty if the keyword does not work. */
|
||||||
#undef signed
|
#undef signed
|
||||||
|
|
||||||
|
@ -41,6 +45,12 @@
|
||||||
(which you can't on SCO ODT 3.0). */
|
(which you can't on SCO ODT 3.0). */
|
||||||
#undef SYS_SELECT_WITH_SYS_TIME
|
#undef SYS_SELECT_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Define if a va_list is an array of some kind */
|
||||||
|
#undef VA_LIST_IS_ARRAY
|
||||||
|
|
||||||
|
/* Define to empty if the keyword does not work. */
|
||||||
|
#undef volatile
|
||||||
|
|
||||||
/* Define if you want to use SGI (IRIX 4) dynamic linking.
|
/* Define if you want to use SGI (IRIX 4) dynamic linking.
|
||||||
This requires the "dl" library by Jack Jansen,
|
This requires the "dl" library by Jack Jansen,
|
||||||
ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
|
ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
|
||||||
|
@ -65,8 +75,5 @@
|
||||||
/* Define if you want to use the GNU readline library */
|
/* Define if you want to use the GNU readline library */
|
||||||
#undef WITH_READLINE
|
#undef WITH_READLINE
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
#undef volatile
|
|
||||||
|
|
||||||
|
|
||||||
/* Leave that blank line there-- autoheader needs it! */
|
/* Leave that blank line there-- autoheader needs it! */
|
||||||
|
|
140
config.h.in
140
config.h.in
|
@ -13,13 +13,6 @@
|
||||||
/* Define to empty if the keyword does not work. */
|
/* Define to empty if the keyword does not work. */
|
||||||
#undef const
|
#undef const
|
||||||
|
|
||||||
/* Define if you have dirent.h. */
|
|
||||||
#undef DIRENT
|
|
||||||
|
|
||||||
/* Define to the type of elements in the array set by `getgroups'.
|
|
||||||
Usually this is either `int' or `gid_t'. */
|
|
||||||
#undef GETGROUPS_T
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||||
#undef gid_t
|
#undef gid_t
|
||||||
|
|
||||||
|
@ -36,9 +29,6 @@
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||||
#undef mode_t
|
#undef mode_t
|
||||||
|
|
||||||
/* Define if you don't have dirent.h, but have ndir.h. */
|
|
||||||
#undef NDIR
|
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||||
#undef off_t
|
#undef off_t
|
||||||
|
|
||||||
|
@ -61,12 +51,6 @@
|
||||||
/* Define if you have the ANSI C header files. */
|
/* Define if you have the ANSI C header files. */
|
||||||
#undef STDC_HEADERS
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
/* Define if you don't have dirent.h, but have sys/dir.h. */
|
|
||||||
#undef SYSDIR
|
|
||||||
|
|
||||||
/* Define if you don't have dirent.h, but have sys/ndir.h. */
|
|
||||||
#undef SYSNDIR
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
#undef TIME_WITH_SYS_TIME
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
@ -76,9 +60,6 @@
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||||
#undef uid_t
|
#undef uid_t
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef VOID_CLOSEDIR
|
|
||||||
|
|
||||||
/* Define if your <unistd.h> contains bad prototypes for exec*()
|
/* Define if your <unistd.h> contains bad prototypes for exec*()
|
||||||
(as it does on SGI IRIX 4.x) */
|
(as it does on SGI IRIX 4.x) */
|
||||||
#undef BAD_EXEC_PROTOTYPES
|
#undef BAD_EXEC_PROTOTYPES
|
||||||
|
@ -93,8 +74,9 @@
|
||||||
/* Define if getpgrp() must be called as getpgrp(0). */
|
/* Define if getpgrp() must be called as getpgrp(0). */
|
||||||
#undef GETPGRP_HAVE_ARG
|
#undef GETPGRP_HAVE_ARG
|
||||||
|
|
||||||
/* Define if setpgrp() must be called as setpgrp(0, 0). */
|
/* Define if gettimeofday() does not have second (timezone) argument
|
||||||
#undef SETPGRP_HAVE_ARG
|
This is the case on Motorola V4 (R40V4.2) */
|
||||||
|
#undef GETTIMEOFDAY_NO_TZ
|
||||||
|
|
||||||
/* Define this if your time.h defines altzone */
|
/* Define this if your time.h defines altzone */
|
||||||
#undef HAVE_ALTZONE
|
#undef HAVE_ALTZONE
|
||||||
|
@ -109,6 +91,9 @@
|
||||||
/* Define if you have POSIX threads */
|
/* Define if you have POSIX threads */
|
||||||
#undef _POSIX_THREADS
|
#undef _POSIX_THREADS
|
||||||
|
|
||||||
|
/* Define if setpgrp() must be called as setpgrp(0, 0). */
|
||||||
|
#undef SETPGRP_HAVE_ARG
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
/* Define to empty if the keyword does not work. */
|
||||||
#undef signed
|
#undef signed
|
||||||
|
|
||||||
|
@ -116,6 +101,12 @@
|
||||||
(which you can't on SCO ODT 3.0). */
|
(which you can't on SCO ODT 3.0). */
|
||||||
#undef SYS_SELECT_WITH_SYS_TIME
|
#undef SYS_SELECT_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Define if a va_list is an array of some kind */
|
||||||
|
#undef VA_LIST_IS_ARRAY
|
||||||
|
|
||||||
|
/* Define to empty if the keyword does not work. */
|
||||||
|
#undef volatile
|
||||||
|
|
||||||
/* Define if you want to use SGI (IRIX 4) dynamic linking.
|
/* Define if you want to use SGI (IRIX 4) dynamic linking.
|
||||||
This requires the "dl" library by Jack Jansen,
|
This requires the "dl" library by Jack Jansen,
|
||||||
ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
|
ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
|
||||||
|
@ -140,90 +131,99 @@
|
||||||
/* Define if you want to use the GNU readline library */
|
/* Define if you want to use the GNU readline library */
|
||||||
#undef WITH_READLINE
|
#undef WITH_READLINE
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
/* Define if you have the chown function. */
|
||||||
#undef volatile
|
|
||||||
|
|
||||||
/* Define if you have chown. */
|
|
||||||
#undef HAVE_CHOWN
|
#undef HAVE_CHOWN
|
||||||
|
|
||||||
/* Define if you have clock. */
|
/* Define if you have the clock function. */
|
||||||
#undef HAVE_CLOCK
|
#undef HAVE_CLOCK
|
||||||
|
|
||||||
/* Define if you have dlopen. */
|
/* Define if you have the dlopen function. */
|
||||||
#undef HAVE_DLOPEN
|
#undef HAVE_DLOPEN
|
||||||
|
|
||||||
/* Define if you have ftime. */
|
/* Define if you have the ftime function. */
|
||||||
#undef HAVE_FTIME
|
#undef HAVE_FTIME
|
||||||
|
|
||||||
/* Define if you have getpeername. */
|
/* Define if you have the ftruncate function. */
|
||||||
|
#undef HAVE_FTRUNCATE
|
||||||
|
|
||||||
|
/* Define if you have the gethostname_r function. */
|
||||||
|
#undef HAVE_GETHOSTNAME_R
|
||||||
|
|
||||||
|
/* Define if you have the getpeername function. */
|
||||||
#undef HAVE_GETPEERNAME
|
#undef HAVE_GETPEERNAME
|
||||||
|
|
||||||
/* Define if you have getpgrp. */
|
/* Define if you have the getpgrp function. */
|
||||||
#undef HAVE_GETPGRP
|
#undef HAVE_GETPGRP
|
||||||
|
|
||||||
/* Define if you have getpid. */
|
/* Define if you have the getpid function. */
|
||||||
#undef HAVE_GETPID
|
#undef HAVE_GETPID
|
||||||
|
|
||||||
/* Define if you have gettimeofday. */
|
/* Define if you have the gettimeofday function. */
|
||||||
#undef HAVE_GETTIMEOFDAY
|
#undef HAVE_GETTIMEOFDAY
|
||||||
|
|
||||||
/* Define if you have getwd. */
|
/* Define if you have the getwd function. */
|
||||||
#undef HAVE_GETWD
|
#undef HAVE_GETWD
|
||||||
|
|
||||||
/* Define if you have link. */
|
/* Define if you have the link function. */
|
||||||
#undef HAVE_LINK
|
#undef HAVE_LINK
|
||||||
|
|
||||||
/* Define if you have lstat. */
|
/* Define if you have the lstat function. */
|
||||||
#undef HAVE_LSTAT
|
#undef HAVE_LSTAT
|
||||||
|
|
||||||
/* Define if you have nice. */
|
/* Define if you have the nice function. */
|
||||||
#undef HAVE_NICE
|
#undef HAVE_NICE
|
||||||
|
|
||||||
/* Define if you have readlink. */
|
/* Define if you have the readlink function. */
|
||||||
#undef HAVE_READLINK
|
#undef HAVE_READLINK
|
||||||
|
|
||||||
/* Define if you have select. */
|
/* Define if you have the select function. */
|
||||||
#undef HAVE_SELECT
|
#undef HAVE_SELECT
|
||||||
|
|
||||||
/* Define if you have setgid. */
|
/* Define if you have the setgid function. */
|
||||||
#undef HAVE_SETGID
|
#undef HAVE_SETGID
|
||||||
|
|
||||||
/* Define if you have setpgid. */
|
/* Define if you have the setpgid function. */
|
||||||
#undef HAVE_SETPGID
|
#undef HAVE_SETPGID
|
||||||
|
|
||||||
/* Define if you have setpgrp. */
|
/* Define if you have the setpgrp function. */
|
||||||
#undef HAVE_SETPGRP
|
#undef HAVE_SETPGRP
|
||||||
|
|
||||||
/* Define if you have setsid. */
|
/* Define if you have the setsid function. */
|
||||||
#undef HAVE_SETSID
|
#undef HAVE_SETSID
|
||||||
|
|
||||||
/* Define if you have setuid. */
|
/* Define if you have the setuid function. */
|
||||||
#undef HAVE_SETUID
|
#undef HAVE_SETUID
|
||||||
|
|
||||||
/* Define if you have setvbuf. */
|
/* Define if you have the setvbuf function. */
|
||||||
#undef HAVE_SETVBUF
|
#undef HAVE_SETVBUF
|
||||||
|
|
||||||
/* Define if you have siginterrupt. */
|
/* Define if you have the siginterrupt function. */
|
||||||
#undef HAVE_SIGINTERRUPT
|
#undef HAVE_SIGINTERRUPT
|
||||||
|
|
||||||
/* Define if you have symlink. */
|
/* Define if you have the symlink function. */
|
||||||
#undef HAVE_SYMLINK
|
#undef HAVE_SYMLINK
|
||||||
|
|
||||||
/* Define if you have tcgetpgrp. */
|
/* Define if you have the tcgetpgrp function. */
|
||||||
#undef HAVE_TCGETPGRP
|
#undef HAVE_TCGETPGRP
|
||||||
|
|
||||||
/* Define if you have tcsetpgrp. */
|
/* Define if you have the tcsetpgrp function. */
|
||||||
#undef HAVE_TCSETPGRP
|
#undef HAVE_TCSETPGRP
|
||||||
|
|
||||||
/* Define if you have times. */
|
/* Define if you have the times function. */
|
||||||
#undef HAVE_TIMES
|
#undef HAVE_TIMES
|
||||||
|
|
||||||
/* Define if you have uname. */
|
/* Define if you have the truncate function. */
|
||||||
|
#undef HAVE_TRUNCATE
|
||||||
|
|
||||||
|
/* Define if you have the uname function. */
|
||||||
#undef HAVE_UNAME
|
#undef HAVE_UNAME
|
||||||
|
|
||||||
/* Define if you have waitpid. */
|
/* Define if you have the waitpid function. */
|
||||||
#undef HAVE_WAITPID
|
#undef HAVE_WAITPID
|
||||||
|
|
||||||
|
/* Define if you have the <dirent.h> header file. */
|
||||||
|
#undef HAVE_DIRENT_H
|
||||||
|
|
||||||
/* Define if you have the <dlfcn.h> header file. */
|
/* Define if you have the <dlfcn.h> header file. */
|
||||||
#undef HAVE_DLFCN_H
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
@ -233,6 +233,9 @@
|
||||||
/* Define if you have the <limits.h> header file. */
|
/* Define if you have the <limits.h> header file. */
|
||||||
#undef HAVE_LIMITS_H
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
|
/* Define if you have the <ndir.h> header file. */
|
||||||
|
#undef HAVE_NDIR_H
|
||||||
|
|
||||||
/* Define if you have the <signal.h> header file. */
|
/* Define if you have the <signal.h> header file. */
|
||||||
#undef HAVE_SIGNAL_H
|
#undef HAVE_SIGNAL_H
|
||||||
|
|
||||||
|
@ -248,6 +251,12 @@
|
||||||
/* Define if you have the <sys/audioio.h> header file. */
|
/* Define if you have the <sys/audioio.h> header file. */
|
||||||
#undef HAVE_SYS_AUDIOIO_H
|
#undef HAVE_SYS_AUDIOIO_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/dir.h> header file. */
|
||||||
|
#undef HAVE_SYS_DIR_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ndir.h> header file. */
|
||||||
|
#undef HAVE_SYS_NDIR_H
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
/* Define if you have the <sys/param.h> header file. */
|
||||||
#undef HAVE_SYS_PARAM_H
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
|
@ -278,32 +287,11 @@
|
||||||
/* Define if you have the dl library (-ldl). */
|
/* Define if you have the dl library (-ldl). */
|
||||||
#undef HAVE_LIBDL
|
#undef HAVE_LIBDL
|
||||||
|
|
||||||
/* Define if you have the inet library (-linet). */
|
/* Define if you have the dld library (-ldld). */
|
||||||
#undef HAVE_LIBINET
|
#undef HAVE_LIBDLD
|
||||||
|
|
||||||
/* Define if you have the mpc library (-lmpc). */
|
/* Define if you have the ieee library (-lieee). */
|
||||||
#undef HAVE_LIBMPC
|
#undef HAVE_LIBIEEE
|
||||||
|
|
||||||
/* Define if you have the nsl library (-lnsl). */
|
|
||||||
#undef HAVE_LIBNSL
|
|
||||||
|
|
||||||
/* Define if you have the pthreads library (-lpthreads). */
|
|
||||||
#undef HAVE_LIBPTHREADS
|
|
||||||
|
|
||||||
/* Define if you have the seq library (-lseq). */
|
|
||||||
#undef HAVE_LIBSEQ
|
|
||||||
|
|
||||||
/* Define if you have the socket library (-lsocket). */
|
|
||||||
#undef HAVE_LIBSOCKET
|
|
||||||
|
|
||||||
/* Define if you have the sun library (-lsun). */
|
/* Define if you have the sun library (-lsun). */
|
||||||
#undef HAVE_LIBSUN
|
#undef HAVE_LIBSUN
|
||||||
|
|
||||||
/* Define if you have the termcap library (-ltermcap). */
|
|
||||||
#undef HAVE_LIBTERMCAP
|
|
||||||
|
|
||||||
/* Define if you have the termlib library (-ltermlib). */
|
|
||||||
#undef HAVE_LIBTERMLIB
|
|
||||||
|
|
||||||
/* Define if you have the thread library (-lthread). */
|
|
||||||
#undef HAVE_LIBTHREAD
|
|
||||||
|
|
180
configure.in
180
configure.in
|
@ -1,16 +1,12 @@
|
||||||
dnl Process this file with autoconf 1.8 or later to make a configure script.
|
dnl Process this file with autoconf 2.0 or later to make a configure script.
|
||||||
AC_REVISION($Revision$)dnl
|
AC_REVISION($Revision$)
|
||||||
AC_PREREQ(1.8)dnl
|
AC_PREREQ(2.0)
|
||||||
AC_INIT(Include/object.h)
|
AC_INIT(Include/object.h)
|
||||||
AC_CONFIG_HEADER(config.h)dnl
|
AC_CONFIG_HEADER(config.h)
|
||||||
# Don't suppress compiler output when --verbose is specified
|
|
||||||
test -n "$verbose" &&
|
|
||||||
ac_compile=`echo "$ac_compile" | sed "s|>/dev/null 2>&1||"`
|
|
||||||
AC_VERBOSE(setting ac_compile to '$ac_compile')
|
|
||||||
|
|
||||||
# checks for alternative programs
|
# checks for alternative programs
|
||||||
AC_CHECKING(for --with(out)-gcc)
|
AC_CHECKING(for --with(out)-gcc)
|
||||||
AC_WITH(gcc, [
|
AC_ARG_WITH(gcc, [--without-gcc never use gcc], [
|
||||||
case $withval in
|
case $withval in
|
||||||
no) withval=cc;;
|
no) withval=cc;;
|
||||||
yes) withval=gcc;;
|
yes) withval=gcc;;
|
||||||
|
@ -19,7 +15,7 @@ AC_WITH(gcc, [
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
AC_SUBST(AR)
|
AC_SUBST(AR)
|
||||||
AC_PROGRAMS_CHECK(AR, ar aal, ar)
|
AC_CHECK_PROGS(AR, ar aal, ar)
|
||||||
AC_SUBST(INSTALL)
|
AC_SUBST(INSTALL)
|
||||||
# Install just never works :-(
|
# Install just never works :-(
|
||||||
if test -z "$INSTALL"
|
if test -z "$INSTALL"
|
||||||
|
@ -35,42 +31,41 @@ fi
|
||||||
AC_AIX
|
AC_AIX
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
AC_MINIX
|
AC_MINIX
|
||||||
dnl DYNIX test runs compile so must be last
|
|
||||||
AC_DYNIX_SEQ
|
|
||||||
AC_CHECKING(for NeXT)
|
AC_CHECKING(for NeXT)
|
||||||
AC_TEST_PROGRAM([
|
AC_TRY_RUN([
|
||||||
#ifdef _NEXT_SOURCE
|
#ifdef _NEXT_SOURCE
|
||||||
main() { exit(0); }
|
main() { exit(0); }
|
||||||
#endif
|
#endif
|
||||||
], AC_DEFINE(_POSIX_SOURCE))
|
], AC_DEFINE(_POSIX_SOURCE))
|
||||||
|
|
||||||
# checks for header files
|
# checks for header files
|
||||||
AC_STDC_HEADERS
|
AC_HEADER_STDC
|
||||||
AC_HAVE_HEADERS(dlfcn.h fcntl.h limits.h signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h sys/audioio.h sys/param.h sys/select.h sys/time.h sys/times.h sys/un.h sys/utsname.h)
|
AC_CHECK_HEADERS(dlfcn.h fcntl.h limits.h signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h sys/audioio.h sys/param.h sys/select.h sys/time.h sys/times.h sys/un.h sys/utsname.h)
|
||||||
AC_DIR_HEADER
|
AC_HEADER_DIRENT
|
||||||
|
|
||||||
# checks for typedefs
|
# checks for typedefs
|
||||||
AC_CHECKING(for clock_t in time.h)
|
AC_CHECKING(for clock_t in time.h)
|
||||||
AC_HEADER_EGREP(clock_t, time.h, , AC_DEFINE(clock_t, long))
|
AC_EGREP_HEADER(clock_t, time.h, , AC_DEFINE(clock_t, long))
|
||||||
AC_MODE_T
|
AC_TYPE_MODE_T
|
||||||
AC_OFF_T
|
AC_TYPE_OFF_T
|
||||||
AC_PID_T
|
AC_TYPE_PID_T
|
||||||
AC_RETSIGTYPE
|
AC_TYPE_SIGNAL
|
||||||
AC_SIZE_T
|
AC_TYPE_SIZE_T
|
||||||
AC_UID_T
|
AC_TYPE_UID_T
|
||||||
|
|
||||||
# Set name for machine-dependent library files
|
# Set name for machine-dependent library files
|
||||||
AC_SUBST(MACHDEP)
|
AC_SUBST(MACHDEP)
|
||||||
|
AC_MSG_CHECKING(MACHDEP)
|
||||||
if test -z "$MACHDEP"
|
if test -z "$MACHDEP"
|
||||||
then
|
then
|
||||||
ac_system=`uname -s | tr '[[A-Z]]' '[[a-z]]'`
|
ac_sys_system=`uname -s | tr -d ' ' | tr '[[A-Z]]' '[[a-z]]'`
|
||||||
ac_release=`uname -r | sed 's/\..*//'`
|
ac_sys_release=`uname -r | tr -d ' ' | sed 's/\..*//'`
|
||||||
MACHDEP="$ac_system$ac_release"
|
MACHDEP="$ac_sys_system$ac_sys_release"
|
||||||
case MACHDEP in
|
case MACHDEP in
|
||||||
'') MACHDEP=unknown;;
|
'') MACHDEP=unknown;;
|
||||||
esac
|
esac
|
||||||
AC_VERBOSE(setting MACHDEP to '$MACHDEP')
|
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_RESULT($MACHDEP)
|
||||||
|
|
||||||
# Set info about shared libraries.
|
# Set info about shared libraries.
|
||||||
# XXX This should try things out instead of testing uname!
|
# XXX This should try things out instead of testing uname!
|
||||||
|
@ -78,68 +73,69 @@ AC_SUBST(SO)
|
||||||
AC_SUBST(LDSHARED)
|
AC_SUBST(LDSHARED)
|
||||||
AC_SUBST(CCSHARED)
|
AC_SUBST(CCSHARED)
|
||||||
AC_SUBST(LINKFORSHARED)
|
AC_SUBST(LINKFORSHARED)
|
||||||
ac_system=`uname -s`
|
ac_sys_system=`uname -s`
|
||||||
ac_release=`uname -r`
|
ac_sys_release=`uname -r`
|
||||||
# SO is the extension of shared libraries `(including the dot!)
|
# SO is the extension of shared libraries `(including the dot!)
|
||||||
# -- usually .so, .sl on HP-UX
|
# -- usually .so, .sl on HP-UX
|
||||||
|
AC_MSG_CHECKING(SO)
|
||||||
if test -z "$SO"
|
if test -z "$SO"
|
||||||
then
|
then
|
||||||
case $ac_system in
|
case $ac_sys_system in
|
||||||
hp*|HP*) SO=.sl;;
|
hp*|HP*) SO=.sl;;
|
||||||
*) SO=.so;;
|
*) SO=.so;;
|
||||||
esac
|
esac
|
||||||
AC_VERBOSE(setting SO to '$SO')
|
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_RESULT($SO)
|
||||||
# LDSHARED is the ld *command* used to create shared library
|
# LDSHARED is the ld *command* used to create shared library
|
||||||
# -- "ld" on SunOS 4.x.x, "ld -G" on SunOS 5.x, "ld -shared" on IRIX 5
|
# -- "ld" on SunOS 4.x.x, "ld -G" on SunOS 5.x, "ld -shared" on IRIX 5
|
||||||
|
AC_MSG_CHECKING(LDSHARED)
|
||||||
if test -z "$LDSHARED"
|
if test -z "$LDSHARED"
|
||||||
then
|
then
|
||||||
case $ac_system/$ac_release in
|
case $ac_sys_system/$ac_sys_release in
|
||||||
IRIX*) LDSHARED="ld -shared";;
|
IRIX*) LDSHARED="ld -shared";;
|
||||||
SunOS/4*) LDSHARED="ld";;
|
SunOS/4*) LDSHARED="ld";;
|
||||||
SunOS/5*) LDSHARED="ld -G";;
|
SunOS/5*) LDSHARED="ld -G";;
|
||||||
hp*|HP*) LDSHARED="ld -b";;
|
hp*|HP*) LDSHARED="ld -b";;
|
||||||
*) LDSHARED="ld";;
|
*) LDSHARED="ld";;
|
||||||
esac
|
esac
|
||||||
AC_VERBOSE(setting LDSHARED= to '$LDSHARED')
|
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_RESULT($LDSHARED)
|
||||||
# CCSHARED are the C *flags* used to create objects to go into a shared
|
# CCSHARED are the C *flags* used to create objects to go into a shared
|
||||||
# library -- this is only needed for HP-UX
|
# library -- this is only needed for HP-UX
|
||||||
|
AC_MSG_CHECKING(CCSHARED)
|
||||||
if test -z "$CCSHARED"
|
if test -z "$CCSHARED"
|
||||||
then
|
then
|
||||||
case $ac_system in
|
case $ac_sys_system in
|
||||||
hp*|HP*) CCSHARED="+z";;
|
hp*|HP*) CCSHARED="+z";;
|
||||||
esac
|
esac
|
||||||
AC_VERBOSE(setting CCSHARED= to '$CCSHARED')
|
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_RESULT($CCSHARED)
|
||||||
# LINKFORSHARED are the flags passed to the $(CC) command that links
|
# LINKFORSHARED are the flags passed to the $(CC) command that links
|
||||||
# the python executable -- this is only needed for HP-UX
|
# the python executable -- this is only needed for HP-UX
|
||||||
|
AC_MSG_CHECKING(LINKFORSHARED)
|
||||||
if test -z "$LINKFORSHARED"
|
if test -z "$LINKFORSHARED"
|
||||||
then
|
then
|
||||||
case $ac_system in
|
case $ac_sys_system in
|
||||||
hp*|HP*) LINKFORSHARED="-Wl,-E";;
|
hp*|HP*) LINKFORSHARED="-Wl,-E";;
|
||||||
esac
|
esac
|
||||||
AC_VERBOSE(setting LINKFORSHARED to '$LINKFORSHARED')
|
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_RESULT($LINKFORSHARED)
|
||||||
|
|
||||||
# checks for libraries
|
# checks for libraries
|
||||||
AC_HAVE_LIBRARY(dl) # Dynamic linking for SunOS/Solaris (and SYSV?)
|
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
|
||||||
AC_HAVE_LIBRARY(dld) # Dynamic linking for HP-UX
|
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
|
||||||
|
AC_CHECK_LIB(sun, getpwnam) # NIS (== YP) interface for IRIX 4
|
||||||
AC_CHECKING(for --with-svr4)
|
AC_CHECK_LIB(socket, socket, [LIBS=-lsocket -linet -lnsl], [], [-linet -lnsl])
|
||||||
AC_WITH(svr4, [
|
|
||||||
AC_HAVE_LIBRARY(socket)
|
|
||||||
AC_HAVE_LIBRARY(inet)
|
|
||||||
AC_HAVE_LIBRARY(nsl)
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_CHECKING(for --with-readline)
|
AC_CHECKING(for --with-readline)
|
||||||
AC_WITH(readline, [AC_DEFINE(WITH_READLINE)
|
AC_ARG_WITH(readline, [--with-readline=DIRECTORY GNU readline], [
|
||||||
|
AC_DEFINE(WITH_READLINE)
|
||||||
if test ! -d "$withval"
|
if test ! -d "$withval"
|
||||||
then AC_ERROR(proper usage is --with-readline=DIRECTORY)
|
then AC_ERROR(proper usage is --with-readline=DIRECTORY)
|
||||||
fi
|
fi
|
||||||
termcap=
|
termcap=
|
||||||
AC_HAVE_LIBRARY(termcap, [termcap=termcap], [AC_HAVE_LIBRARY(termlib, [termcap=termlib])])
|
AC_CHECK_LIB(termcap, tgetent, [termcap=termcap], [
|
||||||
|
AC_CHECK_LIB(termlib, tgetent, [termcap=termlib])])
|
||||||
if test ! -z "$termcap"
|
if test ! -z "$termcap"
|
||||||
then LIBS="$LIBS $withval/libreadline.a"
|
then LIBS="$LIBS $withval/libreadline.a"
|
||||||
# Avoid possible conflict between shared libraries termcap and gl
|
# Avoid possible conflict between shared libraries termcap and gl
|
||||||
|
@ -152,18 +148,18 @@ else AC_ERROR(no working termcap/termlib, do not use --with-readline)
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
AC_CHECKING(for --with-thread)
|
AC_CHECKING(for --with-thread)
|
||||||
AC_WITH(thread, [
|
AC_ARG_WITH(thread, [--with-thread[=DIRECTORY] make interpreter thread-safe], [
|
||||||
if test -d "$withval"
|
if test -d "$withval"
|
||||||
then LIBS="$LIBS -L$withval"
|
then LIBS="$LIBS -L$withval"
|
||||||
fi
|
fi
|
||||||
AC_HAVE_LIBRARY(pthreads, [AC_DEFINE(WITH_THREAD)
|
AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
|
||||||
AC_DEFINE(_POSIX_THREADS)
|
AC_DEFINE(_POSIX_THREADS)
|
||||||
LIBS="$LIBS -lpthreads"
|
LIBS="$LIBS -lpthreads"
|
||||||
LIBOBJS="$LIBOBJS thread.o"])
|
LIBOBJS="$LIBOBJS thread.o"])
|
||||||
AC_HAVE_LIBRARY(mpc, [AC_DEFINE(WITH_THREAD)
|
AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
|
||||||
LIBS="$LIBS -lmpc"
|
LIBS="$LIBS -lmpc"
|
||||||
LIBOBJS="$LIBOBJS thread.o"])
|
LIBOBJS="$LIBOBJS thread.o"])
|
||||||
AC_HAVE_LIBRARY(thread, [AC_DEFINE(WITH_THREAD)
|
AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
|
||||||
LIBS="$LIBS -lthread"
|
LIBS="$LIBS -lthread"
|
||||||
LIBOBJS="$LIBOBJS thread.o"])
|
LIBOBJS="$LIBOBJS thread.o"])
|
||||||
])
|
])
|
||||||
|
@ -173,7 +169,8 @@ AC_SUBST(DLINCLDIR)
|
||||||
DLINCLDIR=/
|
DLINCLDIR=/
|
||||||
|
|
||||||
AC_CHECKING(for --with-sgi-dl)
|
AC_CHECKING(for --with-sgi-dl)
|
||||||
AC_WITH(sgi-dl, [AC_DEFINE(WITH_SGI_DL)
|
AC_ARG_WITH(sgi-dl, [--with-sgi-dl=DIRECTORY IRIX 4 dynamic linking], [
|
||||||
|
AC_DEFINE(WITH_SGI_DL)
|
||||||
dldir=$withval
|
dldir=$withval
|
||||||
if test -d "$dldir"
|
if test -d "$dldir"
|
||||||
then LIBS="$LIBS -L$dldir"
|
then LIBS="$LIBS -L$dldir"
|
||||||
|
@ -183,7 +180,8 @@ DLINCLDIR=${dldir}
|
||||||
LIBS="$LIBS -ldl -lmld"])
|
LIBS="$LIBS -ldl -lmld"])
|
||||||
|
|
||||||
AC_CHECKING(for --with-dl-dld)
|
AC_CHECKING(for --with-dl-dld)
|
||||||
AC_WITH(dl-dld, [AC_DEFINE(WITH_DL_DLD)
|
AC_ARG_WITH(dl-dld, [--with-dl-dld=DL_DIR,DLD_DIR GNU dynamic linking], [
|
||||||
|
AC_DEFINE(WITH_DL_DLD)
|
||||||
dldir=`echo "$withval" | sed 's/,.*//'`
|
dldir=`echo "$withval" | sed 's/,.*//'`
|
||||||
dlddir=`echo "$withval" | sed 's/.*,//'`
|
dlddir=`echo "$withval" | sed 's/.*,//'`
|
||||||
if test -d "$dldir" -a -d "$dlddir"
|
if test -d "$dldir" -a -d "$dlddir"
|
||||||
|
@ -194,17 +192,29 @@ DLINCLDIR=${dldir}
|
||||||
LIBS="$LIBS -ldl -ldld"])
|
LIBS="$LIBS -ldl -ldld"])
|
||||||
|
|
||||||
# checks for library functions
|
# checks for library functions
|
||||||
AC_HAVE_FUNCS(chown clock dlopen ftime gettimeofday getpeername getpgrp getpid getwd link lstat nice readlink select setgid setuid setsid setpgid setpgrp setvbuf siginterrupt symlink tcgetpgrp tcsetpgrp times uname waitpid)
|
AC_CHECK_FUNCS(chown clock dlopen ftime ftruncate gethostname_r gettimeofday getpeername getpgrp getpid getwd link lstat nice readlink select setgid setuid setsid setpgid setpgrp setvbuf siginterrupt symlink tcgetpgrp tcsetpgrp times truncate uname waitpid)
|
||||||
AC_REPLACE_FUNCS(dup2 getcwd strerror memmove)
|
AC_REPLACE_FUNCS(dup2 getcwd strerror memmove)
|
||||||
AC_FUNC_CHECK(getpgrp, AC_COMPILE_CHECK([argument to getpgrp], [#include <unistd.h>], [getpgrp(0);], AC_DEFINE(GETPGRP_HAVE_ARG)))
|
AC_CHECK_FUNC(getpgrp, AC_TRY_COMPILE([#include <unistd.h>], [getpgrp(0);], AC_DEFINE(GETPGRP_HAVE_ARG)))
|
||||||
AC_FUNC_CHECK(setpgrp, AC_COMPILE_CHECK([arguments to setpgrp], [#include <unistd.h>], [setpgrp(0,0);], AC_DEFINE(SETPGRP_HAVE_ARG)))
|
AC_CHECK_FUNC(setpgrp, AC_TRY_COMPILE([#include <unistd.h>], [setpgrp(0,0);], AC_DEFINE(SETPGRP_HAVE_ARG)))
|
||||||
|
AC_CHECK_FUNC(gettimeofday, AC_TRY_COMPILE([#include <sys/time.h>], [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,AC_DEFINE(GETTIMEOFDAY_NO_TZ)))
|
||||||
|
|
||||||
# checks for structures
|
# checks for structures
|
||||||
AC_TIME_WITH_SYS_TIME
|
AC_HEADER_TIME
|
||||||
AC_STRUCT_TM
|
AC_STRUCT_TM
|
||||||
AC_TIMEZONE
|
AC_STRUCT_TIMEZONE
|
||||||
AC_COMPILE_CHECK([whether we have altzone], [#include <time.h>], [return altzone;], AC_DEFINE(HAVE_ALTZONE))
|
|
||||||
AC_COMPILE_CHECK([whether sys/select.h and sys/time.h may both be included], [
|
AC_MSG_CHECKING(for time.h that defines altzone)
|
||||||
|
AC_CACHE_VAL(ac_cv_header_time_altzone,
|
||||||
|
[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
|
||||||
|
ac_cv_header_time_altzone=yes,
|
||||||
|
ac_cv_header_time_altzone=no)])
|
||||||
|
AC_MSG_RESULT($ac_cv_header_time_altzone)
|
||||||
|
if test $ac_cv_header_time_altzone = yes; then
|
||||||
|
AC_DEFINE(HAVE_ALTZONE)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CHECKING(whether sys/select.h and sys/time.h may both be included)
|
||||||
|
AC_TRY_COMPILE([
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
@ -212,32 +222,34 @@ AC_COMPILE_CHECK([whether sys/select.h and sys/time.h may both be included], [
|
||||||
|
|
||||||
# checks for compiler characteristics
|
# checks for compiler characteristics
|
||||||
|
|
||||||
AC_CHAR_UNSIGNED
|
AC_C_CHAR_UNSIGNED
|
||||||
|
|
||||||
AC_CONST
|
AC_C_CONST
|
||||||
|
|
||||||
AC_COMPILE_CHECK([lack of working volatile],[],[volatile int x; x = 0;],,AC_DEFINE(volatile,))
|
AC_CHECKING(for working volatile)
|
||||||
|
AC_TRY_COMPILE([],[volatile int x; x = 0;],,AC_DEFINE(volatile, []))
|
||||||
|
|
||||||
AC_COMPILE_CHECK([lack of working signed char], [], [signed char c;],,AC_DEFINE(signed, []))
|
AC_CHECKING(for working signed char)
|
||||||
|
AC_TRY_COMPILE([], [signed char c;],,AC_DEFINE(signed, []))
|
||||||
|
|
||||||
AC_CHECKING(for prototypes)
|
AC_CHECKING(for prototypes)
|
||||||
AC_TEST_PROGRAM([
|
AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
|
||||||
int foo(int x) { return 0; }
|
AC_DEFINE(HAVE_PROTOTYPES) have_prototypes=yes)
|
||||||
int main() { return foo(10); }
|
|
||||||
], AC_DEFINE(HAVE_PROTOTYPES) have_prototypes=1)
|
|
||||||
|
|
||||||
AC_CHECKING(for variable length prototypes and stdarg.h)
|
AC_CHECKING(for variable length prototypes and stdarg.h)
|
||||||
AC_TEST_PROGRAM([
|
AC_TRY_COMPILE([
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
int foo(int x, ...) { return 0; }
|
int foo(int x, ...) { return 0; }
|
||||||
int main() { return foo(10, 11, 12); }
|
], [return foo(10, 11, 12);],
|
||||||
], AC_DEFINE(HAVE_STDARG_PROTOTYPES) have_prototypes=1)
|
AC_DEFINE(HAVE_STDARG_PROTOTYPES))
|
||||||
|
|
||||||
if test "$have_prototypes"; then
|
if test "$have_prototypes"; then
|
||||||
AC_COMPILE_CHECK(["bad exec* prototypes"], [#include <unistd.h>], [char **t;execve("@",t,t);], , AC_DEFINE(BAD_EXEC_PROTOTYPES))
|
AC_CHECKING(for bad exec* prototypes)
|
||||||
|
AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], , AC_DEFINE(BAD_EXEC_PROTOTYPES))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECKING(for bad static forward)
|
AC_CHECKING(for bad static forward)
|
||||||
AC_TEST_PROGRAM([
|
AC_TRY_RUN([
|
||||||
struct s { int a; int b; };
|
struct s { int a; int b; };
|
||||||
static struct s foo;
|
static struct s foo;
|
||||||
int foobar() {
|
int foobar() {
|
||||||
|
@ -251,24 +263,34 @@ main() {
|
||||||
}
|
}
|
||||||
], , AC_DEFINE(BAD_STATIC_FORWARD))
|
], , AC_DEFINE(BAD_STATIC_FORWARD))
|
||||||
|
|
||||||
|
AC_CHECKING(whether va_list is an array)
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#ifdef HAVE_STDARG_PROTOTYPES
|
||||||
|
#include <stdarg.h>
|
||||||
|
#else
|
||||||
|
#include <varargs.h>
|
||||||
|
#endif
|
||||||
|
], [va_list list1, list2; list1 = list2;], , AC_DEFINE(VA_LIST_IS_ARRAY))
|
||||||
|
|
||||||
# checks for system services
|
# checks for system services
|
||||||
# (none yet)
|
# (none yet)
|
||||||
|
|
||||||
# other checks for UNIX variants
|
# Linux requires this for correct f.p. operations
|
||||||
AC_IRIX_SUN
|
AC_CHECK_LIB(ieee, __fpu_control)
|
||||||
AC_XENIX_DIR
|
|
||||||
|
|
||||||
# check for --with-libm=...
|
# check for --with-libm=...
|
||||||
AC_SUBST(LIBM)
|
AC_SUBST(LIBM)
|
||||||
LIBM=-lm
|
LIBM=-lm
|
||||||
AC_WITH(libm, [if test "$withval" != yes
|
AC_ARG_WITH(libm, [--with-libm=STRING math library], [
|
||||||
|
if test "$withval" != yes
|
||||||
then LIBM=$withval
|
then LIBM=$withval
|
||||||
else AC_ERROR(proper usage is --with-libm=STRING)
|
else AC_ERROR(proper usage is --with-libm=STRING)
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
# check for --with-libc=...
|
# check for --with-libc=...
|
||||||
AC_SUBST(LIBC)
|
AC_SUBST(LIBC)
|
||||||
AC_WITH(libc, [if test "$withval" != yes
|
AC_ARG_WITH(libc, [--with-libc=STRING C library], [
|
||||||
|
if test "$withval" != yes
|
||||||
then LIBC=$withval
|
then LIBC=$withval
|
||||||
else AC_ERROR(proper usage is --with-libc=STRING)
|
else AC_ERROR(proper usage is --with-libc=STRING)
|
||||||
fi])
|
fi])
|
||||||
|
|
Loading…
Reference in New Issue