[PyKDE] How to contribute to sip ?

Nigel Stewart ns at fluent.com
Tue Feb 28 16:18:31 GMT 2006


>> It could be argued that SIP is part of a broader toolchain 
> 
> What does this have to do with SIP again? I don't remember GCC not
> generating the object files if the source code is not changed.

     A compiler takes one input file and creates one output file.

     The granularity of SIP is different, it's taking multiple
     inputs (via %Import) and creating multiple outputs.  This
     design poses a "choke point".  I think being time-stamp
     friendly is a way for SIP to compensate for this.

> So, why can't you configure your build system so that it doesn't call SIP in
> the first place if the header file has not changed?

     Here is the scenario - the header foo.h is changed, triggering
     SIP to regenerate the bindings.  In most cases, the change to
     foo.h doesn't affect the code that SIP outputs.  Of the 250
     .cpp files generated by SIP, 10 depend on foo.h.  However,
     all 250 are rebuilt due to SIP changing the time stamp.

     That's a 25x slowdown that provides me more time to surf the
     PyKDE mailing list...  :-)

     Perhaps our situation is not typical, it doesn't affect our
     developers that _depend_ on our SIP bindings.  But it certainly
     affects development _upstream_ of the SIP bindings.

     Imagine someone hacking away at Qt and depending on PyQt
     based regression tests to know if they've broken anything...
     That's my day-to-day situation in a nutshell...

Nigel




More information about the PyQt mailing list