Proposal: Python 3 in Fedora 13
"Evolutionary, not revolutionary": build a python 3 stack parallel-installable with the python 2 stack.
= High-level summary = - Python 3.0 was released almost 10 months ago, on 2008-12-03, and the latest release of the 3.* branch is 3.1.1, released on 2009-08-17. - Other distros have python 3, though not necessarily with anything "on top" resembling the full python 2 stack. - We have a working, valuable python 2 stack, which is used by critical system components (yum and anaconda): we must not destabilize the python 2 stack. - Python 3 is sufficiently different from python 2 that we need them to be independent software stacks. - I plan to spend a large chunk of my $DAYJOB over the next few months trying to build a useful Python 3 stack for Fedora 13, for some definition of "useful" (help will be appreciated!) - I don't want to add extra work for package maintainers: if you maintain an SRPM of a python 2 module that's working for you, you shouldn't feel obligated to own a separate SRPM for python 3. If someone has a need for the module on python 3, they can take on that work.
= Background = Python 3 is intended by upstream to be the future of Python, but we have many critical components that use Python 2. Python 2 and Python 3 are sufficiently different that we need both (try writing "print" in each). Python 2 will be around for a long time.
An interesting summary of Python 3 adoption can be seen here: http://renesd.blogspot.com/2009/09/py3kpython3-more-than-one-year-on-096.htm...
An earlier proposal about python 3 in Fedora is here: https://www.redhat.com/archives/fedora-devel-list/2008-May/msg02417.html
Going forward, I will have plenty of time to spend, as part of my dayjob, on Python in Fedora [1]
= Proposal = I want to get python 3 into Fedora, but I don't want to break yum or anaconda (or anything else, for that matter!)
How to do this? I propose that Fedora shall have separate, parallel-installable Python 2 and Python 3 stacks. I believe we can get things to the point where on a Fedora box you'd be able to install both stacks, and have some processes running python 2 code, and some running python 3, simultaneously.
Where I would draw the line is on having both python 2 and python 3 running within the same _process_: the two libraries share most of their symbol names, but with differing implementations, and the result of trying to dynamically link the two into the same address space would be highly unstable.
As an example, you'd be able to install both mod_python and mod_python3 rpms, but you wouldn't be able to (sanely) configure httpd to have both running simultaneously (I guess we should add a run-time warning for this case)
Scoping: - this work would target Fedora 13. I'd avoid pushing it into F12 until it's proven safe to do so - the proposal is for python 2 vs python 3. It could be extended to support having multiple minor-versions of Python as well, but that's a big extension of the work involved and not something I'm planning to work on myself.
= Details = We should split python 2 and python 3 at the source RPM level, where possible.
The easy case is when upstream release separate tarballs for the python 2 and python 3 versions of code. For example, given package "python-foo" in packaging CVS, there would be a separate "python3-foo" for the python 3 version. There would be no expectation that the two would need to upgrade in lock-step. (The two SRPMS could have different maintainers within Fedora: the packager of a python 2 module might not yet have any interest in python 3)
The more difficult case is when the python module is emitted as part of the build of a larger module. Some examples: - the build of "rpm" itself emits an "rpm-python" subpackage. - Another example is the "postgres" srpm, which emits a "postgresql-python" subpackage.
In a quick attempt at seeing other examples, on my laptop (F11), here are the packages installed that provide python modules where the package name differs from the srpm name: $ rpm -qf /usr/lib/python2.*/site-packages/* | grep -v "is not owned" | sort | uniq | xargs rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE} %{SOURCERPM}\n" | sed -e"s/.src.rpm//" | squeal -f table col0, col1 from - where col0 != col1 col0| col1| ----------------------------------------+----------------------------------+ at-spi-python-1.26.0-1.fc11| at-spi-1.26.0-1.fc11| audit-libs-python-1.7.13-1.fc11| audit-1.7.13-1.fc11| cracklib-python-2.8.13-4| cracklib-2.8.13-4| gamin-python-0.1.10-4.fc11| gamin-0.1.10-4.fc11| hplip-libs-3.9.8-12.fc11| hplip-3.9.8-12.fc11| libproxy-python-0.2.3-10.fc11| libproxy-0.2.3-10.fc11| libselinux-python-2.0.80-1.fc11| libselinux-2.0.80-1.fc11| libsemanage-python-2.0.31-4.fc11| libsemanage-2.0.31-4.fc11| libuser-python-0.56.9-3| libuser-0.56.9-3| libxml2-python-2.7.3-3.fc11| libxml2-2.7.3-3.fc11| newt-python-0.52.10-4.fc11| newt-0.52.10-4.fc11| plague-common-0.4.5.7-5.20090612cvs.fc11| plague-0.4.5.7-5.20090612cvs.fc11| policycoreutils-python-2.0.62-12.12.fc11| policycoreutils-2.0.62-12.12.fc11| python-magic-5.03-2.fc11| file-5.03-2.fc11| python-slip-dbus-0.1.15-3.fc11| python-slip-0.1.15-3.fc11| python-slip-gtk-0.1.15-3.fc11| python-slip-0.1.15-3.fc11| rpm-python-4.7.1-1.fc11| rpm-4.7.1-1.fc11| setroubleshoot-server-2.1.14-3.fc11| setroubleshoot-2.1.14-3.fc11| system-config-printer-libs-1.1.8-6.fc11|system-config-printer-1.1.8-6.fc11|
Such SRPMS have a: BuildRequires: python-devel which is a subpackage from the python build (2.6)
My plan here is that we should create a python3-devel subpackage as a subpackage of the python3 build, and have it parallel-installable with the python-devel package.
We could then %prep the rpm build for each of the above so that the python 3 support is built as a parallel component of the build, independently of the python 2 support e.g. by copying the python2 support into a separate dir, then applying a patch as necessary (and somehow wiring up the configuration/make so it builds both...) The caveat here is that I haven't tried actually doing this yet for any of these packages. Issues with this approach: - I don't yet know if autoconfiguration will work well with both -devel packages installed - It will probably involve actually doing the porting work for each package (yay, we get to be leaders!) - Whoever does this for a package needs to work closely with the upstream for that package
I'll have a go at doing this for rpm when I get back from vacation. Arguably the existing python 2 binding of rpm isn't great, but it's probably best to go for close compatibility between python 2 and python 3 rather than try to overhaul the bindings as part of the port to python 3: one thing at a time!
"Naming convention" proposal: How does this sound: - an rpm with a "python-" prefix means a python 2 rpm, of the "default" python 2 minor version (for Fedora this will be the most recent stable upstream minor release, for EPEL it will be the minor release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of the "default" python 3 minor version (for Fedora this will be the most recent stable upstream release)
(we could extend this to have specific minor-releases (e.g. use "python24-" for a python 2.4 stack, in case some brave soul wants to get zope/plone running. But may be better to try to fix the zope/2.6 incompatibility at that point (caveat: haven't looked at the details of the issue). I don't intend to work on such versions))
What about packages without a "python-" prefix? Proposal: If upstream has a naming convention for python2 vs python3, use it. Otherwise, add a "python3-" prefix to make things clear. I'm not sure about the details here. Examples?
There have been various discussions upstream about what to call the python 3 binary. My favorite quote on the subject is from Guido, http://mail.python.org/pipermail/python-3000/2008-March/012421.html :
During the next 3 years or so, installing Py3k as the default "python" will be a deed of utter irresponsibility and is likely to break your system in subtle ways (both OSX and Linux these days use Python for certain system tasks). If you *really* want to shoot yourself in the foot this way, go ahead and explicitly use "make altinstall bininstall" or link it yourself.
I propose that for Fedora we have "/usr/bin/python3" for the system/default version of python 3 and "/usr/bin/python" for the system/default version of python 2. Both would be symlinks to a binary with the minor-release embedded in the name ("/usr/bin/python3.1" and "/usr/bin/python/2.6").
As I understand things, this should make us broadly in agreement with upstream; see e.g.: http://mail.python.org/pipermail/python-dev/2009-April/088862.html http://mail.python.org/pipermail/python-dev/2009-April/088884.html
A rough plan for Fedora 13 might be: - get python3 packaged in a manner compatible with the above - (persuade /usr/lib/rpm/brp-python-bytecompile to use the correct python when building rpms containing .py files) - get rpm bindings working with python3 - get some useful components working e.g. a web stack: Django, TurboGears etc (though e.g. Django's py3k support is a long way off IIRC); ideas? - solidify packaging guidelines for python 2 vs python 3 once we've got some experience with the above and hopefully proven the techniques - look at porting major components over to python3 (but probably don't actually do this for F13; leave python 2 as the critical component, I suspect): - yum (rpm) - anaconda
However "no plan survives contact with the enemy", we'll see how things turn out in reality when trying to get a full integrated stack working.
Future work (F14?) could involve cutting over the major components, so that the base install would bring in "python3", and "python" would become optional. Obviously there's a _lot_ to be done before that can be done sanely.
= Progress so far = I've put together a somewhat-working python3 srpm, based on the python srpm (with lots of FIXMEs added...) It's not yet ready for a formal package review (I'm working through the various patches, and it's not yet fully installable in parallel with the python 2 stack), but you can see the specfile here: http://people.redhat.com/dmalcolm/python3/python3.spec and an SRPM here: http://people.redhat.com/dmalcolm/python3/python3-3.1.1-1.fc13.src.rpm
After I did this work, I saw that a couple of other people have written Python 3 srpms for Fedora: http://ivazquez.fedorapeople.org/packages/python3000/ and https://bugzilla.redhat.com/show_bug.cgi?id=526126 and there was this proposal for doing Python 3 in F10:
https://www.redhat.com/archives/fedora-devel-list/2008-May/msg02417.html similar to this one. Obviously I want to work with those people to come up with a working python 3 rpm in Fedora.
There's also the merge-review for python: https://bugzilla.redhat.com/show_bug.cgi?id=226342 ; many of the comments there would thus also apply to my srpm, given that I used the former as my starting point.
On a tangent: we currently have 2.6.2 in F12/rawhide. Upstream is preparing a 2.6.3 release, with many bugfixes. This seems to me like a candidate for F13. (the release notes for the 2.6.3 rc are long; I'd want it to have a _lot_ of testing before pushing it to F12))
Thoughts? Dave
[1] I'm being transferred at work, and will be able to spend a lot of time on Python within Fedora. Previously, my job involved keeping various internal RH systems working (with any Fedora work done afterhours or as a side project). Having said that, I'm about to go on vacation with no access to a computer for the period October 3rd-10th
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
josh
Once upon a time, Josh Boyer jwboyer@gmail.com said:
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
Yeah, we seem to have too much "churn" going with some things as it is during a release. What possible reason would there be to push a major new component into an existing release?
On Thu, 2009-10-01 at 13:07 -0500, Chris Adams wrote:
Once upon a time, Josh Boyer jwboyer@gmail.com said:
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
Yeah, we seem to have too much "churn" going with some things as it is during a release. What possible reason would there be to push a major new component into an existing release?
Agreed.
This part of my post was clumsy. I think what I meant to say was that I'd want to veto anyone wanting to push it into F12, that they'd have a significant burden of proof of safety before such an action could occur. I don't have any interest in such a backport.
Sorry
Dave
On Oct 1, 2009, at 10:59, Josh Boyer jwboyer@gmail.com wrote:
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
josh
Ditto. This is not something you would push as an update to a released product.
-- Jes
On 10/01/2009 11:11 AM, Jesse Keating wrote:
On Oct 1, 2009, at 10:59, Josh Boyer jwboyer@gmail.com wrote:
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
josh
Ditto. This is not something you would push as an update to a released product.
I disagree. The proposal is really treating python3 as a new language. We can and do push such things into a released Fedora.
-Toshio
On Thu, 2009-10-01 at 11:23 -0700, Toshio Kuratomi wrote:
On 10/01/2009 11:11 AM, Jesse Keating wrote:
On Oct 1, 2009, at 10:59, Josh Boyer jwboyer@gmail.com wrote:
On Thu, Oct 01, 2009 at 01:15:09PM -0400, David Malcolm wrote:
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
I'm going to think on the overall proposal more, but I very very very much wish this sentence said "I will not push this into F12 at all."
josh
Ditto. This is not something you would push as an update to a released product.
I disagree. The proposal is really treating python3 as a new language. We can and do push such things into a released Fedora.
Treating it as a new language is the intent, and I'll make every effort to keep them separated.
In theory there wouldn't be any problems. However if I screw up and somehow cross the streams, I run the risk of breaking _lots_ of things; yum is the most obvious victim in the critical path. Obviously I don't want to do that.
I'm not volunteering to put it into F12. I think that anyone wanting to push it into F12 needs to sign up for a lot of testing (brainstorming some testcases: can you still compile and build external modules with both 2 and 3 -devel subpackages installed? does every configure script pick up the correct version? etc)
Dave
On Thu, 1 Oct 2009, David Malcolm wrote:
Treating it as a new language is the intent, and I'll make every effort to keep them separated.
In theory there wouldn't be any problems. However if I screw up and somehow cross the streams, I run the risk of breaking _lots_ of things; yum is the most obvious victim in the critical path. Obviously I don't want to do that.
I'm not volunteering to put it into F12. I think that anyone wanting to push it into F12 needs to sign up for a lot of testing (brainstorming some testcases: can you still compile and build external modules with both 2 and 3 -devel subpackages installed? does every configure script pick up the correct version? etc)
Now- perhaps a repo with your package in it that someone could consume on f12 would be a straightforward goal...
if you need extra space on fedorapeople.org for this - let me know.
-sv
On Thu, Oct 1, 2009 at 2:39 PM, David Malcolm dmalcolm@redhat.com wrote:
I'm not volunteering to put it into F12. I think that anyone wanting to push it into F12 needs to sign up for a lot of testing (brainstorming some testcases: can you still compile and build external modules with both 2 and 3 -devel subpackages installed? does every configure script pick up the correct version? etc)
Which brings up a useful point in that the critical path has two components; the closure of their Requires, and the closure of their BuildRequires.
However - this still seems like low risk to me because the builders only build with what's specified in BuildRequires, so you'd have to have quite a contortion to get python3-devel in there.
On Thu, 2009-10-01 at 23:21 +0200, Kevin Kofler wrote:
Jesse Keating wrote:
Ditto. This is not something you would push as an update to a released product.
I don't see why a parallel-installable python3/python3000 would cause any problems as an update.
Kevin Kofler
The potential to disrupt the regular python, which is critically important to Fedora, makes me very wary of doing something like this on a release that is supposed to be and stay stable.
Once upon a time, Kevin Kofler kevin.kofler@chello.at said:
Jesse Keating wrote:
Ditto. This is not something you would push as an update to a released product.
I don't see why a parallel-installable python3/python3000 would cause any problems as an update.
Are you able to guarantee that it will in no way interfere with python2 (including in the build root)?
Major changes like that during a release are what get Fedora considered a "rolling beta" quality distribution.
On 10/01/2009 10:15 AM, David Malcolm wrote:
Proposal: Python 3 in Fedora 13
"Evolutionary, not revolutionary": build a python 3 stack parallel-installable with the python 2 stack.
First: Overall +1.
Note: liberally snipped, throughout.
= Proposal =
Where I would draw the line is on having both python 2 and python 3 running within the same _process_: the two libraries share most of their symbol names, but with differing implementations, and the result of trying to dynamically link the two into the same address space would be highly unstable.
As an example, you'd be able to install both mod_python and mod_python3 rpms, but you wouldn't be able to (sanely) configure httpd to have both running simultaneously (I guess we should add a run-time warning for this case)
I don't see any way around this atm but it is something to think about possibilities more. For instance, if we get TurboGears2 ported to python3 while TurboGears1 is still on python2 people will need to run two apache servers (one with python2-mod_wsgi and one with python3-mod_wsgi).
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
There's value in pushing the interpreter to F12 as it opens up porting of code from python2 to python3 to more people. I don't think porting applications to python3 in F12 is of great benefit. Pushing libraries back is somewhere in-between.
Of course, at some point this is a matter of maintainers doing what's interesting to them.
- the proposal is for python 2 vs python 3. It could be extended to
support having multiple minor-versions of Python as well, but that's a big extension of the work involved and not something I'm planning to work on myself.
Unless someone actively wants to work on this right now, I'd like to keep that a separate issue as it just makes matters more confusing.
The more difficult case is when the python module is emitted as part of the build of a larger module. Some examples:
- the build of "rpm" itself emits an "rpm-python" subpackage.
- Another example is the "postgres" srpm, which emits a
"postgresql-python" subpackage.
There's another case where this exists: upstream plans to do automated translation using a tool like 2to3. This has seemed a bit of a fragile strategy to me but it is recommended by upstream python.
"Naming convention" proposal: How does this sound:
- an rpm with a "python-" prefix means a python 2 rpm, of the
"default" python 2 minor version (for Fedora this will be the most recent stable upstream minor release, for EPEL it will be the minor release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of the
"default" python 3 minor version (for Fedora this will be the most recent stable upstream release)
What about packages without a "python-" prefix? Proposal: If upstream has a naming convention for python2 vs python3, use it. Otherwise, add a "python3-" prefix to make things clear. I'm not sure about the details here. Examples?
+1 to the basics. There are a lot of details to work out:
This seems fine even though it's a bit redundant: python3-pygtk2 and python3-pygpgme.
What to do with things that have python in their suffix: gstreamer-python => gstreamer-python3? Or python3-gstreamer? Or python3-gstreamer-python? Most of these are subpackages of existing packages.
A cornercase is the gnome-python2 package. These are python bindings to gnome2. gnome-python2 is the upstream name. For python3, do we want python3-gnome-python2, python3-gnome2, python3-gnome-python2 ?
A rough plan for Fedora 13 might be:
- get python3 packaged in a manner compatible with the above
- (persuade /usr/lib/rpm/brp-python-bytecompile to use the correct
python when building rpms containing .py files)
- get rpm bindings working with python3
- get some useful components working e.g. a web stack: Django,
TurboGears etc (though e.g. Django's py3k support is a long way off IIRC); ideas?
I'm going to go out on a limb and say this is a bigger goal than we'll be able to achieve for F13 but I like it :-)
- solidify packaging guidelines for python 2 vs python 3 once we've
got some experience with the above and hopefully proven the techniques
Speaking from FPC experience, +1 to this.
- look at porting major components over to python3 (but probably don't
actually do this for F13; leave python 2 as the critical component, I suspect): - yum (rpm) - anaconda
However "no plan survives contact with the enemy", we'll see how things turn out in reality when trying to get a full integrated stack working.
Future work (F14?) could involve cutting over the major components, so that the base install would bring in "python3", and "python" would become optional. Obviously there's a _lot_ to be done before that can be done sanely.
I'm going to say we'll be beyond F14 when this happens. F14 is roughly a year away and there's a ton of work to do. We may need to have more packagers *and* coders (python and C) to both modify code and maintain the new library packages and bindings. Porting the programs over isn't
= Progress so far = I've put together a somewhat-working python3 srpm, based on the python srpm (with lots of FIXMEs added...) It's not yet ready for a formal package review (I'm working through the various patches, and it's not yet fully installable in parallel with the python 2 stack), but you can see the specfile here: http://people.redhat.com/dmalcolm/python3/python3.spec and an SRPM here: http://people.redhat.com/dmalcolm/python3/python3-3.1.1-1.fc13.src.rpm
After I did this work, I saw that a couple of other people have written Python 3 srpms for Fedora: http://ivazquez.fedorapeople.org/packages/python3000/
I was just going to suggest you contact ivazquez :-) he's done a lot of work, both to get a python3 package working and on the update from python2.5 to python2.6.
-Toshio
On Thu, 2009-10-01 at 12:17 -0700, Toshio Kuratomi wrote:
On 10/01/2009 10:15 AM, David Malcolm wrote:
Proposal: Python 3 in Fedora 13
"Evolutionary, not revolutionary": build a python 3 stack parallel-installable with the python 2 stack.
First: Overall +1.
Note: liberally snipped, throughout.
[likewise snipped lots of stuff]
"Naming convention" proposal: How does this sound:
- an rpm with a "python-" prefix means a python 2 rpm, of the
"default" python 2 minor version (for Fedora this will be the most recent stable upstream minor release, for EPEL it will be the minor release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of the
"default" python 3 minor version (for Fedora this will be the most recent stable upstream release)
What about packages without a "python-" prefix? Proposal: If upstream has a naming convention for python2 vs python3, use it. Otherwise, add a "python3-" prefix to make things clear. I'm not sure about the details here. Examples?
+1 to the basics. There are a lot of details to work out:
[snip the details]
Thanks. Given that, I went ahead and created a Feature page for this: https://fedoraproject.org/wiki/Features/Python3F13
So far it's mostly just a restatement of my post, though I've started fleshing out some sections e.g. "how to test". I've assumed the naming convention from my post "python3" for the srpm, and for the symlink to the binary.
Feel free to dive in and edit. I marked myself as owner of the feature as I know I'm going to be able to devote a big chunk of time to this. Hope that's OK.
We now have 3 competing srpms for Python 3: (i) the one from ivazquez:
("python3000")
(ii) the one by Andrew McNabb: https://bugzilla.redhat.com/show_bug.cgi?id=526126 (named "python3")
(iii) and the one I did, also named "python3":
http://people.redhat.com/dmalcolm/python3/python3.spec and an SRPM here: http://people.redhat.com/dmalcolm/python3/python3-3.1.1-1.fc13.src.rpm
I was just going to suggest you contact ivazquez :-) he's done a lot of work, both to get a python3 package working and on the update from python2.5 to python2.6.
I'm assuming ivazquez is seeing these emails (I _think_ he said he'd seen it on IRC earlier today), and I added a link to my email to the review bug above so hopefully Andrew is seeing this.
I hope to have a look at the commonality/differences between the 3 efforts tomorrow. I think "python3" is a better name (if nothing else, it's shorter to type!).
I'd like it if the eventually python 3 specfile could resemble the python 2 specfile so that we can meaningfully look at the textual diffs between them (but it may be necessary to clean up the python specfile to achieve this! I'll try to have a look at the merge-review)
Thanks for the feedback; hope this all sounds sane Dave
On Thu, Oct 1, 2009 at 3:17 PM, Toshio Kuratomi a.badger@gmail.com wrote:
I don't see any way around this atm but it is something to think about possibilities more.
One way around this that I use at $DAYJOB (to minimize exposure of a PHP enabled webserver, thus minimizing attack surface, and also allowing apache to fail for a site without taking 15 unrelated sites with it), is to actually have two separate instances of httpd running, one with mod_python, and the other with mod_python3. Of course this requires manual intervention on the part of the local admin, but I would think that any admin that wanted to do this would be sufficiently competent to handle the intricacies of that choice.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
David Malcolm wrote:
"Naming convention" proposal: How does this sound:
- an rpm with a "python-" prefix means a python 2 rpm, of
the
"default" python 2 minor version (for Fedora this will be the
most
recent stable upstream minor release, for EPEL it will be the
minor
release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of
the
"default" python 3 minor version (for Fedora this will be the
most
recent stable upstream release)
(we could extend this to have specific minor-releases (e.g.
use
"python24-" for a python 2.4 stack, in case some brave soul
wants to get
zope/plone running. But may be better to try to fix the
zope/2.6
incompatibility at that point (caveat: haven't looked at the
details of
the issue). I don't intend to work on such versions))
What about packages without a "python-" prefix? Proposal: If
upstream
has a naming convention for python2 vs python3, use it.
Otherwise, add
a "python3-" prefix to make things clear. I'm not sure about
the
details here. Examples?
There have been various discussions upstream about what to
call the
python 3 binary. My favorite quote on the subject is from
Guido,
March/012421.html :
During the next 3 years or so, installing Py3k as the default
"python"
will be a deed of utter irresponsibility and is likely to
break your
system in subtle ways (both OSX and Linux these days use
Python for
certain system tasks). If you *really* want to shoot yourself
in the
foot this way, go ahead and explicitly use "make altinstall bininstall" or link it yourself.
I propose that for Fedora we have "/usr/bin/python3" for the system/default version of python 3 and "/usr/bin/python" for
the
system/default version of python 2. Both would be symlinks to
a binary
with the minor-release embedded in the name
("/usr/bin/python3.1" and
"/usr/bin/python/2.6").
As I understand things, this should make us broadly in
agreement with
upstream; see e.g.: http://mail.python.org/pipermail/python-dev/2009-
April/088862.html
April/088884.html
Could we do something similar to what qt and kdelibs packages have done? While qt3 was default, the 'qt' package points to qt3 and qt4 is an entirely separate package. When qt4 became default, qt3 was the one with the explicit version on it (and qt4 still exists, but the default 'qt' is qt4 now). This would mean that python2 packages grow 'Provides: python2-foo = %{version}-%{release}'. When python3 is the default, then have python point to python3 (and we can drop the Provides/Obsoletes for python3- prefixed packages later if wanted).
My thought process is that I would not like, after python3 is the default, to still have to put the explicit 3 on there because python is still python2. Just thinking ahead here.
- --Ben
On Thu, 2009-10-01 at 19:12 -0400, Ben Boeckel wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
David Malcolm wrote:
"Naming convention" proposal: How does this sound:
- an rpm with a "python-" prefix means a python 2 rpm, of
the
"default" python 2 minor version (for Fedora this will be the
most
recent stable upstream minor release, for EPEL it will be the
minor
release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of
the
"default" python 3 minor version (for Fedora this will be the
most
recent stable upstream release)
(we could extend this to have specific minor-releases (e.g.
use
"python24-" for a python 2.4 stack, in case some brave soul
wants to get
zope/plone running. But may be better to try to fix the
zope/2.6
incompatibility at that point (caveat: haven't looked at the
details of
the issue). I don't intend to work on such versions))
What about packages without a "python-" prefix? Proposal: If
upstream
has a naming convention for python2 vs python3, use it.
Otherwise, add
a "python3-" prefix to make things clear. I'm not sure about
the
details here. Examples?
There have been various discussions upstream about what to
call the
python 3 binary. My favorite quote on the subject is from
Guido,
March/012421.html :
During the next 3 years or so, installing Py3k as the default
"python"
will be a deed of utter irresponsibility and is likely to
break your
system in subtle ways (both OSX and Linux these days use
Python for
certain system tasks). If you *really* want to shoot yourself
in the
foot this way, go ahead and explicitly use "make altinstall bininstall" or link it yourself.
I propose that for Fedora we have "/usr/bin/python3" for the system/default version of python 3 and "/usr/bin/python" for
the
system/default version of python 2. Both would be symlinks to
a binary
with the minor-release embedded in the name
("/usr/bin/python3.1" and
"/usr/bin/python/2.6").
As I understand things, this should make us broadly in
agreement with
upstream; see e.g.: http://mail.python.org/pipermail/python-dev/2009-
April/088862.html
April/088884.html
Could we do something similar to what qt and kdelibs packages have done? While qt3 was default, the 'qt' package points to qt3 and qt4 is an entirely separate package. When qt4 became default, qt3 was the one with the explicit version on it (and qt4 still exists, but the default 'qt' is qt4 now). This would mean that python2 packages grow 'Provides: python2-foo = %{version}-%{release}'. When python3 is the default, then have python point to python3 (and we can drop the Provides/Obsoletes for python3- prefixed packages later if wanted).
My thought process is that I would not like, after python3 is the default, to still have to put the explicit 3 on there because python is still python2. Just thinking ahead here.
Thanks! If I'm correctly reading your mail, this approach is one I did think of, but I'm not fond of it.
I think that anyone dealing with Python is going to have to be thinking "is this python 2 or python 3" for some years to come, so having an explicit "python3-" prefix is probably not too painful.
What I think would be painful in your suggestion is the flag day where we'd change the meaning of "python-" in RPM names. Currently in Fedora and EPEL, "python-" implies the system-supplied minor release of python 2, be it in Fedora (2.6), or in EPEL (2.4). I worry that changing it to imply the system-supplied minor release of Python 3 (3.1, or 3.2/3.3? by that point) would be thoroughly confusing, since we'd have to update everything all at once. It wouldn't fly within EPEL, since the pre-existing Enterprise downstreams of Fedora aren't going to change (far too disruptive).
One middle ground might be to start using "python2-" explicitly for _new_ packages. That wouldn't break anything, but could easily be confusing as well. I think I prefer keeping things consistent.
Perhaps at some point we could cut over "/usr/bin/python" from being Python 2 to Python 3, but I refer you again to this quote from Guido: http://mail.python.org/pipermail/python-3000/2008-March/012421.html
(The other fun thing to do might be to package Unladen Swallow. Not at all sure what to call _that_ though!)
Dave
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
David Malcolm wrote:
On Thu, 2009-10-01 at 19:12 -0400, Ben Boeckel wrote:
Could we do something similar to what qt and kdelibs packages have done? While qt3 was default, the 'qt' package points to
qt3
and qt4 is an entirely separate package. When qt4 became default, qt3 was the one with the explicit version on it (and qt4 still exists, but the default 'qt' is qt4 now). This
would
mean that python2 packages grow 'Provides: python2-foo = %{version}-%{release}'. When python3 is the default, then
have
python point to python3 (and we can drop the
Provides/Obsoletes
for python3- prefixed packages later if wanted).
My thought process is that I would not like, after python3 is the default, to still have to put the explicit 3 on there because python is still python2. Just thinking ahead here.
Thanks! If I'm correctly reading your mail, this approach is
one I did
think of, but I'm not fond of it.
I think that anyone dealing with Python is going to have to be
thinking
"is this python 2 or python 3" for some years to come, so
having an
explicit "python3-" prefix is probably not too painful.
Package names wouldn't change for some time. Guido says 2--3 years, so python meaning python3 is some time away yet.
What I think would be painful in your suggestion is the flag
day where
we'd change the meaning of "python-" in RPM names. Currently
in Fedora
and EPEL, "python-" implies the system-supplied minor release
of python
2, be it in Fedora (2.6), or in EPEL (2.4). I worry that
changing it to
imply the system-supplied minor release of Python 3 (3.1, or
3.2/3.3? by
that point) would be thoroughly confusing, since we'd have to
update
everything all at once. It wouldn't fly within EPEL, since
the
pre-existing Enterprise downstreams of Fedora aren't going to
change
(far too disruptive).
This is where the 'Provides: python2-foo' kicks in. 'Requires:' in other packages would be updated to point to the python2-foo Provides for dependency solving. Over time, packages should be updated and if some deadline isn't met, start opening bugs, then finally using provenpackager when another deadline is hit. Even after the change, python3 packages would Provides/Obsoletes their old python3- names but would be moved to have the main package name be python-. Dependency chains should hold as long as the python2- and python3- Requires are used instead of the python- ones.
One middle ground might be to start using "python2-"
explicitly for
_new_ packages. That wouldn't break anything, but could
easily be
confusing as well. I think I prefer keeping things
consistent. This would still leave python2 to hold claim to the python- prefix and python3- left with the 3 in it. And I am for consistency here.
Perhaps at some point we could cut over "/usr/bin/python" from
being
Python 2 to Python 3, but I refer you again to this quote from
Guido:
March/012421.html Yes, and after that time, what? Always use python3? I'd like to start a transition route worked out now before we start down towards python3 so that things aren't rushed later.
(The other fun thing to do might be to package Unladen
Swallow. Not at
all sure what to call _that_ though!)
Hopefully these changes will get merged some day. A faster python is on my list of wants for python (as well as a debugger and a valgrind-like tool to see where loose references are being kept).
Dave
- --Ben
On Thu, Oct 1, 2009 at 19:15, David Malcolm dmalcolm@redhat.com wrote:
- We have a working, valuable python 2 stack, which is used by critical system components (yum and anaconda): we must not destabilize the python 2 stack.
Do we have an idea how far our stack is from working on python3 ?
And how far all the rest of python packages is?
I think at one point the decision to switch to python3 has do be done and some packages will be left behind (at least for a while). It is just a question when the switch will happen.
A parallel python3 stack now would mostly be usable for people using python3 for work and for these a separate repo would be enough, they probably will need this for RHEL/CentOS too.
Cheers, Christof
Le 02/10/2009 09:46, Christof Damian a écrit :
Do we have an idea how far our stack is from working on python3 ?
And how far all the rest of python packages is?
Not much, there are few external modules working though the list is slowly growing (pyqt4, openCV etc, libxml...). Here are some python3 modules hosted on PyPI http://pypi.python.org/pypi?:action=browse&c=533&show=all
I think at one point the decision to switch to python3 has do be done and some packages will be left behind (at least for a while). It is just a question when the switch will happen.
There should be no discussion of switching to python3 as default interpreter before the upcoming python 2.7. Python 2.7 is planned to the last offspring of python2.x and to further reduce the gap between python2 and python3.
A parallel python3 stack now would mostly be usable for people using python3 for work and for these a separate repo would be enough, they probably will need this for RHEL/CentOS too.
It won't. *BSD, fellow GNU/Linux distro like Debian, Mandriva, Ubuntu even macports are able to ship multiples python stacks and we (Fedora) are not ? Isn't Fedora supposed to lead ? Since Python is parallel installable by design, our main issues are to deal with packaging guidelines (naming, possible conflicts, etc ...) and considering porting our own python modules and/or fixing them to ease the port.
Though a separate repo would help to identify and fix possible conflicts, we should be able to provide a minimal python3 stack for F-13 (and maybe F-12 through updates) and eventually few blessed third-party modules. After all, others are already shipping it or will ship it in their next release. Besides, that would encourage python modules maintainers to port and test their modules on python3.
Besides, the longer we wait, the harder/longer the transition will be.
H.
On Fri, Oct 2, 2009 at 9:20 AM, Haïkel Guémar karlthered@gmail.com wrote:
*BSD, fellow GNU/Linux distro like Debian [...] are able to ship multiples python stacks
In Debian's case of course there are actually *two* separate Python systems ;)
http://wiki.debian.org/DebianPythonFAQ
I didn't understand either and was quite confused trying to debug one of my Python applications on Debian, but if they're useful we might consider adopting one of them rather than reinventing another parallel install system.
On 10/02/2009 08:48 AM, Colin Walters wrote:
On Fri, Oct 2, 2009 at 9:20 AM, Haïkel Guémar karlthered@gmail.com wrote:
*BSD, fellow GNU/Linux distro like Debian [...] are able to ship multiples python stacks
In Debian's case of course there are actually *two* separate Python systems ;)
http://wiki.debian.org/DebianPythonFAQ
I didn't understand either and was quite confused trying to debug one of my Python applications on Debian, but if they're useful we might consider adopting one of them rather than reinventing another parallel install system.
I brought up Debian's parallel install system before (I believe the last time python24 python2 python3 came up) and someone did a quick anaysis and said it wasn't a good idea.
Beyond that, I know that it won't work for managing python2 and python3. The languages have diverged too much. It can manage things like python24 python25 python26.... but that's not at issue right now.
-Toshio
On Fri, Oct 2, 2009 at 8:19 PM, Toshio Kuratomi a.badger@gmail.com wrote:
I brought up Debian's parallel install system before (I believe the last time python24 python2 python3 came up) and someone did a quick anaysis and said it wasn't a good idea.
Fair enough, just wanted to be sure it was at least looked at.
On Thu, 2009-10-01 at 13:15 -0400, David Malcolm wrote: [snip]
(replying to self, with some archive links)
An earlier proposal about python 3 in Fedora is here: https://www.redhat.com/archives/fedora-devel-list/2008-May/msg02417.html
...which was the "Let's make a plan for python3.0 in Fedora 10+" thread.
FWIW, looking back in the logs there was also: "python-2.6 and python-3.x" ( https://www.redhat.com/archives/fedora-devel-list/2009-April/msg00085.html )
and further back:
"The looming Python 3(000) monster" https://www.redhat.com/archives/fedora-devel-list/2008-December/msg00379.htm...
[snip]
On Thu, Oct 1, 2009 at 1:15 PM, David Malcolm dmalcolm@redhat.com wrote:
Proposal: Python 3 in Fedora 13
[snip]
- I don't want to add extra work for package maintainers: if you maintain an SRPM of a python 2 module that's working for you, you shouldn't feel obligated to own a separate SRPM for python 3. If someone has a need for the module on python 3, they can take on that work.
In the case of a Python binding produced as part of a larger package, though, how do we go about doing this?
Seems like the sensible way is to have the person wanting to do the work sign up as co-maintainer, and take charge of the Rawhide branch of the package.
Care must then be taken to make sure the F-12 and rawhide packages don't diverge much, apart from any Python 3 fixes required. Any fix that is 2.x-compatible should probably be merged to the F-12 build as well, and upstreamed.
The more difficult case is when the python module is emitted as part of the build of a larger module. Some examples: - the build of "rpm" itself emits an "rpm-python" subpackage. - Another example is the "postgres" srpm, which emits a "postgresql-python" subpackage.
We could then %prep the rpm build for each of the above so that the python 3 support is built as a parallel component of the build, independently of the python 2 support e.g. by copying the python2 support into a separate dir, then applying a patch as necessary (and somehow wiring up the configuration/make so it builds both...) The caveat here is that I haven't tried actually doing this yet for any of these packages. Issues with this approach: - I don't yet know if autoconfiguration will work well with both -devel packages installed - It will probably involve actually doing the porting work for each package (yay, we get to be leaders!) - Whoever does this for a package needs to work closely with the upstream for that package
Since yum is available during build, this would work (but is fugly): - build as normal - push out python2 files to buildroot - after everything else is done, yum remove python-devel && yum install python3-devel - build python3 modules
Regards,
On 10/02/2009 02:28 PM, Michel Alexandre Salim wrote:
Since yum is available during build, this would work (but is fugly):
- build as normal
- push out python2 files to buildroot
- after everything else is done, yum remove python-devel && yum
install python3-devel
- build python3 modules
There used to be locking issues with running from inside of the spec. Don't know if that still applies. We may also be denying network access to processes running inside of the buildroot. (AFAIK, the buildroot is constructed from outside. Then we chroot into it and run the build).
Even if those aren't problems, we're probably better off going with the traditional, build once, move build files to a new location, build a second time. install both sets of built files route.
(For instance, vim-minimal and vim-enhanced)
-Toshio
On Thu, Oct 1, 2009 at 7:15 PM, David Malcolm dmalcolm@redhat.com wrote:
Proposal: Python 3 in Fedora 13
"Evolutionary, not revolutionary": build a python 3 stack parallel-installable with the python 2 stack.
= High-level summary =
- Python 3.0 was released almost 10 months ago, on 2008-12-03, and the
latest release of the 3.* branch is 3.1.1, released on 2009-08-17.
- Other distros have python 3, though not necessarily with anything
"on top" resembling the full python 2 stack.
- We have a working, valuable python 2 stack, which is used by
critical system components (yum and anaconda): we must not destabilize the python 2 stack.
- Python 3 is sufficiently different from python 2 that we need them
to be independent software stacks.
- I plan to spend a large chunk of my $DAYJOB over the next few months
trying to build a useful Python 3 stack for Fedora 13, for some definition of "useful" (help will be appreciated!)
- I don't want to add extra work for package maintainers: if you
maintain an SRPM of a python 2 module that's working for you, you shouldn't feel obligated to own a separate SRPM for python 3. If someone has a need for the module on python 3, they can take on that work.
= Background = Python 3 is intended by upstream to be the future of Python, but we have many critical components that use Python 2. Python 2 and Python 3 are sufficiently different that we need both (try writing "print" in each). Python 2 will be around for a long time.
An interesting summary of Python 3 adoption can be seen here:
http://renesd.blogspot.com/2009/09/py3kpython3-more-than-one-year-on-096.htm...
An earlier proposal about python 3 in Fedora is here: https://www.redhat.com/archives/fedora-devel-list/2008-May/msg02417.html
Going forward, I will have plenty of time to spend, as part of my dayjob, on Python in Fedora [1]
= Proposal = I want to get python 3 into Fedora, but I don't want to break yum or anaconda (or anything else, for that matter!)
How to do this? I propose that Fedora shall have separate, parallel-installable Python 2 and Python 3 stacks. I believe we can get things to the point where on a Fedora box you'd be able to install both stacks, and have some processes running python 2 code, and some running python 3, simultaneously.
Where I would draw the line is on having both python 2 and python 3 running within the same _process_: the two libraries share most of their symbol names, but with differing implementations, and the result of trying to dynamically link the two into the same address space would be highly unstable.
As an example, you'd be able to install both mod_python and mod_python3 rpms, but you wouldn't be able to (sanely) configure httpd to have both running simultaneously (I guess we should add a run-time warning for this case)
Scoping:
- this work would target Fedora 13. I'd avoid pushing it into F12
until it's proven safe to do so
- the proposal is for python 2 vs python 3. It could be extended to
support having multiple minor-versions of Python as well, but that's a big extension of the work involved and not something I'm planning to work on myself.
= Details = We should split python 2 and python 3 at the source RPM level, where possible.
The easy case is when upstream release separate tarballs for the python 2 and python 3 versions of code. For example, given package "python-foo" in packaging CVS, there would be a separate "python3-foo" for the python 3 version. There would be no expectation that the two would need to upgrade in lock-step. (The two SRPMS could have different maintainers within Fedora: the packager of a python 2 module might not yet have any interest in python 3)
The more difficult case is when the python module is emitted as part of the build of a larger module. Some examples:
- the build of "rpm" itself emits an "rpm-python" subpackage.
- Another example is the "postgres" srpm, which emits a
"postgresql-python" subpackage.
In a quick attempt at seeing other examples, on my laptop (F11), here are the packages installed that provide python modules where the package name differs from the srpm name: $ rpm -qf /usr/lib/python2.*/site-packages/* | grep -v "is not owned" |
SIA, this is off of topic , i am sure. BUT, it is very strange that could be exists, perhaps, some file or directory not owned by someone. Isn't it ?
sort | uniq | xargs rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE} %{SOURCERPM}\n" | sed -e"s/.src.rpm//" | squeal -f table col0, col1 from
- where col0 != col1 col0| col1|
----------------------------------------+----------------------------------+ at-spi-python-1.26.0-1.fc11| at-spi-1.26.0-1.fc11| audit-libs-python-1.7.13-1.fc11| audit-1.7.13-1.fc11| cracklib-python-2.8.13-4| cracklib-2.8.13-4| gamin-python-0.1.10-4.fc11| gamin-0.1.10-4.fc11| hplip-libs-3.9.8-12.fc11| hplip-3.9.8-12.fc11| libproxy-python-0.2.3-10.fc11| libproxy-0.2.3-10.fc11| libselinux-python-2.0.80-1.fc11| libselinux-2.0.80-1.fc11| libsemanage-python-2.0.31-4.fc11| libsemanage-2.0.31-4.fc11| libuser-python-0.56.9-3| libuser-0.56.9-3| libxml2-python-2.7.3-3.fc11| libxml2-2.7.3-3.fc11| newt-python-0.52.10-4.fc11| newt-0.52.10-4.fc11| plague-common-0.4.5.7-5.20090612cvs.fc11| plague-0.4.5.7-5.20090612cvs.fc11| policycoreutils-python-2.0.62-12.12.fc11| policycoreutils-2.0.62-12.12.fc11| python-magic-5.03-2.fc11| file-5.03-2.fc11| python-slip-dbus-0.1.15-3.fc11| python-slip-0.1.15-3.fc11| python-slip-gtk-0.1.15-3.fc11| python-slip-0.1.15-3.fc11| rpm-python-4.7.1-1.fc11| rpm-4.7.1-1.fc11| setroubleshoot-server-2.1.14-3.fc11| setroubleshoot-2.1.14-3.fc11|
system-config-printer-libs-1.1.8-6.fc11|system-config-printer-1.1.8-6.fc11|
Such SRPMS have a: BuildRequires: python-devel which is a subpackage from the python build (2.6)
My plan here is that we should create a python3-devel subpackage as a subpackage of the python3 build, and have it parallel-installable with the python-devel package.
We could then %prep the rpm build for each of the above so that the python 3 support is built as a parallel component of the build, independently of the python 2 support e.g. by copying the python2 support into a separate dir, then applying a patch as necessary (and somehow wiring up the configuration/make so it builds both...) The caveat here is that I haven't tried actually doing this yet for any of these packages. Issues with this approach:
- I don't yet know if autoconfiguration will work well with both
-devel packages installed
- It will probably involve actually doing the porting work for each
package (yay, we get to be leaders!)
- Whoever does this for a package needs to work closely with the
upstream for that package
I'll have a go at doing this for rpm when I get back from vacation. Arguably the existing python 2 binding of rpm isn't great, but it's probably best to go for close compatibility between python 2 and python 3 rather than try to overhaul the bindings as part of the port to python 3: one thing at a time!
"Naming convention" proposal: How does this sound:
- an rpm with a "python-" prefix means a python 2 rpm, of the
"default" python 2 minor version (for Fedora this will be the most recent stable upstream minor release, for EPEL it will be the minor release of 2 that came with the distro, so 2.4 for EPEL5)
- an rpm with a "python3-" prefix means a python 3 rpm, of the
"default" python 3 minor version (for Fedora this will be the most recent stable upstream release)
(we could extend this to have specific minor-releases (e.g. use "python24-" for a python 2.4 stack, in case some brave soul wants to get zope/plone running. But may be better to try to fix the zope/2.6 incompatibility at that point (caveat: haven't looked at the details of the issue). I don't intend to work on such versions))
What about packages without a "python-" prefix? Proposal: If upstream has a naming convention for python2 vs python3, use it. Otherwise, add a "python3-" prefix to make things clear. I'm not sure about the details here. Examples?
There have been various discussions upstream about what to call the python 3 binary. My favorite quote on the subject is from Guido, http://mail.python.org/pipermail/python-3000/2008-March/012421.html :
During the next 3 years or so, installing Py3k as the default "python" will be a deed of utter irresponsibility and is likely to break your system in subtle ways (both OSX and Linux these days use Python for certain system tasks). If you *really* want to shoot yourself in the foot this way, go ahead and explicitly use "make altinstall bininstall" or link it yourself.
I propose that for Fedora we have "/usr/bin/python3" for the system/default version of python 3 and "/usr/bin/python" for the system/default version of python 2. Both would be symlinks to a binary with the minor-release embedded in the name ("/usr/bin/python3.1" and "/usr/bin/python/2.6").
As I understand things, this should make us broadly in agreement with upstream; see e.g.: http://mail.python.org/pipermail/python-dev/2009-April/088862.html http://mail.python.org/pipermail/python-dev/2009-April/088884.html
A rough plan for Fedora 13 might be:
- get python3 packaged in a manner compatible with the above
- (persuade /usr/lib/rpm/brp-python-bytecompile to use the correct
python when building rpms containing .py files)
- get rpm bindings working with python3
- get some useful components working e.g. a web stack: Django,
TurboGears etc (though e.g. Django's py3k support is a long way off IIRC); ideas?
- solidify packaging guidelines for python 2 vs python 3 once we've
got some experience with the above and hopefully proven the techniques
- look at porting major components over to python3 (but probably don't
actually do this for F13; leave python 2 as the critical component, I suspect):
- yum (rpm)
- anaconda
However "no plan survives contact with the enemy", we'll see how things turn out in reality when trying to get a full integrated stack working.
Future work (F14?) could involve cutting over the major components, so that the base install would bring in "python3", and "python" would become optional. Obviously there's a _lot_ to be done before that can be done sanely.
= Progress so far = I've put together a somewhat-working python3 srpm, based on the python srpm (with lots of FIXMEs added...) It's not yet ready for a formal package review (I'm working through the various patches, and it's not yet fully installable in parallel with the python 2 stack), but you can see the specfile here: http://people.redhat.com/dmalcolm/python3/python3.spec and an SRPM here: http://people.redhat.com/dmalcolm/python3/python3-3.1.1-1.fc13.src.rpm
After I did this work, I saw that a couple of other people have written Python 3 srpms for Fedora: http://ivazquez.fedorapeople.org/packages/python3000/ and https://bugzilla.redhat.com/show_bug.cgi?id=526126 and there was this proposal for doing Python 3 in F10:
https://www.redhat.com/archives/fedora-devel-list/2008-May/msg02417.html similar to this one. Obviously I want to work with those people to come up with a working python 3 rpm in Fedora.
There's also the merge-review for python: https://bugzilla.redhat.com/show_bug.cgi?id=226342 ; many of the comments there would thus also apply to my srpm, given that I used the former as my starting point.
On a tangent: we currently have 2.6.2 in F12/rawhide. Upstream is preparing a 2.6.3 release, with many bugfixes. This seems to me like a candidate for F13. (the release notes for the 2.6.3 rc are long; I'd want it to have a _lot_ of testing before pushing it to F12))
Thoughts? Dave
[1] I'm being transferred at work, and will be able to spend a lot of time on Python within Fedora. Previously, my job involved keeping various internal RH systems working (with any Fedora work done afterhours or as a side project). Having said that, I'm about to go on vacation with no access to a computer for the period October 3rd-10th
-- fedora-devel-list mailing list fedora-devel-list@redhat.com https://www.redhat.com/mailman/listinfo/fedora-devel-list
On Sat, 2009-10-03 at 22:09 +0200, yersinia wrote:
On Thu, Oct 1, 2009 at 7:15 PM, David Malcolm dmalcolm@redhat.com wrote:
[snip]
$ rpm -qf /usr/lib/python2.*/site-packages/* | grep -v "is not owned" |
SIA, this is off of topic , i am sure. BUT, it is very strange that could be exists, perhaps, some file or directory not owned by someone. Isn't it ?
FWIW I've done a lot of packaging experimentation on that system, and brute-force copying of .py files into place, so there's a fair amount of "cruft" lurking about on my system. That's why I had that in the shell pipeline I gave. (But yes, this is heading off-topic)
sort | uniq | xargs rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE} %{SOURCERPM}\n" | sed -e"s/.src.rpm//" | squeal -f table col0, col1 from - where col0 != col1