FAQ Search Today's Posts Mark Forums Read

» Linux Archive
Home
New Posts
Search
FAQ


Go Back   Linux Archive > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 10-16-2008, 09:46 AM
Oliver Falk
 
Default compat-python, Zope...

James Antill wrote:

On Wed, 2008-10-15 at 09:08 +0200, Oliver Falk wrote:

James Antill wrote:
[ ... ]
I can think of a Python 2.4 package that lives within the Zope tree to
make it extra hard for others to use it by accident - but I don't think
that this would be neat, seen from a FHS point of view.

In some ways this might be doable, at least it has less pain points
than packaging it "properly".
I'm not sure what you mean here? Do you mean with properly an
/usr/%{_lib}/python%{major}.{minor}/ installation? Well, I'd like to
invite everybody to have a look at the livna packages. Those are fine
and don't hurt the main python...


% repoquery --repoid=livna --provides compat-python24-imaging
_imaging.so()(64bit)

_imagingft.so()(64bit)
_imagingmath.so()(64bit)
compat-python24-imaging = 1.1.6-1.lvn9
% repoquery --provides python-imaging
_imaging.so()(64bit)

_imagingft.so()(64bit)
_imagingmath.so()(64bit)
python-imaging = 1.1.6-9.fc9
% repoquery --repoid=livna --provides compat-python24-lxml
compat-python24-lxml = 2.0.5-1.lvn9

etree.so()(64bit)
objectify.so()(64bit)
pyclasslookup.so()(64bit)
% repoquery --provides python-lxml
etree.so()(64bit)
objectify.so()(64bit)
pyclasslookup.so()(64bit)
python-lxml = 2.0.8-1.fc9

...those are all "wrong", in that you can get cross python/python24
provides/requires.


Oh yes. I've not yet thought about this problem and it's my fault. It's
good this problem was brought up and now we can discuss about possible
solutions.



> and you need to

make sure that python-foo doesn't pull in compat-python24-bar (and vice
versa).

Hm. How should that happen? Especially with koji....


Well that's a big question, the simplest solution we've come up with is
"don't package python24" ...


"Don't package it" is *not a solution*! It's about don't worrying about
the problem and don't invest time on finding a solution!


> hence my text about that if everything was

kludged into Zope itself (and all the provides removed) it would be
better, in some ways.


Well. What if some additional module, like pil, psycopg is needed? You
want the Zope package maintainer to put it into the Zope package and
release a new build?


Let me do some time travel:
#bash compat-zope/F-10] make upload FILES=python-psycopg*gz
#bash compat-zope/F-10] vi compat-zope.spec
#bash compat-zope/F-10] cvs commit -m"* Update psycopg"
#bash compat-zope/F-10] koji build
... wait ...
... wait ...
#bash root] yum --enablerepo=testing update compat-zope
...
Total download size: 24 MB
Is this ok [y/N]:

Duh? I don't to see this happen. :-)

We should better find a way to work around the dependency problematic.
Eg. patching rpm (long term solution), packaging compat-python + modules
without AutoProv or prefixing the automatically generated deps with
_whatever_.


-of

--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 
Old 10-16-2008, 09:48 AM
Oliver Falk
 
Default compat-python, Zope...

Patrice Dumas wrote:

On Wed, Oct 15, 2008 at 09:45:05AM -0400, James Antill wrote:

_imaging.so()(64bit)
_imagingft.so()(64bit)
_imagingmath.so()(64bit)


These kind of provides are simply wrong (in my opinion). rpm provides
script should only get the sonames automatically. Other people disagree
because it is what the elf linker does. See also:

https://bugzilla.redhat.com/show_bug.cgi?id=224544


Wrong, well, not totally (yes, ld rules!), but in our case it's just a
pain point, where we need to find a solution...


-of

--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 
Old 10-16-2008, 10:07 AM
Oliver Falk
 
Default compat-python, Zope...

fyi. FESCo voted against compat-python:

> We discussed this in today's FESCo meeting, and voted against your
> proposal to include a compat-python24 in Fedora. We felt that nothing
> had changed since our original decision, and if anything the argument
> was even stronger for it's exclusion since it's been more than a year
> and a half and Zope/Plone is still dependent on python-2.4.
>
> If you would like to review the full discussion we had on this, you
> can find the irc log here:
> http://bpepple.fedorapeople.org/fesco/FESCo-2008-10-15.html

