[PyKDE] Re: Using scripting languages for KDE4 main modules
Jim Bublitz
jbublitz at nwinternet.com
Thu Sep 28 20:40:33 BST 2006
On Thursday 28 September 2006 10:48, Simon Edwards wrote:
> Funny you should mention that. We on the PyKDE list have been discussing
> that a bit in the last few weeks. The idea of developing PyKDE[1] in KDE's
> SVN and releasing up-to-date bindings synchonised with KDE, was positively
> received. Some details needs to be worked out, but it looks like it is
> going to happen.
I'm not sure if that discussion came to any conclusion. Do you have some
process in mind, or do you want to adapt my process?
If the latter, I have presip pretty well cleaned up and the rest of the
process committed to scripts (version #s in various files and doc, generating
docs, computing svn adds, etc). I used KDE 3.5.3 to do the clean up and
generated 3.5.4 almost perfectly without any manual work (with one bug - an
error in a base sip file and one qualification - neither 3.5.3 or 3.5.4
required any new handwritten code).
In theory, it should be possible to write a shell script or Makefile to
regenerate PyKDE end-to-end any time kdelibs changes. The only hitch is
handwritten code (that gets flagged) and scalar types used as references or
pointers (eg int*, bool&). sip will generate code for the latter, but it may
not be correct without an annotation (/In/, /Out/ or /In, Out/) as h files
are ambiguous in that respect. presip used to flag those too, but doesn't at
the moment, so that would need to be fixed.
The other glitches are when sip syntax changes occur, although if you freeze
the sip version, that won't be a problem. Some other tools would probably be
useful - something to generate a report of flagged code (handwritten or &/*
stuff as in the previous paragraph), and a post-processor to strip all of the
versioning info if you want that (as for a specific KDE release it isn't
relevant).
Basically you need a clean set of base files (presip can do most of the work
creating those too) for each module (or a new module). Once you have that,
presip will pick up anything new - entire files, classes, methods, enums,
whatever. Of course it will also pick up new files, etc that you may not want
or sip might not handle (eg, an h file full of template classes), so some
manual intervention is necessary, but normally it shouldn't take more than
3-4 hours (including one compile on a slow machine) to generate a new version
- maybe a little more for major release (eg 4.1 to 4.2).
I'm more or less neutral about the approach you take - if you have some other
method you'd prefer, that's fine with me. Also, don't expect what I have to
be pretty - it's a hack and still has a lot of cruft from previous
incarnations, some of which is amazingly difficult to remove. But if you're
interested, I'll put something together and make it available, and do
maintenance on it as required.
Jim
More information about the PyQt
mailing list