Hi!

On Fri, 2016-02-12 at 10:40:53 +0000, Alex Willmer wrote:
> On 11 February 2016 at 18:22, Guillem Jover <guil...@debian.org> wrote:
> > On Thu, 2016-02-11 at 14:34:27 +0000, Alex Willmer wrote:
> >>  [1] https://lists.debian.org/debian-mentors/2016/02/msg00126.html
> >
> > Great! I see it already covers most of the points in
> > <https://wiki.debian.org/Teams/Dpkg/FAQ#Q._Can_we_add_support_for_a_new_dpkg_architecture.3F>
> 
> Thank you :) I swear I looked for such a document, sorry I missed it.
> 
> > but I've got some inguiries.
> > (I've done some updates there just now. :)
> 
> By my reading CloudABI currently falls foul of  "nor it should expose
> it as unknown in the GNU triplet names". Are you saying the GNU
> triplet returned by GNU config should be changed from
> x86_64-unknown-cloudabi?

If that's what config.guess returns then that's fine from the GNU config
point view, but for dpkg we just ignore the vendor field. GNU config
knows when to add the vendor field if it's missing, for example:

  $ /usr/share/misc/config.guess
  x86_64-pc-linux-gnu
  $ usr/share/misc/config.sub x86_64-linux-gnu
  x86_64-pc-linux-gnu

For CloudABI, doing some checking:

  $ /usr/share/misc/config.sub x86_64-cloudabi
  x86_64-pc-cloudabi

and reading the code, it confirms that «-cloudabi*» by itself is the
os/abi component, so «unknown» here is definitely the vendor.

> >> --- ostable   2015-11-26 23:53:38.000000000 +0000
> >> +++ ostable   2016-02-09 14:30:44.000000000 +0000
> >> @@ -37,3 +37,4 @@
> >>  uclibceabi-uclinux   uclinux-uclibceabi      uclinux[^-]*-uclibceabi
> >>  uclibc-uclinux               uclinux-uclibc          
> >> uclinux[^-]*(-uclibc.*)?
> >>  tos-mint             mint                    mint[^-]*
> >> +cloudabi-unknown     unknown-cloudabi        unknown[^-]*-cloudabi
> >
> > Oh so this means the same binary could be run on FreeBSD, Linux, the
> > Hurd, etc. (as long as the system has been ported to support those
> > executables? Nice.
> 
> Correct, for a given CPU a cloudabi binary should run regardless of
> the underlying kernel.

Ah nice!

> > In any case I assume the unkwown here is referring to the vendor? Such
> > as «pc» or similar, instead of the kernel? In which case this should
> > not be present at all.
> 
> I believe it is the vendor field. Which if I understand you (and the
> updated FAQ) would make the ostable addition
> 
> # <Debian name> <GNU name> <config.guess regex>
> cloudabi-none     cloudabi        cloudabi[^-]*

Right.

> and the triplettable addition
> 
> # <Debian triplet>      <Debian arch>
> # cloudabi-none-<cpu> cloudabi-<cpu>
> 
> since cloudabi is "kernel independent".

Well, given that cloudabi is not a kernel, I'd use a Debian arch name
with a three elements-form, so that it does not get confused with a
kernel. Similar to the musl or uclibc arches, but with none for
kernel. Say «cloudabi-none-<cpu> cloudabi-none-<cpu>».

> Finally, to avoid confusion. My understanding is:
> 1. "dpkg architecture [name]" in that FAQ and "<Debian triplet>" in
> triplettable refer to the same identifier

Not quite. The architecture name is the external representation, used
by most things in Debian: fields in debian/control, in .deb filenames,
etc. The Debian triplet is the internal representation used by dpkg to
have a unified representation so that it can do proper matching with
wildcards, and to be able to convert from and to GNU triplets.

> 2. "Multiarch Architecture Specifiers (Tuples)" in
> https://wiki.debian.org/Multiarch/Tuples is a distinct identifier from
> 1.

The multiarch architecture tuples exist mostly to cope with the i386
odd case in Debian (fortunately or unfortunately depending how you
look at it), which uses a different name depending on the base ISA we
compile for.

But you don't need to worry about this, because dpkg-architecture will
take care of this for you.

Thanks,
Guillem

Reply via email to