Re: Freestanding arch
- To: Bastien Roucariès <rouca@debian.org>
- Cc: debian-devel@lists.debian.org, deity@lists.debian.org, debian-cross@lists.debian.org, doko@debian.org, debian-dpkg@lists.debian.org, skitt@debian.org, helmut@freexian.com, Paul Wise <pabs@debian.org>
- Subject: Re: Freestanding arch
- From: Guillem Jover <guillem@debian.org>
- Date: Tue, 26 Nov 2024 01:29:40 +0100
- Message-id: <[🔎] Z0UWdE28s_Dyt7Cj@thunder.hadrons.org>
- Mail-followup-to: Bastien Roucariès <rouca@debian.org>, debian-devel@lists.debian.org, deity@lists.debian.org, debian-cross@lists.debian.org, doko@debian.org, debian-dpkg@lists.debian.org, skitt@debian.org, helmut@freexian.com, Paul Wise <pabs@debian.org>
- In-reply-to: <[🔎] 3464202.FnV7SJ3yrF@portable-bastien>
- References: <[🔎] 3510330.UkGL1bqpSd@portable-bastien> <[🔎] 3464202.FnV7SJ3yrF@portable-bastien>
Hi!
On Sun, 2024-11-24 at 16:09:42 +0000, Bastien Roucariès wrote:
> Le dimanche 24 novembre 2024, 12:06:26 UTC Bastien Roucariès a écrit :
> > I plan to implement freestanding architecture specification.
> > Following Toulouse debian mini debconf and javascript presentation it will be really helpful as a first step
> >
> > https://wiki.debian.org/Teams/Dpkg/Spec/FreestandingArches
> >
> > First likley to be implemented will be UEFI arch.
> >
> > Any pointer for dpkg code to modify/test will be helpful.
I've had the following branch for a while:
<https://git.hadrons.org/cgit/debian/dpkg/dpkg.git/commit/?h=pu/arch-none>
The main problem is that the «none» part involves both a bit weird or
unexpected semantics, and to add support for it, would imply modifying
not only all currently known code handling build dependencies and
architecture fields from debian/control, but also the magic run-time
matching from the base arches to their «none» compatible counterparts
(with implicit arch tuples; and thus expose their internal representation
to layers that have not had to care at all about this).
The weird/unexpected semantics are related to the fact that «any» will
currently match «none», so this cannot even be used right now, as you'd
get a full arch with the none-arch buildds trying to build pretty much
the whole distribution, and not being able to discern what is
specifically relevant. Then, if we managed to change every arch
comparators, there's the problem that then «any» no longer would match
_any_ arch value, which seems strange to me. I mean we have the «all»
arch which is similar in the sense that «any» does not match it, so I
guess it could be thought in similar terms. Or there could be the
alternative though, to extend our handling of «all» to make it more
fine grained, so we could have:
all-amd64
linux-all
musl-all-all
(AFAIR this has been brought up in the past, but I don't have references
at hand and I cannot recall who proposed this first, whether it was me,
perhaps Paul Wise, or someone else?)
This might perhaps(?) be less confusing than using «none», and
certainly more generic and probably more useful for more things, but it
would still imply several of the problems mentioned above.
In the end, while something like this could be implemented, as I
mentioned last time you asked, IMO this needs to be discussed first with
the various infrastructure teams, and whether they could see something
like this being supported (say in the archive adding the partial repos
for these arches, in d-i by adding these as part of the installation,
as part of the release process to handle potential cross arch
dependencies, etc), otherwise, while I think in an ideal world it might
be nice to have support for it, it would be kind of a wasted effort.
And in general terms we should also be thinking what are the actual
benefits, compared to the amount of work and infrastructure and
documentation changes that this might imply.
I think adding this to the GNU config project might have similar
consequences with how GNU triplets might get matched and normalized?
And AFAIR, GNU config does not even have a concept of something like
«none» or «all».
> > for adding uefi triplet (https://wiki.debian.org/Teams/Dpkg/FAQ#Q._Can_we_add_support_for_new_dpkg_architectures.3F)
> > - UEFI was added to config
> > - binutils status and gcc is for me unknown. Help welcome here (dokko, skitt ?)
I think it depends how this would look like, but in general I think if
we consider UEFI as a sort of an OS with a specified ABI, then this
seems less of a «none»/generalized-«all» arch, and adding it would have
similar problems with how to decide not to build for such UEFI buildd.
> This the patch I plan to debian arch
Adding the definitions has never really been the problem. The problem
is finding semantics that make sense and do not have weird/unexpected
behavior, and I guess ideally that do not require modifying the entire
build dependency parsing code around nor architecture handling in all
the relevant projects (but perhaps this last point is not possible to
avoid).
Thanks,
Guillem
Reply to: