<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/124892/">https://git.reviewboard.kde.org/r/124892/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On August 25th, 2015, 1:41 p.m. UTC, <b>David Edmundson</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've got both Gentoo and Arch saying this causes a major problem [1]:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">libdraganddropplugin.so changes to draganddropplugin.so
in /usr/lib/qt/qml/org/kde/draganddrop</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">and then they don't get loaded.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">any ideas? Otherwise I'll have to revert this before release.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">[1] https://aur.archlinux.org/packages/plasma-desktop-git/</p></pre>
</blockquote>
<p>On August 25th, 2015, 1:49 p.m. UTC, <b>Harald Sitter</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 tried it this morning and it seemed to work. Now I try it again and it fails....</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I suppose this is the point where we call for a revert hammer? :P</p></pre>
</blockquote>
<p>On August 25th, 2015, 1:52 p.m. UTC, <b>Harald Sitter</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;">from qmldir documentation</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Declares a plugin to be made available by the module.
<Name> is the plugin library name. This is usually not the same as the file name of the plugin binary, which is platform dependent; e.g. the library MyAppTypes would produce libMyAppTypes.so on Linux and MyAppTypes.dll on Windows.</p></pre>
</blockquote>
<p>On August 25th, 2015, 1:59 p.m. UTC, <b>Harald Sitter</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;">http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_SHARED_MODULE_PREFIX.html</p></pre>
</blockquote>
<p>On August 25th, 2015, 2:09 p.m. UTC, <b>David Edmundson</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;">are we meant to set that to "lib" in every project? That doesn't sound right.</p></pre>
</blockquote>
<p>On August 25th, 2015, 2:36 p.m. UTC, <b>Harald Sitter</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;">More like per-target even, since a kded plugin for example wouldn't want the prefix I suppose. It might well be that switching the qml plugins to MODULE is quite simply not the best solution to the initial problem on OSX, even though TBH they are really MODULE and not SHARED anyway so by any measure declaring them SHARED was weird all along.
alexmerry might know of a better way but from my quick research it appears that either we need to set the prefix variable (supposedly via a macro wrapping add_library) or we revert back to SHARED and need to find another way to coerce cmake into producing working results on OSX.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In a way I would argue that the problem is more with the qml loader not looking for a version without lib prefix if the lib prefix one is not available. So, regardless of how we proceed with kdeclarative I think it would be wortwhile to possible expand the qml loader to not require the lib prefix on unix systems. If not to resolve the issue at hand, at least to have it behave reasonably in the distant future.</p></pre>
</blockquote>
<p>On August 25th, 2015, 4:27 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;"><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;">find another way to coerce cmake into producing working results on OSX</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Are you sure that results actually "do no not work" on OS X (and that this has nothing to do with QStandardPaths returning unexpected locations)?!
It is always possible to ensure that the plugins get the correct install_name and even a compatibility_version if there's any point in that (do these get versioning under Linux?). This can be done during the link step but also afterwards (probably more complicated to get right in CMake scripts). Whatever the approach, it should be possible to do it in the CMake macro (cmake already generates an option to set the install_name because otherwise the linker would either assume a relative install_name [just the filename] or use the full path to the output file).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I presume that at least some of the plugins targeted here exists for KDE4 and if so, are still built the way they were there?</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;">Harald: you are right, Qt requiring the lib prefix is incorrect (unnecessary and confusing) on Linux, since as you say, a module is not a shared lib.
QLibrary actually tries with and without the lib prefix (which is why C++ plugins like kded and others don't have it). I assume QML doesn't use QLibrary then?</p></pre>
<br />
<p>- David</p>
<br />
<p>On August 23rd, 2015, 9:16 p.m. UTC, Hanspeter Niederstrasser 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 Build System, KDE Software on Mac OS X, KDE Frameworks, Plasma, and Harald Sitter.</div>
<div>By Hanspeter Niederstrasser.</div>
<p style="color: grey;"><i>Updated Aug. 23, 2015, 9:16 p.m.</i></p>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="https://bugs.kde.org/show_bug.cgi?id=342962">342962</a>
</div>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
kdeclarative
</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;">The kdeclarative plugins (draganddropplugin, kcoreaddonsplugin, kio, kquickcontrolsprivateplugin, and kquickcontrolsaddonsplugin) are being built as shared libraries. They should be built as bundles (MODULE) in the CMakeLists.txt file.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">When built as SHARED as in the current code, libdraganddropplugin.dylib gets installed to $PREFIX/share/qt5/qml/org/kde/draganddrop, but is given an OS X install_name of $PREFIX/lib/libdraganddropplugin.dylib. This mismatch can cause problems. It is also given a compatibility_version of 0.0.0.</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;">Since the plugin is not supposed to be a linkable library, it should be built as MODULE in CMakeLists.txt. The physical install location remains the same and plugins don't have install_names. This corrects the install_name/install location mismatch. The change should not have any effect on non-OS X systems.</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>src/qmlcontrols/draganddrop/CMakeLists.txt <span style="color: grey">(e8127e4)</span></li>
<li>src/qmlcontrols/kcoreaddons/CMakeLists.txt <span style="color: grey">(3f77f2d)</span></li>
<li>src/qmlcontrols/kioplugin/CMakeLists.txt <span style="color: grey">(7b258e0)</span></li>
<li>src/qmlcontrols/kquickcontrols/private/CMakeLists.txt <span style="color: grey">(da355c1)</span></li>
<li>src/qmlcontrols/kquickcontrolsaddons/CMakeLists.txt <span style="color: grey">(5b711e1)</span></li>
</ul>
<p><a href="https://git.reviewboard.kde.org/r/124892/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>