Some Python Packaging Questions

Jeff Pitman symbiont at berlios.de
Mon Aug 23 15:32:51 UTC 2004


On Monday 23 August 2004 21:56, Ville Skyttä wrote:
> On Mon, 2004-08-23 at 11:34, Jeff Pitman wrote:
> > AND we have to worry about .so(64bit) for lib suffixes. I guess I
> > should get a 64-bit system to check this out, but from a
> > surface-level it seems to be an awful hack.  I guess the suffixes
> > are needed for pkgs that require /usr/lib/ or something...
>
> I'm not sure I understand the above.  But see below.

I've seen this floating around a few spec files:
%ifarch ia64
%define depsuffix ()(64bit)
%else
%define depsuffix %{nil}
%endif

Then, later:
libwhatever.so%{depsuffix}

But, maybe this is a very old way to do it and they now pile it on 
inside of /usr/lib64/.  I have no idea.  Someone needs to donate 64-bit 
systems to both of us!! ;)

> > > As of now, one could fairly safely use
> > > /usr/lib*/python%{pyver}/... everywhere, but I guess one
> > > beautiful day arch-independent Python extensions will be
> > > installed in /usr/share/python%{pyver}/...  And as noted above,
> > > one can redefine %__python to build for a custom Python
> > > installation in which case we can't assume much at all.
> >
> > Why would this be even useful?  Segregation of compiled extensions
> > (.so) and pure-python (.py) files?
>
> Whatever the reasons, the decision has already been made.  

I would never aspire to change any decisions.  I am just trying to 
understand the policy a little bit better.

> AFAIK upstream Python distutils has differentiated between the two
> already for a long time, and it certainly does so nowadays.  

I would actually presume that the differentiation is rooted in autoconf 
and just carried over into distutils as a matter of reference.  The 
get_python_lib() code calculates what the prefix is by the following 
statement:

	prefix = plat_specific and EXEC_PREFIX or PREFIX

Running ./configure --help on any autoconf system, you see that:

Installation directories:
--prefix=PREFIX     install architecture-independent files in PREFIX
                          [/usr/local]
--exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

I have only been working the Unix scene for 7, 8 years and I've not seen 
much use of ./configure --exec-prefix.  Are we to presume that RPM 
proper should support this as a specific tag since autoconf has had 
this for a long time?  %{_exec_prefix} == %{_prefix}

> It seems to be 
> just a coincidence that the two point to the same location for 32-bit
> archs in Python packages distributed by Red Hat (and perhaps it's the
> default in upstream Python sources too, haven't checked, but
> nevertheless these locations are two different "entities").  There's
> no such coincidence with Python stuff from Red Hat for 64-bit archs
> AFAIK (this info is from reading the patches RH applies to the Python
> package for 64-bit archs, I don't have such a box either).

Why?  Is it because 64-bit can simultaneously run 32-bit libraries and 
64-bit libraries at the same time and they're concerned over name 
clashes?  Do they segregate 32-bit and 64-bit libs into different dirs?  
Maybe some programs can only have half their libs in 32-bit and the 
other half in 64-bit because of compilation issues.

It just seems all a waste of time, from a ignorant persons point of 
view.  You've really perked my interest ... now I have to get my paws 
on a 64-bit box.  I've got to see why anyone would care to make such 
seemingly anal retentive distinctions and 
why /usr/lib64/python2.3/site-packages 
or /usr/lib/python2.3/site-packages are somehow different entities.

I've not seen anyone use --exec-prefix, even in the Rawhide python.spec. 
So, not sure how get_python_lib() != get_python_lib(1) would ever occur 
in a standard distribution.

> >   sys.path would have to be modified anyway
> > and certainly the user really doesn't care.
>
> No, the user should not care and nobody has to modify anything to
> take this into account, things must Just Work.  The locations where
> distutils installs extensions by default need to be in the default
> load paths of that Python, otherwise I'd argue it's a bug in the
> Python package.

*Sigh*  I've still have not put a finger on this.  It seems people like 
to throw Python "apps" in /usr/share/app_name and libraries 
into /usr/lib/python2.3/site-packages.  I'm not 
sure /usr/share/app_name really makes any sense all the time.  Trick 
question: is epydoc an app or is it a library?

thanks,
-- 
-jeff





More information about the fedora-devel-list mailing list