<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://git.reviewboard.kde.org/r/125614/">https://git.reviewboard.kde.org/r/125614/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On October 12th, 2015, 8:48 p.m. UTC, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">There is an issue with Qt 5.5.0's configure script, currently. From what I understand, the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-rpath</code> configure option works as intended, and gives relocatable framework bundles that are intended to be embedded in dependent app bundles.
Qt installs for a fixed, shared location should use <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-no-rpath</code>, but the Qt5 build system currently doesn't add the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">absolute_library_soname</code> option to the qmake config (see my "Qt 5.5.0 build issues on OS X : rpath" thread on Qt's development ML). The Qt 5.4.2 script did this correctly; I provide a patch that restores this with my <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">qt5-kde</code> port for MacPorts (https://github.com/RJVB/macstrop/blob/master/aqua/qt5-kde/files/patch-configure-find-opengl-and-correct-rpath.diff).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">(The absolute_library_soname config stores the full install name in the generated frameworks, without explicit use of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">install_name_tool</code>).</p></pre>
</blockquote>
<p>On October 12th, 2015, 8:50 p.m. UTC, <b>Christoph Cullmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Ok. But still, it would be nice to have the stuff working with a relocatable framework, too, and it does now with this patch. Will it hurt the other variant?</p></pre>
</blockquote>
<p>On October 12th, 2015, 9:20 p.m. UTC, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">No, you just have to build Qt with <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-rpath</code> (or modify the framework "rpaths" somehow; I think Qt's <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">macdeployqt</code> tool does that, and there's also a cmake recipe that has the same effect, at least with Qt 5.4).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Looking at your patch, the question is rather: will "it" hurt the variant where Qt's frameworks are <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">not</em> meant to be embedded, but used from a fixed, shared location?
(Semantics, but it's the app bundle that is relocatable; the Qt frameworks must be at a specific location inside the app bundle. Relocatable frameworks don't have path information in their install_name, and can be placed in any of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">{/System/,/,~/}Library/Frameworks</code>.)</p></pre>
</blockquote>
<p>On October 12th, 2015, 9:23 p.m. UTC, <b>Christoph Cullmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">That was my question: Will it hurt the variant that is not meant to be embedded?
If not, I would like to have this merged, to be able to compile against any variant of qt.
With the above patch and my other patches still in the queue I am able to build a complete Kate with a stock qt and neither macports nor homebrew magic, just like:</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">errors fatal</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">set -e</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">steps to build kate on make</h1>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">install Qt 5.5.0</h1>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">install CMake 3.3.2</h1>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">set path to Qt 5.5.0 stuff</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">export PATH=~/Qt5.5.0/5.5/clang_64/bin:/Applications/CMake.app/Contents/bin:$PATH</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">remember some dirs</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">export PREFIX=<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">pwd</code>/usr
export BUILD=<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">pwd</code>/build
export SRC=<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">pwd</code>/src</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">install gettext</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">mkdir -p src
cd src
curl http://ftp.gnu.org/pub/gnu/gettext/gettext-latest.tar.gz > gettext-latest.tar.gz
tar -xvzf gettext-latest.tar.gz
cd gettext-0.*
./configure --prefix=$PREFIX
make install
cd ..
cd ..</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">build helper</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">function build_framework
{ (
# errors fatal
set -e</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%"><span style="border: 1px solid #FF0000">#</span> framework
FRAMEWORK=$1
<span style="border: 1px solid #FF0000">#</span> create build dir
mkdir -p $<span style="color: #19177C">BUILD</span>/$<span style="color: #19177C">FRAMEWORK</span>
<span style="border: 1px solid #FF0000">#</span> go there
cd $<span style="color: #19177C">BUILD</span>/$<span style="color: #19177C">FRAMEWORK</span>
<span style="border: 1px solid #FF0000">#</span> cmake it
cmake $<span style="color: #19177C">SRC</span>/$<span style="color: #19177C">FRAMEWORK</span> -DCMAKE_INSTALL_PREFIX:PATH=$<span style="color: #19177C">PREFIX</span>
<span style="border: 1px solid #FF0000">#</span> make
make -j2
<span style="border: 1px solid #FF0000">#</span> install
make install
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">) }</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">get stuff</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">cd src</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">git clone kde:extra-cmake-modules
git clone kde:kconfig
git clone kde:kguiaddons
git clone kde:ki18n
git clone kde:kitemviews
git clone kde:sonnet
git clone kde:kwindowsystem
git clone kde:kwidgetsaddons
git clone kde:kcompletion
git clone kde:kdbusaddons
git clone kde:karchive
git clone kde:kcoreaddons
git clone kde:kjobwidgets
git clone kde:kcrash
git clone kde:kservice
git clone kde:kcodecs
git clone kde:kauth
git clone kde:kconfigwidgets
git clone kde:kiconthemes
git clone kde:ktextwidgets
git clone kde:knotifications
git clone kde:kglobalaccel
git clone kde:kxmlgui
git clone kde:kbookmarks
git clone kde:solid
git clone kde:kio
git clone kde:kinit
git clone kde:kparts
git clone kde:ktexteditor
git clone kde:kate</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">cd ..</p>
<h1 style="font-size: 100%;text-rendering: inherit;padding: 0;white-space: normal;margin: 0;line-height: inherit;">build stuff</h1>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">build_framework extra-cmake-modules
build_framework kconfig
build_framework kguiaddons
build_framework ki18n
build_framework kitemviews
build_framework sonnet
build_framework kwindowsystem
build_framework kwidgetsaddons
build_framework kcompletion
build_framework kdbusaddons
build_framework karchive
build_framework kcoreaddons
build_framework kjobwidgets
build_framework kcrash
build_framework kservice
build_framework kcodecs
build_framework kauth
build_framework kconfigwidgets
build_framework kiconthemes
build_framework ktextwidgets
build_framework knotifications
build_framework kglobalaccel
build_framework kxmlgui
build_framework kbookmarks
build_framework solid
build_framework kio
build_framework kinit
build_framework kparts
build_framework ktexteditor
build_framework kate</p></pre>
</blockquote>
<p>On October 12th, 2015, 9:45 p.m. UTC, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I don't know how to answer that question, and you appear to be the only one who can test it.
What does the cmake code do exactly? It keeps the original absolute path install_name (which would correspond to what Qt's <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">absolute_library_soname</code> config does), and then adds that same absolute path to the application's rpath list?
I have no direct experience with using rpaths other than absolute ones and the special relative ones Apple provides (<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">@executable_path</code> and family), but that seems a more or less redundant situation that should not cause any issues as far as I can guess.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">But is that interpretation correct, does that cmake snippet being patched indeed store an absolute install_name? In that case you're not working on/with a variant that's embeddable, at least not in an app bundle that can be moved around freely.</p></pre>
</blockquote>
<p>On October 12th, 2015, 9:48 p.m. UTC, <b>Christoph Cullmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">But is that interpretation correct, does that cmake snippet being patched indeed store an absolute install_name? In that case you're not working on/with a variant that's embeddable, at least not in an app bundle that can be moved around freely.
No idea, I just keep that part in the cmake file to not break other stuff.</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Lets see if others have an idea, else I will commit that in the next days, as I see no evidence that it breaks things more than they are already broken at the moment.</p></pre>
</blockquote>
<p>On October 12th, 2015, 11:02 p.m. UTC, <b>Ian Wadham</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I did dabble in library paths and rpaths on Apple OS X and CMake a year or so ago, but have forgotten all I learned. Googling "Apple OS X rpath" yields a mass of information.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I got the impression that Apple OS X discourages this and prefers absolute paths of libraries to be wired into executables. Whether this is for security reasons or for backward compatibility of apps with older libraries I do not recall, but both goals are important in my opinion.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Christoph, you might try going on the https://lists.macosforge.org/mailman/listinfo/macports-dev mailing list. There you will find a lot of expertise on OS X, Linux, BSD and Macports. The people there are very helpful with questions of the kind you pose. You might get good feedback there. Mention that you are a KDE Community release co-ordinator, BTW, and are seeking answers on how best to deploy KF5 and Frameworks for Apple OS X.</p></pre>
</blockquote>
<p>On October 13th, 2015, 6:21 a.m. UTC, <b>Christoph Cullmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">After all I have read so far, adding the additional rpaths won't hurt the setup MacPorts uses.</p></pre>
</blockquote>
<p>On October 13th, 2015, 8:08 a.m. UTC, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Possible, maybe even probable. Anyway, there is still going to be so much hacking from what I can see that this will hardly change anything.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I'm still not sure you have achieved your goal if that was to make a location-independent app bundle with embedded frameworks. Did you try moving it (to a different machine, ideally, or after making one of the target Qt5/KF5 frameworks inaccessible)?
I'm just thinking of the commit message here.</p></pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">You are right, I think it is still not movable, therefore for the commit this is more like "make frameworks compilable with stock qt.io qt on mac". It is for sure not the final fix for all deployment issues.
But I think it is a nice step forwards for non-macports/homebrew mac os builds, which IMHO are atm not possible at all with stock qt without this.</p></pre>
<br />
<p>- Christoph</p>
<br />
<p>On October 12th, 2015, 6:46 p.m. UTC, Christoph Cullmann wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
<div>Review request for KDE Software on Mac OS X, KDE Frameworks, Alex Merry, and Harald Fernengel.</div>
<div>By Christoph Cullmann.</div>
<p style="color: grey;"><i>Updated Oct. 12, 2015, 6:46 p.m.</i></p>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
extra-cmake-modules
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Enable normal rpath handling on Mac, just in addition set the install name.
Without this, with a plain qt installed via the qt mac installer, no program build runs, e.g. desktoptojson can't locate any Qt lib.
With that all is fine and we have some reasonable rpaths:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Load command 17
cmd LC_RPATH
cmdsize 48
path /Users/cullmann/local/kf5/usr/lib (offset 12)
Load command 18
cmd LC_RPATH
cmdsize 56
path /Users/cullmann/Qt5.5.0/5.5/clang_64/lib (offset 12)</p></pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Could build kservice with this patch again, as desktoptojson works.</p></pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>kde-modules/KDECMakeSettings.cmake <span style="color: grey">(cefd6da)</span></li>
</ul>
<p><a href="https://git.reviewboard.kde.org/r/125614/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>