Home My Page Projects Dose: library and tools
Summary Activity Tracker Lists SCM Files

[#20821] dose-ceve -G strdeps incompatible with --deb-builds-from

Date:
2016-09-27 08:18
Priority:
3
State:
Open
Submitted by:
Johannes Schauer (josch)
Assigned to:
Nobody (None)
Summary:
dose-ceve -G strdeps incompatible with --deb-builds-from

Detailed description
This works:

dose-ceve --verbose -G strdeps -T dot --deb-native-arch=amd64 deb://Packages debsrc://Sources

But this doesn't:

dose-ceve --verbose -G strdeps -T dot --deb-native-arch=amd64 --deb-builds-from deb://Packages debsrc://Sources

The latter will produce no output despite exiting with 0.

Noting it down here to not forget to investigate this effect later.
Message  ↓
Date: 2016-10-12 08:42
Sender: Johannes Schauer

The reason for this is, that the "builds-from" relationship is encoded as a cudf dependency of binary packages to the source package they build from. Before strong dependencies are computed, Depsolver.trim is used to remove all uninstallable packages from the universe. Due to the added cudf dependency on source packages, it can easily happen that suddenly nothing is installable anymore if only a single package in the universe is not installable because now every package is connected to all other packages through their source packages. But even without using Depsolver.trim, the fundamental problem is, that the "builds-from" relationship is expressed as a cudf dependency very early during the deb822 parsing. This means that all later operations will consider the source package "dependency" as a real dependency. It is not obvious to me what the right solution for this is.

Naively, when I implemented the "builds-from" relationship, I was just looking for a way to connect binary packages to their source packages in the dependency graphs created by ceve. Doing this through the cudf encoding seemed to be the straight forward option. But with strong dependencies, this method doesn't look like a good solution anymore as the current implementation means that source package dependencies are also considered for the strong dependency computation which doesn't make any sense at all.

One possible fix would be to declare the --deb-builds-from option to be unfit for the generation of strong dependency graphs.

No Changes Have Been Made to This Item