[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: The purpose of marking a package Multi-Arch: foreign



On 2022-01-16 12:56 -0500, Tong Sun wrote:
> On Fri, Jan 14, 2022 at 4:42 PM Tong Sun wrote:
> 
> I have a question regarding marking
> golang-github-danverbraganza-varcaser-dev Multi-Arch: foreign
> what's the purpose of it?
> 
> I did find an explanation from https://wiki.debian.org/Multiarch/HOWTO:
> 
> > If a package is marked 'Multi-Arch: foreign', then it can satisfy dependencies of a package of a different architecture (e.g 'debhelper:amd64' will satisfy a dependency on debhelper for any-architecture package).
> 
> Yet, I'm unable to digest that -- e.g., why an arm64 architecture
> needs dependencies of a package from amd64?

I find it helpful to think of packages as 'tools' or
'libraries'. Tools are those packages marked MA:foreign, and their use
is architecture-independent. e.g. 'doxygen' or 'ps2pdf' does the same
thing whatever arch you run them on - they spit out some
documentation. If when cross-building for arm64 (on amd64) the build
asks for 'ps2pdf' to process a file, it's fine if that dependency is
fulfilled by the amd64 ('foreign arch') version. For things like
libraries the build-dependency can only be satisfied by a
matching-arch (arm64 in this case) package, because library linking
only works between libraries of the same architecture.

The point being than when cross-building on amd64 you cannot run most
other architecture tools. Only amd64 (and i386) will actually work, so
it is usless to satisfy a build-dependency for something that will
actually get run ('tools') with an arm64 arch package.

Does that help?

> 
> I guess I don't understand the concept and implication of Debian's
> cross built, as I see that easygen is being cross built without
> 'Multi-Arch: foreign', yet golang-github-danverbraganza-varcaser-dev
> is not, despite having the 'Multi-Arch: foreign' .
> 
> https://buildd.debian.org/status/package.php?p=easygen vs.
> https://buildd.debian.org/status/package.php?p=golang-github-danverbraganza-varcaser

This is not cross-building. This is native building. Cross-building is
building one package on a machine of another architecture.

Wookey
-- 
Principal hats:  Linaro, Debian, Wookware, ARM
http://wookware.org/

Attachment: signature.asc
Description: PGP signature


Reply to: