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





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On децембар 4th, 2015, 10:35 пре п. CET, <b>Chusslove Illich</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;">The KI18N_INSTALL macro is also used by KI18n itself, to install its own translations. And so do other higher-tier frameworks. So I'm not sure when this no-Gettext/no-Python build is supposed to be useful. When one wants to omit translations?</pre>
 </blockquote>




 <p>On децембар 4th, 2015, 11:08 пре п. CET, <b>Boudewijn Rempt</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 <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">never</em> install translations. Where would I install them from? Running "make install" in ki18n doesn't install translations, as far as I can see? I thought translations get installed by the distribution, or I package them manually for Windows and OSX. </p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">So, when I build Krita on OSX or Windows, I first need to build the dependencies, and ki18n is one of them, but because it mixes up translation management with providing the translation framework an application uses. So why should I build Python and Gettext and QtQML for parts of this framework that never get executed?</p></pre>
 </blockquote>





 <p>On децембар 4th, 2015, 11:28 пре п. CET, <b>Chusslove Illich</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;">For me "make" does build translations using msgfmt, and builds some other translation-related files using a Python script, and "make install" installs those built files.

Something is definitely going wrong if QtQML is seen as dependency. What is needed is QtScript, and that is a real dependency, used at runtime by translations. It can be disabled, but that will cause degradation in quality of some translations.</pre>
 </blockquote>





 <p>On децембар 4th, 2015, 11:33 пре п. CET, <b>Chusslove Illich</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;">Hm, where do you fetch the frameworks to build from? If from the Git repositories, there are no translations there. But the release tarballs do contain translations.

Only Applications are released with separate translation packages. (Which I think is not a good thing, but hell...)</pre>
 </blockquote>





 <p>On децембар 4th, 2015, 11:35 пре п. CET, <b>Boudewijn Rempt</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;">Always from git.</p></pre>
 </blockquote>





 <p>On децембар 4th, 2015, 12:05 по п. CET, <b>Chusslove Illich</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;">If you are fetching and installing translations manually by taking only PO files, that will leave any scripted translations not working. Nothing will crash, but lower quality fallbacks will be used. If you want to support also scripted translations, you should fetch and install any modules from script/ subdirectories of translations in the repository.

Regarding this patch, I don't see it as appropriate, since it would basically allow for broken treatment of translations when building release tarballs. Better just add it to be applied in your build setup. I know, not nice when something changes and the patch needs to be updated, but it's the less bad alternative.</pre>
 </blockquote>





 <p>On децембар 4th, 2015, 12:15 по п. CET, <b>Aleix Pol Gonzalez</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;">@Chusslove, that might make it harder for people to port applications to Windows though. (Or Android for that matter)</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Maybe we can find an in-between compromise solution? In the end building translations is something that only happens when you're about to release.</p></pre>
 </blockquote>





 <p>On децембар 4th, 2015, 1:17 по п. CET, <b>Kåre Särs</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 a compile Kate on Windows exercise this summer and fall (hoping I will get to the installer soon :) I was expecting <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">some</em> hurdles but I was shocked about how hard it was to compile KDE Frameworks 5 on Windows without using emerge. This basically means that big parts of frameworks just was not a realistic alternative for third-party Windows applications. With changes that have flown in during this fall the building of frameworks on Windows has become <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">much</em> easier and is soon a real alternative for Windows Qt projects.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The gettext and python dependencies are probably the biggest hurdles. My build script uses a trick inherited from emerge that just downloads a pre-built binary package for the gettext tools and I had to rename some of the include directories found in the Python installation because they clashed with the rest of the build. Requiring python and downloading random packages from SF is probably not something that any of my colleges at work would like to add to their Qt projects.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Translations are really important and needs to be taken care of. I would like it to be possible to split out the utilities somehow so that I could compile the application without installing the utilities needed for the compilation. The parts requiring Python/Gettext would be like CMake a separate tool and not like Autotools a part of the package.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">@Chusslove: This patch only disables the tools. What would it take to split the tools out into a separate build?</p></pre>
 </blockquote>





 <p>On децембар 4th, 2015, 2:06 по п. CET, <b>Chusslove Illich</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;">If you don't have Gettext tools and Python, then you cannot properly build translation files, of KI18n and other packages using it, no matter how you do it.

But I don't follow what's going on there for Windows, so better not bother anyone explaining it. Then, maybe have an explicit option to switch to a no-op version of the ki18n_install macro, say:

  option(DROP_TRANSLATION_BUILDS "Replace CMake macros for building and installing translation files with no-op macros" OFF)</pre>
 </blockquote>





 <p>On децембар 5th, 2015, 10:26 пре п. CET, <b>Boudewijn Rempt</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 really know what "scripted translations" are, but it sounds like a runtime thing for an application, so I don't get how removing a build-time dependency breaks that. I know I must be missing something, because why should I want to build translation files? Why can't I use the translations files that someone else has already built for the few frameworks that we use? I mean, when you install a framework on Linux through your distribution's package manager, that doesn't run gettext and python to do stuff, does it?</p></pre>
 </blockquote>





 <p>On децембар 5th, 2015, 8:17 по п. CET, <b>Chusslove Illich</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;">I don't want to go into such considerations. From my point of view, if one is building software that uses Gettext-based translations, one should make sure normal Gettext setup is available. Similar for Python.

Nevertheless, I offered to introduce the funny possibility to disable the build system support for translation files, via an explicit CMake option as above. Is there a problem with this solution?</pre>
 </blockquote>





 <p>On децембар 5th, 2015, 9:23 по п. CET, <b>Aleix Pol Gonzalez</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;">If a dependency is optional, it needs to be defined as such: here's an example:</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%">set_package_properties(Qca-qt5-ossl PROPERTIES
         PURPOSE "Runtime-only dependency on the OSSL plugin of QCA for authentication to work properly"
         TYPE RUNTIME
)
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Lack of runtime dependencies shouldn't hold the build though.</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;">There are no optional dependencies in KI18n[*]. It is not optional to build translation files. QtScript is a runtime dependency technically, but this is only a performance hack, so it too is not optional dependency. If it is desired to rip one of these things out, it has to be explicitly requested.

[*] Well, now there is QtQml dependency in tests, and it's ok to consider extra dependencies of particular tests as optional. Should be handled by disabling only the tests with unsatisfied dependencies, but as a stopgap measure I think an option to disable all tests is fine.</pre>
<br />










<p>- Chusslove</p>


<br />
<p>On децембар 4th, 2015, 1:17 пре п. CET, Boudewijn Rempt 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 Frameworks, Aleix Pol Gonzalez, Chusslove Illich, and Luigi Toscano.</div>
<div>By Boudewijn Rempt.</div>


<p style="color: grey;"><i>Updated Дец. 4, 2015, 1:17 пре п.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
ki18n
</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;">When building ki18n as a dependency framework for shipping with an application, the tools to actually create and manage translations are superfluous. These tools have some big dependencies that are a pain to have around, especially gettext on Windows. This patch makes the requirement for Python and Gettext optional.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This patch checks the BUILD_TESTING variable to see if the autotests should be built, because when we just need the library to build an application we shouldn't waste electicity building the tests (and the Qt5::QML dependency).</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">(59917fa)</span></li>

 <li>cmake/KF5I18NMacros.cmake <span style="color: grey">(53ba812)</span></li>

</ul>

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






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







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