Re: How to determine runtime-/build-only dependencies

[email protected] Mon, 19 Jan 2026 20:03:27 +0900
Newsgroups gmane.comp.kde.devel.general
Message-ID <[email protected]>
It includes Both runtime and build time dependencies.
There is a RuntimeDependencies field for deps that are Only runtime dependencies but that is inconsistently applied.

2026/01/19 16:51 Rafael Sadowski <[email protected]>:

On Sun Jan 18, 2026 at 01:15:33PM -0500, Neal Gompa wrote:&#13;

> On Sun, Jan 18, 2026 at 11:30 AM Rafael Sadowski <[email protected]> wrote:&#13;

> >&#13;

> > On Mon Jan 19, 2026 at 01:18:59AM +0900, [email protected] wrote:&#13;

> > > OpenBSD has precompiled binary packages and&#13;

> > > > The ports tree is meant for advanced users. Everyone is encouraged to&#13;

> > > use the pre-compiled binary packages.&#13;

> > > > https://www.openbsd.org/faq/ports/ports.html&#13;

> > > So there is still a distinction between build-time and runtime.&#13;

> > >&#13;

> > > 2026/01/18 23:57 Neal Gompa <[email protected]>:&#13;

> > >&#13;

> > > On Sun, Jan 18, 2026 at 9:45 AM Rafael Sadowski&#13;

> > > <[email protected]> wrote:&#13;

> > > >&#13;

> > > > Hi KDE Community,&#13;

> > > >&#13;

> > > > I'm currently working on mapping the dependencies for the OpenBSD&#13;

> > > > packages properly. I've started analysing the .kde-ci.yml.&#13;

> > > >&#13;

> > > > In OpenBSD, we have RUN_-, BUILD_- and LIB_DEPENDS. RUN_DEPENDS&#13;

> > > must&#13;

> > > > be installed alongside the package. BUILD_DEPENDS must be present&#13;

> > > > at build time but not linked against lib/bin and finally&#13;

> > > LIB_DEPENDS&#13;

> > > > which link against bin/lib.&#13;

> > > >&#13;

> > > > Let's take a look at frameworkintegration-6.22.0 for example:&#13;

> > > >&#13;

> > > > We have the following LIB_DEPENDS:&#13;

> > > >&#13;

> > > > LIB_DEPENDS = devel/kf6/attica>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/kcolorscheme>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/kconfig>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/kcoreaddons>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/ki18n>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/kiconthemes>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/knewstuff>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/knotifications>=${MODKF6_VERSION} \&#13;

> > > > devel/kf6/kwidgetsaddons>=${MODKF6_VERSION}&#13;

> > > >&#13;

> > > > That's easy, because we scan all bin/libs to determined all used&#13;

> > > > libs correctly. This This is recorded in WANTLIB. This means that&#13;

> > > > it is immediately apparent if something is missing:&#13;

> > > >&#13;

> > > > WANTLIB += ${COMPILER_LIBCXX} GL KF6Attica KF6ColorScheme&#13;

> > > KF6ConfigCore&#13;

> > > > WANTLIB += KF6CoreAddons KF6I18n KF6IconThemes KF6NewStuffCore&#13;

> > > > WANTLIB += KF6Notifications KF6WidgetsAddons Qt6Core Qt6DBus&#13;

> > > Qt6Gui&#13;

> > > > WANTLIB += Qt6Network Qt6Widgets c m&#13;

> > > >&#13;

> > > > In other words, we can correctly determine shared library&#13;

> > > dependencies, but&#13;

> > > > now it gets exciting, but .kde-ci.yml says even more dependencies,&#13;

> > > namely:&#13;

> > > >&#13;

> > > > KDE_DEPENDS = devel/kf6/kconfigwidgets \&#13;

> > > > devel/kf6/kguiaddons \&#13;

> > > > devel/kf6/kio \&#13;

> > > > devel/kf6/kitemviews \&#13;

> > > > devel/kf6/oxygen-icons \&#13;

> > > > devel/kf6/kpackage&#13;

> > > >&#13;

> > > > I determined KDE_DEPENDS based on kde-ci.yml. Now I'm wondering&#13;

> > > > how to deal with it. Are these just build dependencies, or also&#13;

> > > > runtime dependencies, or both? What's the best way to determine&#13;

> > > > this? Can I even do that? What would be the best strategy for&#13;

> > > > distributions?&#13;

> > > >&#13;

> > > Correct me if I'm wrong, but don't ports imply that these things are&#13;

> > > compiled on the user's computer? Doesn't that mean the distinction&#13;

> > > of&#13;

> > > build-time and run-time is not particularly strong?&#13;

> > > --&#13;

> >&#13;

> > We build the official packages from the ports. I take care of the KDE/Qt ports&#13;

> > so that we can distribute the packages cleanly with all dependencies.&#13;

> >&#13;

> > The build time is particularly very strong because our distributed ports&#13;

> > builder depends on all dependencies being present in order to compile&#13;

> > the port into a package (for the official packages).&#13;

> >&#13;

> > RUN_DEPENDS is important because when the user installs the package, it&#13;

> > ensures that all RUN_DEPENDS and LIB_DEPENDS are installed.&#13;

> >&#13;

> &#13;

> So at least with RPM distributions (and to a lesser extent Debian as&#13;

> well), most runtime dependencies are automatically populated by&#13;

> reading the binaries and identifying the packages that include the&#13;

> libraries. That leaves largely the QML stuff and executables to be&#13;

> added as dependencies manually.&#13;

> &#13;

> Do you have a mechanism to do something similar with your ports?&#13;

> &#13;

&#13;

As already described, yes we have the binary/libraries analysis.&#13;

Referring to the example above for frameworkintegration: kpackage is NOT&#13;

a dependency of libraries/binaries but appears in .kde-ci.yml. How to&#13;

deal with this: is it ONLY a build dependency OR ONLY a run dependency&#13;

OR both? &#13;

&#13;

The AND or OR or BOTH is my challenge.&#13;

&#13;

Rafael&#13;