Yes that is exactly what I am describing, they don’t but should have. Not to their fault directly, the docs did not mention this requirement.
But many apps employ an unsuspicious CONFIG += sailfishapp_i18n in their .pro -file for qmake due to Jolla’s recommendation.
The instruction is not unsuspicious but incomplete. The docs did not portray packaging outside of the SDK. A user might add the configuration to their project by accident.
The SDK isn’t perfect, reproduceable builds are not part of it but rather the preference to lower the barriers for new developers to the cost of clean packaging.
This results in requiring both, lupdate and lrelease , which does not become obvious when using the Sailfish-SDK, because both are preinstalled inside the SDK; but both are not installed when using the Sailfish-OBS.
It is the indirection via CONFIG += sailfishapp_i18n 's undocumented requirement of lupdate and lrelease , which makes the errors in the build-log untraceable to their root cause without much research.
I wouldn’t call it much research, the SDK provides all the tools to find the dependency, e.g.: zypper search --provides /usr/bin/lupdate
But how easy it is to find the source depend on the expirience of the individual developer.
Recommends is not merely a hint to the user, pkcon or zypper can handle them and pull recommends by default. For rpm of course it is just meta information as rpm doesn’t handle dependencies outside of making sure that Requires is for-filled.