-of

--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 
Old 10-16-2008, 10:11 AM
Hans de Goede
 
Default compat-python, Zope...

Panu Matilainen wrote:

On Wed, 15 Oct 2008, Hans de Goede wrote:


James Antill wrote:

On Wed, 2008-10-15 at 09:08 +0200, Oliver Falk wrote:

James Antill wrote:
[ ... ]
I can think of a Python 2.4 package that lives within the Zope
tree to make it extra hard for others to use it by accident - but
I don't think that this would be neat, seen from a FHS point of view.

In some ways this might be doable, at least it has less pain points
than packaging it "properly".
I'm not sure what you mean here? Do you mean with properly an
/usr/%{_lib}/python%{major}.{minor}/ installation? Well, I'd like to
invite everybody to have a look at the livna packages. Those are
fine and don't hurt the main python...


% repoquery --repoid=livna --provides compat-python24-imaging
_imaging.so()(64bit)

_imagingft.so()(64bit)
_imagingmath.so()(64bit)
compat-python24-imaging = 1.1.6-1.lvn9
% repoquery --provides python-imaging _imaging.so()(64bit)
_imagingft.so()(64bit)
_imagingmath.so()(64bit)


Yes rpmbuild is very broken in that it generates provides for .so
files which are not under libdir, so plugins for applications / libs /
languages can have conflicting Provides, luckily nothing should ever
Require these plugins.


If something requires / can require them, how can they be "wrong"?


Its all about namespaces, normal libraries all share a common namespace, so all
sonames (or filenames when the lib lacks a soname) in the standard library
path, or in additional library paths added through /etc/ld.so.conf.d must be
unique as they share one namespace.


Plugins otoh which should be and usually are installed outside of the regular
library path, do not have to have a unique soname (or filename) and often
don't, basicly every applications which uses plugings has its own plugin
namespace usually under %{_libdir}/%{name}. Having these plugins have provides
like foo_plugin(soname) is fine having them provide just soname is wrong, as
these provides provide stuff in a *completely different namespace*



Not that I disagree


Glad you agree So if we agree that doing soname provides for things like
plugins is wrong as it polutes the library provide namespace with non library
provides. Lets start looking at a solution.


The above are silly and completely useless for all
I can tell. But how is rpmbuild going to know what's a real library and
what's not? %{_libdir} vs outside it is not going to work


I disagree, as your numbers and explanation below shows using a having
DT_SONAME or not check does not work. Only doing soname provides generation for
so files under /%{_lib} and %{_libdir} clearly is the right thing to do. Sure
some stuff will break, and I understand that you are afraid of that, but those
things are exceptions, lets first get the generic case right, which clearly is
to only do soname provides for files directly under /%{_lib} and %{_libdir} and
then start worrying about exceptions.


> as it'd cause

perfectly legal uses of /etc/ld.so.conf.d


/etc/ld.so.conf.d is special and most uses of it can be handled automatically
by rpmbuild. In most (all?) cases where /etc/ld.so.conf.d gets used the
libraries installed in the path listed in /etc/ld.so.conf.d/foo, are part of
the same (sub)package as /etc/ld.so.conf.d/foo, so we can patch (hack) the
rpmbuild dependency generator(s both intern and extern) to see if there are
files under /etc/ld.so.conf.d in the subpackage and if there are get the paths
from them and add those to the path to search for soname provides.


Thinking about this more, there might be exceptions here, so we may not even
want to do this hack, as we will need a mechanism for special cases anyway, so
I would like to suggest to solve all special cases like /etc/ld.so.conf.d using
the following:


1) Add a soname_provides_search_path %define, which defaults to:
"/%{_lib}:%{libdir}"
2) Allow spec files to redefine this (to add additional paths to search) and
make sure we use the specfile defined version if present when generating
Provides

This mechanism can be used to handle any special cases no matter how exotic,
while keeping rpmbuild all nice and clean.


We could the do a full install see what is under /etc/ld.so.conf.d and file
bugs against all packages putting files there to warn them that they should
start redefining soname_provides_search_path because rpmbuild will no longer
search the entire world for soname provides.


