Samuel Thibault, le dim. 25 août 2024 22:27:33 +0200, a ecrit: > Samuel Thibault, le dim. 25 août 2024 22:04:35 +0200, a ecrit: > > Samuel Thibault, le dim. 25 août 2024 22:01:32 +0200, a ecrit: > > > Samuel Thibault, le jeu. 22 août 2024 20:42:30 +0200, a ecrit: > > > > It happens that opensysusers, available on Debian Hurd, provides > > > > systemd-sysusers, but debootstrap is not smart enough to notice that. > > > > > > > > This dependency is coming from the dh_installsysusers helper. I proposed > > > > adding | systemd-sysusers there, but apparently the debhelper maintainer > > > > does not want this solution on the long run, and says that it's up to > > > > debootstrap to get smarter. Is it possible in a short enough term? > > > > > > > > > > Otherwise, what possibility do we have? Ask opensysusers to actually > > > > ship a systemd-sysusers package on non-Linux? > > > > > > That would risk messing up packages lists by having the same binary > > > package name in different source packages. > > > > > > Alternatively, I have tried adding an Arch:hurd-any Priority:important > > > base-opensysusers package that depends on opensysusers, and debootstrap > > > does unpack it before cron, thus fulfilling the dependency. > > > > Uh, no, I was actually still using a hack that puts it in the required > > set. > > > > Putting it in the important set doesn't seem enough, it gets unpacked > > after cron, I don't know why... > > Ah, that's probably because cron-daemon-common is a pre-dep. I'll try > making opensysusers be a pre-dep too.
That doesn't help. Looking at dpkg --predep-package, it just picks up some pre-dependency package, without any particular order beyond the hash table, so we can't have a guarantee that base-opensysusers gets installed before cron-daemon-common. And the dependencies are resolved by debootstrap by looking only at the *first* alternative (see in functions, elif [ "$1" = "GETDEPS" ]), I guess this is made so that the installed set is controlled. I.e. a Provides will not be the way debootstrap wants to operate. Another way that was suggested on irc is to hardcode something this: diff --git a/scripts/debian-common b/scripts/debian-common index 4a25654..cb4dbdd 100644 --- a/scripts/debian-common +++ b/scripts/debian-common @@ -75,6 +75,18 @@ work_out_debs () { EXCLUDE_DEPENDENCY="$EXCLUDE_DEPENDENCY usrmerge" ;; esac + + case $ARCH in + hurd-*) + # cron-daemon-common depends on systemd-opensysusers + # that opensysusers Provides, but debootstrap won't + # see that + case $base in *" cron "*) + required="$required opensysusers" + ;; + esac + ;; + esac } first_stage_install () { That's quite ugly but I currently don't really see another way? Samuel