<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/129800/">https://git.reviewboard.kde.org/r/129800/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On Януари 10th, 2017, 10:28 след обяд EET, <b>Anthony Fieroni</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;">So when Karbon works, i'm +1, please try words / sheets are they worked as well as Karbon?</p></pre>
 </blockquote>




 <p>On Януари 10th, 2017, 11 след обяд EET, <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 cannot tell yet, but I'm not expecting any issues because of this patch. As you can see it only touches common/shared code at the moment, and I am NOT building with <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-DAPPLE_STANDALONE_BUILD</code>.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">think</em> I should have most external dependencies installed for Words and Sheets, so I'll be looking at building them in the near future, and update this ticket accordingly.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I'm my point of view that's icing on the cake that can come after we've reached feature parity with Linux. I can imagine others think different (that's what Macs are for ;)). Hence this patch, it'll make it easier to follow both approaches simultaneously.</p></pre>
 </blockquote>





 <p>On Януари 10th, 2017, 11:03 след обяд EET, <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;">BTW: I do hope for some collaborative brainstorming w.r.t. using info from KoResourcePaths.h more widely, instead of using QStandardPaths types directly. That's a rather delicate intervention which I'd prefer not to take the sole responsibility for.</p></pre>
 </blockquote>





 <p>On Януари 11th, 2017, 5:54 след обяд EET, <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 can confirm Words works too with this patch.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">(I did have to fix a small issue in the words-odf filter, I've taken the liberty to push the fix: https://cgit.kde.org/calligra.git/commit/?id=a8fd10d8b0a24e581eeb4754b458ba98ddbf0167)</p></pre>
 </blockquote>





 <p>On Януари 14th, 2017, 4:22 след обяд EET, <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;">Sheets works nicely too!</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;">I response for only Karbon, wait for Camilla and Dag Andersen.</p></pre>
<br />










<p>- Anthony</p>


<br />
<p>On Януари 10th, 2017, 6:34 след обяд EET, René J.V. Bertin 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 Calligra and Camilla Boemann.</div>
<div>By René J.V. Bertin.</div>


<p style="color: grey;"><i>Updated Ян. 10, 2017, 6:34 след обяд</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
calligra
</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;">This proposal is an initial implementation of things discussed on the ML a short while back.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Building KF5 software on Mac as if on any Unix variant (with "Cocoa" instead of X11) is possible and is what you get without specific changes to the build system. With a few tweaks to Qt's QStandardPaths (provided by MacPorts) this kind of build works flawlessly and with an identical feature set as on Linux c.s.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">NB: this build also puts applications in an app bundle "wrapper", but one that contains just the minimal resources (executable, app icon and Info.plist).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">One can also tweak the build so that a relocatable and standalone app bundle results which contains the application and all its 3rd-party dependencies (Qt5, KF5 frameworks, etc.). This works with a stock Qt5 build but still requires patches throughout KF5 code and build systems. Several projects already provide "official" builds of this type for Mac: Kate, KDevelop, Marble and Krita to name a few.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The current patch prepares for allowing a choice for either a standalone app bundle build or a more traditional build via a CMake option <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">APPLE_STANDALONE_BUNDLE</code> and preprocessor token of the same name. This makes it easy to dissociate the Apple build types from general Apple build requirements. Testing for build flavour is done by checking <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">APPLE_STANDALONE_BUNDLE</code>, testing for build platform by checking <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">APPLE</code> (CMake) or <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">Q_OS_MACOS</code> (Qt/C++) (or <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">__APPLE__</code> in code not using Qt).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In addition to the introduction of the CMake option, the patch</p>
<ul style="padding: 0;text-rendering: inherit;margin: 0 0 0 1em;line-height: inherit;white-space: normal;">
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">updates <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KoApplication::start()</code>. Judging from Kate's approach it shouldnt' be necessary on Mac to set <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">XDG_DATA_DIRS</code>, which isn't used anywhere in code (except in MacPorts tweaked QStandardPaths!). The <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">PATH</code> env. variable also shouldn't be <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">re</em>set and only needs changing (potentially!) in a standalone app bundle build. I don't have a MS Windows dev. system so I've merged Krita's way of setting <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">XDG_DATA_DIRS</code> with Calligra's current code. Note that Qt/Win also doesn't seem to use that variable in <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QStandardPaths</code>.</li>
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">rewrites <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KoResourcePathsImpl::mapTypeToQStandardPaths()</code> to use a much more efficient static <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QHash</code> table. <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">A priori</em> it should be possible to use <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QStandardPaths::AppDataLocation</code> to obtain the location of the app bundle resources directory; it could be populated with symlinks into <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">/path/to/foo.app/Contents/share</code> so resources can be found with minimum changes to the build system (install locations). This will need to be established going forward (knowing that my own main interest is with "linuxy builds").</li>
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">the change to <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KoResourcePathsImpl::mapTypeToQStandardPaths()</code> only has a real interest if it's used throughout the code instead of explicit use of QStandardPaths locations. For now I have set this up through build-type specific preprocessor macros in KoResourcePaths.h (because an enum would probably have to be cast to work with the QSP methods). I haven't changed any code to use those macros.</li>
</ul>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Not yet incorporated: tweaks to the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">ecm_add_app_icon</code> calls to use its new capability to generate an app icon from an SVG file (currently tested with Karbon).</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;">Karbon works as expected with this patch on Mac OS X 10.9.5 (and Linux) with Qt 5.7.1 and KF5 5.29.0 installed under /opt/local . </p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Without the patch Karbon crashes or aborts immediately on Mac because it doesn't find a single resource in the locations indicated by the inappropriate <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">XDG_DATA_DIRS</code> value.</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>CMakeLists.txt <span style="color: grey">(13ac88f)</span></li>

 <li>libs/main/KoApplication.cpp <span style="color: grey">(7b23f8d)</span></li>

 <li>libs/widgets/KoResourcePaths.h <span style="color: grey">(8830a5a)</span></li>

 <li>libs/widgets/KoResourcePaths.cpp <span style="color: grey">(7df9dc6)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/129800/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>







  </div>
 </body>
</html>