> and LD_LIBRARY_PATH (both of

which are runtime, not buildtime configuration items) to break.


Using LD_LIBRARY_PATH in packages is usually evil, and where it isn't the
user/developer apparently does not want the soname's in that dir to always be
part of the global library namespace, in which case the sonames in that dir
certainly do not belong in the global library Provides namespace.


Again this is al about namespaces (a concept which rpm Provides sorely lack,
but thats a different discussion).


The question to me is: is there a way to *realiably* detect dlopen()'ed
modules from real libraries? There are a number of possible hints that
can be looked at, such as having DT_SONAME or not but AFAICT, it's all
just guesswork. Since the elf linker doesn't require DT_SONAME for
shared libraries, we'd break the dependency resolution of valid uses if
we filtered those out from provides generation.


As there doesn't seem to be hard rules (feel free to prove me wrong)


There is one hard rule: libraries are to be installed in the default library
path searched by /lib[64]/ld-linux.so.2


Everything which does not do that (like qt3) is an ugly hack (as qt4 has
proven), an exception, and one should never optimize for the exceptions.


we
can detect at build-time, then heuristics + manual overrides is the best
we can get.

>
> One possibility is a build configuration flag that allows
switching off generation of provides for DSO's without DT_SONAME, flip
that on in redhat-rpm-config and rebuild what's necessary. That'd be
essentially a one-liner patch to rpm.


Just to get an idea of what that would "gain": On my F9 + selected bits
from rawhide system, the number of DSO's in /%{_lib}, %{_libdir} and
their subdirectories is 3385. Roughly one third of them don't have
DT_SONAME set. Looking at the remaining ~2000, there's a lot of
"unnecessary" stuff left still.
But then, libtool seems to be putting soname into things built with
-module which makes the DT_SONAME test kinda moot already.




The whole quote directly above indicates this is the wrong solution, as its a
half baked solution at best.


The proper solution is really easy we need to only generate soname provides for
files in the default library path, and add a mechanism (as proposed above) for
corner cases to modify this behaviour from the specfile.


Let me repeat: I understand that you are afraid of breaking things, but I don't
think it will be that bad. As always I'm willing to put my time where my mouth
is, so if we do this for F11 (and pretty please do) I'm more then willing to
help fixing up any fall out, hell you may asign any bugs you get filed about
this change to me and I'll handle them (anything to get this mess fixed up once
and for all).


Regards,

Hans

--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 
Old 10-16-2008, 10:59 AM
Kevin Kofler
 
Default compat-python, Zope...

Oliver Falk <oliver <at> linux-kernel.at> writes:
> but if they decide to upgrade their base OS, they have to install
> python + deps manually from tarball

Why are you intentionally ignoring RPM Fusion as an option? RPM Fusion even has
a section for RHEL, so it's quite likely that compat-zope for EL6 will also
show up there if it's not included in EL6 (and if not, nothing prevents you
from maintaining it there).

Kevin Kofler

--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 
Old 10-16-2008, 01:58 PM
Ignacio Vazquez-Abrams
 
Default compat-python, Zope...

On Thu, 2008-10-16 at 11:11 +0200, Hans de Goede wrote:
> Panu Matilainen wrote:
> > as it'd cause
> > perfectly legal uses of /etc/ld.so.conf.d
>
> /etc/ld.so.conf.d is special and most uses of it can be handled automatically
> by rpmbuild. In most (all?) cases where /etc/ld.so.conf.d gets used the
> libraries installed in the path listed in /etc/ld.so.conf.d/foo, are part of
> the same (sub)package as /etc/ld.so.conf.d/foo, so we can patch (hack) the
> rpmbuild dependency generator(s both intern and extern) to see if there are
> files under /etc/ld.so.conf.d in the subpackage and if there are get the paths
> from them and add those to the path to search for soname provides.

Or, you know, you *could* use this script I wrote years ago:

http://ivazquez.fedorapeople.org/files/parseldconfig

--
Ignacio Vazquez-Abrams <ivazqueznet@gmail.com>

PLEASE don't CC me; I'm already subscribed
--
fedora-devel-list mailing list
fedora-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/fedora-devel-list
 

Thread Tools




All times are GMT. The time now is 09:28 AM.

VBulletin, Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org