[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.