[Python-Dev] PEP 229 checked in

Thomas Wouters thomas@xs4all.net
Thu, 18 Jan 2001 10:53:14 +0100


On Wed, Jan 17, 2001 at 06:09:47PM -0500, Andrew Kuchling wrote:

> >On BSDI, readline sits in /usr/local or /usr/contrib, and isn't detected by
> >setup.py. Also, SSL support for the socket module was not enabled, though
> >OpenSSL is installed, in the default path.
> 
> Can you take a look at the detection code in setup.py and see what's
> going wrong.  I believe it should be found if OpenSSL is in
> /usr/local/, but /usr/contrib isn't checked currently.

Well, OpenSSL rests in the default location, which is
/usr/local/ssl/include/openssl. Haven't the time to look into it right now,
sorry.

> >The Tcl/Tk header files are stored in /usr/include/tcl<ver>/ on Debian,
> >which I personally like a lot, though it's probably a bitch to autodetect.
> >(I tried, using autoconf ;-P)

> There's code to handle Debian, though I have no way of testing it, and
> it worked on Neil's Debian box for some reason.  Search for
> debian_tcl_include in setup.py, and see if you can fix it.

Ah, yes. The problem in my case is that the *library* files are just in
/usr/lib, but the include files are not. I re-indented the code to pull the
debian-specific code out of the 'if prefix + os.sep + 'lib' not in
lib_dirs' block, and it works now. Haven't tested it on other code yet, but
I think it should work regardless.

> >distutils.errors.DistutilsPlatformError: invalid Python installation: unable to open /usr/lib/python2.1/config/Makefile (No such file or directory)

> Are you sure setup.py is up to date; do a 'cvs update setup.py' to check.  
> You might get a "setup.py is in the way; remove it' message if you 
> downloaded the first setup.py script manually.

D'oh, I guess not. I thought I did (I did on all other platforms :) but I
guess I didn't, 'cause it works now. Thanx.

> >without 'make clean' anymore. You get a lot of undefined-symbol warnings
> >(see below.) If you run 'make clean;make test' it also doesn't work, because
> >the build directory is not in the Python library path, and regrtest.py
> >requires (at least) the time module.

> Again, be sure the tree is up to date; I think this stems from
> attempting to compile the signal module as shared, which doesn't work.

This happened even with completely fresh, newly checked out trees, on all
but FreeBSD (three different trees: Debian woody, BSDI 4.0 and BSDI 4.1) so
I'm pretty sure that's not it.

It works now, though, so I guess the move from a dynamic signalmodule to a
static one does the trick ;) I got 'make test' working by applying the
following patch to Makefile{,.in}, and running 'make PYTHONPATH=.:<builddir>
test' (determining builddir by hand, for now.):

***************
*** 216,223 ****
  TESTPYTHON=   ./python$(EXE) -tt
  test:         all
                -rm -f $(srcdir)/Lib/test/*.py[co]
!               -PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
!               PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
  
  # Install everything
  install:      altinstall bininstall maninstall
--- 216,223 ----
  TESTPYTHON=   ./python$(EXE) -tt
  test:         all
                -rm -f $(srcdir)/Lib/test/*.py[co]
!               -PYTHONPATH=$(PYTHONPATH) $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
!               PYTHONPATH=$(PYTHONPATH) $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
  
  # Install everything
  install:      altinstall bininstall maninstall

And because of that, I also noticed something funny: BSDI calls itself
'BSD/OS <version>', so distutils actually makes a directory called 'lib.bsd'
and 'temp.bsd', with inside those a directory 'os-<version>-i386-2.1'. Is
that a distutils bug, a setup.py bug, or intentional behaviour of one of the
two ?


-- 
Thomas Wouters <thomas@xs4all.net>

Hi! I'm a .signature virus! copy me into your .signature file to help me spread!