KDE 4 (was: [PyKDE] PyQt 4 on openSUSE)
Jim Bublitz
jbublitz at nwinternet.com
Sat Sep 9 21:39:37 BST 2006
On Saturday 09 September 2006 04:42, Simon Edwards wrote:
> On Friday 08 September 2006 23:42, David Boddie wrote:
> > On Friday 08 September 2006 21:11:25 +0200, Simon Edwards wrote:
> > > On Friday 08 September 2006 01:51, David Boddie wrote:
> > > > Reading through the SIP files for PyKDE, you find lots of information
> > > > about the way the KDE APIs have evolved over time. If the bindings
> > > > were too closely tied to some schedule where development was frozen
> > > > too early before a release,
> > >
> > > You mean "too late before release" I assume.
> >
> > Actually, I meant that if the bindings were frozen along with the rest of
> > the branch then there may not be enough time to stabilize them,
> > especially if the core developers are working on their APIs right up to
> > the freeze.
>
> I see what you mean. Updates to the bindings in PyKDE won't be able beat
> the general KDE feature freeze. The dependancies just don't work that way,
> as you know. PyKDE will have to be an exception to the general rule, and
> we'll just have to explain this to the KDE release team in advance. They'll
> understand. :) I still think there is enough time between FF and release to
> get things updated and tested.
>
> Things and features that *don't* depend on the APIs in kdelibs should still
> obey FF though.
>
> > > Or at the very least make a freezing APIs *strongly* recommended.
> >
> > As long there are no last minute API changes. Sometimes you just can't
> > recommend something strongly enough. :-/
>
> Last minute API changes shouldn't happen too often. It should be possible
> to monitor commits to kdelib header files.
Actually, it should be possible to generate PyKDE on the fly from the kdelibs
h files. That's what sip does now - it generates C++ on the fly when you
build PyQt or PyKDE. This would just move the process back one level.
I would be hesitant to claim presip is as reliable as sip, but if you remove
the need for versioning, it already works pretty well. Otherwise, someone can
develop a new tool, or modify an existing one to do the same thing.
The one thing you need to have is a lot of knowledge from the previous PyKDE
version - handwritten code, methods to ignore, docs, etc. That info is all in
the previous version's sip files, or could be encapsulated in metafiles in
XML or whatever. presip can be modified to output XML too - I've just never
bothered to do it and don't have a spec for it.
So basically, you would create a base PyKDE version that's complete. At build
time, you run a tool to generate new sip files from the latest kdelibs, and
combine with the info stored in the previous version (but don't do versioning
as such). After that, the build process is the same as it is now. The new sip
files (after any manual fixes) become the new "base" version. While you
always have a valid set of sip files (if you use those instead of some
metafile solution) that could be built, you always generate a new set to the
current kdelibs state each build.
You might have to modify the tool or project files after the code freeze in
some rare cases to satisfy last minute changes (if they require handwritten
code, or use syntax the tool doesn't know how to handle), but I'd consider
those to be "bug-fixes", and it seems to me the development process should be
able to allow those. There are some potential problems, but not many and none
too serious.
Longer term, any PyKDE version could be built the same way, so the idea of
distributing a tool and metafiles instead of sip files would seem like a
reasonable solution, especially since, in theory, I'd never have to write a
new version of PyKDE again :) And everybody would be up to date except for
some handwritten code (and a lot of that could be built into a tool also - it
was at one time, but I pulled it out).
There are some non-trivial details to work out, but I think it's worth
considering.
Jim
More information about the PyQt
mailing list