On 2015-10-13 16:54, Christoph Cullmann wrote:
Hi,
I'm not sure whether it's the best solution. The problem you try to
fix with
it is distros breaking packaging. I agree with Martin K that this is
a huge
problem and that it will happen - since the automation of packages I
also
experienced that nobody looks at the output of optional dependencies
and the
packaging breaks.
Given that I don't think we want an ENABLE_MINIMAL_DEPENDENCIES
switch, but
rather a mode which will break if not found during distro builds.
Something like a "STRONGLY_RECOMMENDED" which is turned into
"REQUIRED" if
distros build (and maybe also kdesrc-build), but is optional if
anybody else
builds.
But I'm not sure how this could be done. Anyway, long story short: I
think we
need the other way around. It should be optional by default, but
should be
turned into stricter requirements on the linux distro case.
I would be happy with such an solution, too.
But I am not that optimistic that this is easy to achieve, how to
ensure all
distros
turn this magic on?
The opposite direction at least would avoid the distro breakage and
still allow
optional compiles for the "3rd party wants less dependencies" or
"other platform
wants
less dependencies" use case.
Even if not optimal, some ENABLE_MINIMAL_DEPENDENCIES would in my eyes
still
better than
the current situation, were either we have optional stuff that will
make us
unhappy because
of broken distro packages or the devs unhappy that need to patch
dependencies
out on their own.
e.g. Kåre did in most cases exactly that for the Windows build
(g...@git.kde.org:scratch/sars/kate-windows),
which IMHO is sad.
My ECM proposal would be the following:
1) add to KDECMakeSettings.cmake:
################ Dependencies mode ####################################
if(KDE_SKIP_FULL_DEPENDENCIES)
unset(KDE_FIND_REQUIRED_OR_OPTIONAL)
set(KDE_TYPE_REQUIRED_OR_OPTIONAL "OPTIONAL")
else()
set(KDE_FIND_REQUIRED_OR_OPTIONAL "REQUIRED")
set(KDE_FTYPE_REQUIRED_OR_OPTIONAL "REQUIRED")
endif()
2) use that e.g. in knotifications:
find_package(Phonon4Qt5 4.6.60 ${KDE_FIND_REQUIRED_OR_OPTIONAL}
NO_MODULE)
set_package_properties(Phonon4Qt5 PROPERTIES
DESCRIPTION "Qt-based audio library"
TYPE ${KDE_TYPE_REQUIRED_OR_OPTIONAL}
PURPOSE "Required to build audio notification support")
That would at least make people happy that want no missing features and
allow
me and others to work on minimizing the dependencies without annoying
others.
If there is some magic way to set KDE_SKIP_FULL_DEPENDENCIES for
non-distro builds,
that could be added later inside KDECMakeSettings.
I'm not a fan of the variable names - in particular, I think your
original idea for an option name was better than
"KDE_SKIP_FULL_DEPENDENCIES" - the existing KDE_SKIP_* variables are
meant as things project authors define if they only want part of the
module functionality, rather than as something for users/packagers to
set. KDE_FIND_REQUIRED_OR_OPTIONAL also tells me essentially nothing
about *why* it might be REQUIRED or optional when I'm reading the
source.
That said, I'm on board with the overall idea.
Alex
_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel