Hi everyone,
I've been thinking a lot about the whole concept of Python2/3 packaging and
from my point of view it seems somehow confusing (renaming of python 3
binaries, split srpms/one srpm stuff and so on). I'm currently working with few
people on a "stack" (or software collection) concept, that we are testing with
Ruby and some of its libraries, as we are stepping to 1.9.3 from 1.8.7.
Basically, the stack allows you to have one runtime (say, python2) in normal
directory structure and then have a separate directory structure for another
runtime (python3 in this case) under /opt. So you don't need to rename all
paths and executables to python3-* and /usr/lib/python{2,3} or something like
that, but instead you use
$ python-binary
for the core system executable and you run
$ scl enable python3 "python-binary"
(where python3 is the name of the stack).
A great advantage of this concept is, that you have only one specfile, which
can be built both for the core system and for the stack and you don't need to
do any renaming or stuff like that. So when you decide that python 3 should be
in the core system, you just rebuild the packages in a different buildroot (I
think it can be achieved for both the split python2/3 SRPMS and SRPMS which
generate python2/3 RPMS from one source, but I'd have to think about a way how
to do it nice and systematically for both cases - but split SRPMS would be
better).
I'll try to explain how to get stack or core system RPM from one SRPM in
different buildroots:
- There is a library called scl-utils [1], that is aimed at providing the core
functionality for any stack. It has a runtime part, (the "scl enable ...")
which takes care of redefining systems paths, and a build part, which contains
redefinition of all macros that you normally use in the specfile (like
%{_libdir} etc.).
- If the build part of scl-utils is present in the buildroot that you are
building in, the resulting RPM has the relocated paths and installs under /opt.
If the build part of scl-utils is not in the buildroot, the resulting RPM gets
built normally for the core system.
(It is a little bit more complicated, but I think that everyone gets the point.)
If anyone of you is interested how this works with Ruby, there is a testing
prototype of a Ruby scl. You can read all the instructions how to install and
run the stack at [2] - but actually, this documentation is about an older
version, which was actually named stack, so here are the up-to-date commands:
- add the repofile from
http://bkabrda.fedorapeople.org/scl_1.8.7_01-27/scl_ruby_1.8.7.repo
- install the whole stack by "yum install scl_ruby_1.8.7" after adding the repo
- other commands from [2] apply, only substitute stack for scl (for example
'scl enable ruby_1.8.7 "irb"' will launch the ruby interactive console)
I think it would be great to consider this concept as an alternative (possibly
sometime even replacement) to the current python/python3 state. What do you
think, Pythonists? (And please don't kill me, I am just trying to suggest
something, not break the current concept or start a flame war :) )
Regards,
Bohuslav "Slavek" Kabrda.
[1] http://koji.fedoraproject.org/koji/packageinfo?packageID=12980
[2] http://mmaslano.livejournal.com/6963.html
_______________________________________________
python-devel mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/python-devel