<table><tr><td style="">sitter created this revision.<br />Restricted Application added a project: Frameworks.<br />Restricted Application added a subscriber: Frameworks.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D7069" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>Previously kpackagetool used STDOUT as output for the appstream xml data<br />
it generated. This has various problems:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">cannot print arbitrary stuff on stdout</li>
<li class="remarkup-list-item">cmake capturing stdout will always create a file even when there was no output</li>
<li class="remarkup-list-item">NoDisplay sensitive can result in exit(0) but no output resulting in such an empty file</li>
<li class="remarkup-list-item">appstreamcli will complain about bogus files (e.g. empty files)</li>
<li class="remarkup-list-item">complaints from appstreamcli are treated as test failures</li>
</ul>

<p>There now is a <tt style="background: #ebebeb; font-size: 13px;">--appstream-metainfo-output PATH</tt> argument for kpackagetool<br />
which switches the tool from STDOUT output mode to file output mode.<br />
This new mode is used by the kpackage macro to generate appstream data,<br />
meaning we won't be creating empty files anymore.</p>

<p>kpackagetool testing has been complicated a bit to make sure backwards<br />
compatible stdout output mode works as well as NoDisplay containing desktop<br />
files causing no empty files when used with the new file output mode.<br />
To implement the test NoDisplay checks have been made more aggressive as<br />
the data structure of Generic packages is actually incompatible with what<br />
we checked for in kpackagetool, the tool now tries very aggressively to<br />
find a NoDisplay property.</p>

<p>this fixes a majority of test issues caused by automatic creation of<br />
appstream data for plasma applets as they no longer create empty files.</p>

<p>CHANGELOG: kpackagetool now can output appstream data to a file</p></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">old tests pass</li>
<li class="remarkup-list-item">new test passes</li>
<li class="remarkup-list-item">plasma-workspace no longer generates bogus appstream xml files</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R290 KPackage</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D7069" rel="noreferrer">https://phabricator.kde.org/D7069</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>KF5PackageMacros.cmake<br />
autotests/CMakeLists.txt<br />
autotests/data/testpackage-nodisplay/contents.hash<br />
autotests/data/testpackage-nodisplay/contents/images/empty.png<br />
autotests/data/testpackage-nodisplay/contents/ui/main.qml<br />
autotests/data/testpackage-nodisplay/contents/ui/otherfile.qml<br />
autotests/data/testpackage-nodisplay/metadata.desktop<br />
autotests/kpackagetoolappstreamtest.cmake<br />
src/kpackagetool/kpackagetool.cpp<br />
src/kpackagetool/main.cpp</div></div></div><br /><div><strong>To: </strong>sitter, apol, sebas, mart<br /><strong>Cc: </strong>Frameworks<br /></div>