[XML-SIG] pyexpat.c does not compile with Python2.1a2

Michael McLay mclay@nist.gov
Tue, 6 Feb 2001 05:17:20 -0500

On Tuesday 06 February 2001 14:42, Martin v. Loewis wrote:
> > I suspect it may have failed to build because I did not have expat
> > installed.
> That is the likely cause, indeed. I was not saying that you did
> anything wrong, or that others did anything wrong - I just tried to
> explain the differences.

Is there a specific version of expat that needs to be installed?  I found no 
reference to where to get the library or which version was required.  I could 
go to  freshmeat to look it up, but what if I find a stall reference to an 
old version of the library?  There is an advantage in having a list of URLs 
required to build extensions would make it much safer and error free for end 
users when they are trying to build a fully populated module library.

> > There wasn't a warning to this effect and the instructions in the
> > README file did not say I need to have it installed. (The README
> > file still talks about editing the Module/Setup file so I think it
> > is probably out of date.)
> It is not an error for an extension module not being built - it just
> won't be there when you need it. The autoconfiguration can't know what
> modules you meant to be built; instead, it will build everything it
> can (sometimes, it errs at guessing what it can build, such case is a
> genuine bug).

I found out the pyexpat wasn't built when I tried executing a script that 
required the module.  Fortunately I was still running ground tests on my 
flight control system when the exception was raised:-)

> > The 2.1a2 download page does nor reference source code for expat.
> > It was included in the 2.0 download page,
> > http://www.python.org/2.0/.  It was not clear to me if the expat
> > source code was included in the 2.1a2 source distribution.
> It wasn't included, and likely will not be. Instead, you need to
> install it separately (as you did for 2.0 - the Python download pages
> just provided a copy that was known to work).

I understand why you don't bundle it with the distribution, I just was 
pointing out that the documentation didn't make it clear that I needed to 
have the expat library installed before PyXML would work.  

> > The 2.1 download page, http://www.python.org/2.1/, references the
> > 2.1a1 release on SourceForge.  (The returned page highlights the
> > older release instead of the 2.1a2 release.)  The
> > http://www.python.org/ftp/python/2.1/ download location is also
> > reference on the /2.1/ page.  None of the pages reference expat
> > source or mention the need to install expat.
> It is not needed, at least not more than Tkinter, zlib, BSDDB, OpenGL,
> Purify, readline, OpenSSL, or GDBM. Different manual installation will
> provide different sets of extension modules, but that is really no
> change. It will be the responsibility of packagers (i.e. Windows
> installation authors and Linux distributors) to make sure a common set
> of extension modules is always available. It is certainly recommended
> that pyexpat is in this common set.

The Linux distributions are not consistent about which modules are built.  I 
assume that the included modules are based on what they need internally and 
maybe what is easy to build.  If it were possible to easily identify which 
modules were not built and what was missing that prevented them from being 
built.  With some additional information it is more likely that the 
maintainers of Linux distributions would add imissing libraries so the buiild 
would be complete.   This would help Python to have a more uniform base of 
preinstalled modules.

That is just speculation on my part.  I would expect the report generation 
could be done automatically by the build process.  The build tool would need 
to track which modules were skipped and generate a report at the end of what 
was not built and why.  To enable the reporting a module maintainers would 
add a dictionary that mapped libraries to a list of URLs where the 
libraries can be retrieved.