Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-15 Thread David Faure
On Thursday 14 June 2012 17:54:58 Michael Pyne wrote:
 Sorry to be unclear -- that's exactly what the Mageia patch accomplishes.
 They  only flip the exceptions bit for enable-final builds. If that sounds
 agreeable I intend on making that alteration and forwarding the patch to
 kde-packager.

Sounds good to me (obviously).

-- 
David Faure, fa...@kde.org, http://www.davidfaure.fr
Sponsored by Nokia to work on KDE, incl. KDE Frameworks 5

___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team


Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-14 Thread David Faure
On Tuesday 12 June 2012 20:42:28 Michael Pyne wrote:
 Hi all,
 
 Bug 301419 has been reported against kdelibs due to a build failure when
 KDE4_ENABLE_FINAL is used, introduced by some commits of mine to perform
 even more sanity checking in the KSharedDataCache.
 
 These commits use exceptions (as are already used in khtml) since they are
 actually the right tool in the context of where they are used, and because
 refactoring everything to use error codes everywhere (ECE) would have
 risked introducing more bugs.
 
 In order to minimize the changes to kdecore I only added the CMake magic to
 enable exceptions for only kshareddatacache.cpp. This doesn't work when
 KDE4_ENABLE_FINAL is used, as the project-wide CXXFLAGS are used in that
 case.
 
 The Mageia devs have a proposed patch [1] to enable exceptions for all of
 kdecore, which fixes the issue. Is it acceptable for me to go this route?
 The only real alternative this late in the game is to back out the sanity
 checks to the 4.8.3 status or to explicitly say that KDE4_ENABLE_FINAL will
 not work for this tarball although it worked for 4.8.3, both of which I
 consider less desirable. But I don't want to make the change if there are
 good reasons to avoid it.

The alternative would be to enable exceptions for all of kdecore only if 
enable-final is enabled.

-- 
David Faure, fa...@kde.org, http://www.davidfaure.fr
Sponsored by Nokia to work on KDE, incl. KDE Frameworks 5

___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team


Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-14 Thread Michael Pyne
On Thursday, June 14, 2012 15:36:47 David Faure wrote:
 On Tuesday 12 June 2012 20:42:28 Michael Pyne wrote:
  Hi all,
  
  Bug 301419 has been reported against kdelibs due to a build failure when
  KDE4_ENABLE_FINAL is used, introduced by some commits of mine to perform
  even more sanity checking in the KSharedDataCache.
  
  These commits use exceptions (as are already used in khtml) since they are
  actually the right tool in the context of where they are used, and
  because refactoring everything to use error codes everywhere (ECE) would
  have risked introducing more bugs.
  
  In order to minimize the changes to kdecore I only added the CMake magic
  to
  enable exceptions for only kshareddatacache.cpp. This doesn't work when
  KDE4_ENABLE_FINAL is used, as the project-wide CXXFLAGS are used in that
  case.
  
  The Mageia devs have a proposed patch [1] to enable exceptions for all of
  kdecore, which fixes the issue. Is it acceptable for me to go this route?
  The only real alternative this late in the game is to back out the sanity
  checks to the 4.8.3 status or to explicitly say that KDE4_ENABLE_FINAL
  will
  not work for this tarball although it worked for 4.8.3, both of which I
  consider less desirable. But I don't want to make the change if there are
  good reasons to avoid it.
 
 The alternative would be to enable exceptions for all of kdecore only if
 enable-final is enabled.

Sorry to be unclear -- that's exactly what the Mageia patch accomplishes. They 
only flip the exceptions bit for enable-final builds. If that sounds agreeable 
I intend on making that alteration and forwarding the patch to kde-packager.

Regards,
 - Michael Pyne

signature.asc
Description: This is a digitally signed message part.
___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team


Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-14 Thread Michael Pyne
On Thursday, June 14, 2012 20:18:04 Albert Astals Cid wrote:
 El Dijous, 14 de juny de 2012, a les 15:36:47, David Faure va escriure:
  On Tuesday 12 June 2012 20:42:28 Michael Pyne wrote:
   Hi all,
   
   Bug 301419 has been reported against kdelibs due to a build failure when
   KDE4_ENABLE_FINAL is used, introduced by some commits of mine to perform
   even more sanity checking in the KSharedDataCache.
   
   These commits use exceptions (as are already used in khtml) since they
   are
   actually the right tool in the context of where they are used, and
   because refactoring everything to use error codes everywhere (ECE) would
   have risked introducing more bugs.
   
   In order to minimize the changes to kdecore I only added the CMake magic
   to
   enable exceptions for only kshareddatacache.cpp. This doesn't work when
   KDE4_ENABLE_FINAL is used, as the project-wide CXXFLAGS are used in that
   case.
   
   The Mageia devs have a proposed patch [1] to enable exceptions for all
   of
   kdecore, which fixes the issue. Is it acceptable for me to go this
   route?
   The only real alternative this late in the game is to back out the
   sanity
   checks to the 4.8.3 status or to explicitly say that KDE4_ENABLE_FINAL
   will
   not work for this tarball although it worked for 4.8.3, both of which I
   consider less desirable. But I don't want to make the change if there
   are
   good reasons to avoid it.
  
  The alternative would be to enable exceptions for all of kdecore only if
  enable-final is enabled.
 
 Is that binary compatible?

If I'm understanding it right, it would add extra typeinfo classes for kdecore 
but would remain binary-compatible with older code. It is not mentioned at all 
in our TechBase binary compatibility page, which is even the #1 Google hit 
now. :)

Also the flag itself is claimed as binary compatible (in the context of code 
that doesn't actually /use/ exceptions) in some discussion on the Qt dev list, 
by Olivier Goffart and Thiago Macieira [1] (both of whom I trust more than 
myself on this topic).

Researching further, the GCC libstdc++ page [2] mentions that exception 
handling is part of the ABI, but I can only assume this is in the context of 
does this code throw exceptions or not as opposed to whether non-exception-
using code would care about that flag. The GCC docs on -fexceptions talk about 
extra code to propagate exceptions and perhaps data size overhead but there's 
no specific warning regarding changing the ABI visible outside of the object 
file.

The detailed GCC ABI spec is at [3] and it seems to me from my reading of it 
that the changes involved are changes to data included with the .o, changes in 
function implementations, and extra calls to the C++ runtime library... but no 
changes to symbol names, mangling, etc. As far as I can tell this change 
should be binary compatible.

As an experiment I've recompiled kdecore here with exceptions and run KDevelop 
(which I think is a fair exercise of much of the breadth of kdecore 
technologies) and wasn't able to find any new issues from that change.

[1] http://permalink.gmane.org/gmane.comp.lib.qt.devel/3681
[2] http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-
Options.html#Code%20Gen%20Options
[3] http://sourcery.mentor.com/public/cxx-abi/abi-eh.html#cxx-abi

Regards,
 - Michael Pyne

signature.asc
Description: This is a digitally signed message part.
___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team


Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-13 Thread Alexander Neundorf
On Wednesday 13 June 2012, Michael Pyne wrote:
 Hi all,
 
 Bug 301419 has been reported against kdelibs due to a build failure when
 KDE4_ENABLE_FINAL is used, introduced by some commits of mine to perform
 even more sanity checking in the KSharedDataCache.
 
 These commits use exceptions (as are already used in khtml) since they are
 actually the right tool in the context of where they are used, and
 because refactoring everything to use error codes everywhere (ECE) would
 have risked introducing more bugs.
 
 In order to minimize the changes to kdecore I only added the CMake magic to
 enable exceptions for only kshareddatacache.cpp. This doesn't work when
 KDE4_ENABLE_FINAL is used, as the project-wide CXXFLAGS are used in that
 case.
 
 The Mageia devs have a proposed patch [1] to enable exceptions for all of
 kdecore, which fixes the issue. Is it acceptable for me to go this route?
 The only real alternative this late in the game is to back out the sanity
 checks to the 4.8.3 status or to explicitly say that KDE4_ENABLE_FINAL
 will not work for this tarball although it worked for 4.8.3, both of which
 I consider less desirable. But I don't want to make the change if there
 are good reasons to avoid it.
 
 Longer term (for frameworks) KSharedDataCache could be split into its own
 tier if necessary (it only really depends on Qt and KStandardDirs, which
 is now also in Qt...).

In KDE frameworks, i.e. next gen kdelibs, ENABLE_FINAL will not be supported 
anymore at all.
AFAIK gcc now actually has a mode to do interobject optimizations, so with 
this mode enabled (which we currently don't), ENABLE_FINAL should not be 
necessary anymore.

So, personally I do not really care much about ENABLE_FINAL.

Alex
___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team


Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL

2012-06-12 Thread Michael Pyne
Hi all,

Bug 301419 has been reported against kdelibs due to a build failure when 
KDE4_ENABLE_FINAL is used, introduced by some commits of mine to perform even 
more sanity checking in the KSharedDataCache.

These commits use exceptions (as are already used in khtml) since they are 
actually the right tool in the context of where they are used, and because 
refactoring everything to use error codes everywhere (ECE) would have risked 
introducing more bugs.

In order to minimize the changes to kdecore I only added the CMake magic to 
enable exceptions for only kshareddatacache.cpp. This doesn't work when 
KDE4_ENABLE_FINAL is used, as the project-wide CXXFLAGS are used in that case.

The Mageia devs have a proposed patch [1] to enable exceptions for all of 
kdecore, which fixes the issue. Is it acceptable for me to go this route? The 
only real alternative this late in the game is to back out the sanity checks 
to the 4.8.3 status or to explicitly say that KDE4_ENABLE_FINAL will not work 
for this tarball although it worked for 4.8.3, both of which I consider less 
desirable. But I don't want to make the change if there are good reasons to 
avoid it.

Longer term (for frameworks) KSharedDataCache could be split into its own tier 
if necessary (it only really depends on Qt and KStandardDirs, which is now 
also in Qt...).

Regards,
 - Michael Pyne

[1] 
http://svnweb.mageia.org/packages/cauldron/kdelibs4/current/SOURCES/kdelibs-4.8.4-
correct-use-fexception-switch.patch?revision=260068view=markup

signature.asc
Description: This is a digitally signed message part.
___
release-team mailing list
release-team@kde.org
https://mail.kde.org/mailman/listinfo/release-team