[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: Question regarding compatibility for kdecore and KDE4_ENABLE_FINAL
From:       Alexander Neundorf <neundorf () kde ! org>
Date:       2012-06-13 16:13:48
Message-ID: 201206131813.49090.neundorf () kde ! org
[Download RAW message or body]

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

[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Monospace'; font-size:9pt; font-weight:400; \
font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">On \
Wednesday 13 June 2012, Michael Pyne wrote:</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; Hi all,</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; Bug 301419 has been reported against kdelibs \
due to a build failure when</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; KDE4_ENABLE_FINAL is used, introduced by some commits of mine \
to perform</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; even \
more sanity checking in the KSharedDataCache.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; These commits use exceptions (as are already \
used in khtml) since they are</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; actually &quot;the right tool&quot; in the context of where \
they are used, and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
because refactoring everything to use error codes everywhere (ECE) would</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; have risked introducing \
more bugs.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; In order to minimize the \
changes to kdecore I only added the CMake magic to</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; enable exceptions for only \
kshareddatacache.cpp. This doesn't work when</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; KDE4_ENABLE_FINAL is used, as the \
project-wide CXXFLAGS are used in that</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; case.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; The Mageia devs have a proposed patch [1] to \
enable exceptions for all of</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; kdecore, which fixes the issue. Is it acceptable for me to go \
this route?</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; The \
only real alternative this late in the game is to back out the sanity</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; checks to the 4.8.3 \
status or to explicitly say that KDE4_ENABLE_FINAL</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; will not work for this tarball although it \
worked for 4.8.3, both of which</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; I consider less desirable. But I don't want to make the \
change if there</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; are \
good reasons to avoid it.</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; </p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; Longer term (for frameworks) KSharedDataCache could be split \
into its own</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; tier \
if necessary (it only really depends on Qt and KStandardDirs, which</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; is now also in \
Qt...).</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">In KDE frameworks, i.e. next gen kdelibs, ENABLE_FINAL will not be \
supported anymore at all.</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">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.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">So, personally I do not really care much about \
ENABLE_FINAL.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Alex</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p></body></html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic