Bug#1079374: debootstrap: Needs to look through Provides
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
Reply to: