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

Re: Unmet <package>:native dependency error when cross-compiling with dpkg-buildpackage

(moving this to debian-dpkg@ for a more on-topic list)

Quoting Guillem Jover (2021-12-08 20:10:22)
> The swig package is arch:all m-a:foreign, which is disallowed as the
> target of a :native arch-qualified dependency, and thus the dependency
> is not satisfiable. See:
>   https://git.hadrons.org/cgit/debian/dpkg/dpkg.git/tree/doc/multiarch.txt?h=pu/doc-multiarch-spec
> BTW, you might want to rise this kind of question in the
> debian-cross@l.d.o mailing list.

I hope this is not yet written down anywhere but what is the rationale for
disallowing a foo:native dependency on a m-a:foreign package?

I see that the table in the doc-multiarch-spec branch mirrors the original
table from https://wiki.ubuntu.com/MultiarchCross where foo:native on
m-a:foreign is also disallowed.

It makes sense that the other disallowed combinations are with foo:any as :any
explicitly exists for m-a:allowed packages. But why also disallow :native for

I would argue that:

 a) this argues the principle of least surprise -- if I am writing my
 Build-Depends and I know I want the build-architecture version of the package,
 then a package that explicitly claims to satisfy foreign architecture should
 satisfy the :native relationship

 b) if we mark a package that was m-a:no before as m-a:foreign, then we now
 also have to clean up all the B-D that were using :native before

IMHO, that table cell should not be "disallowed" but "any, preferably
DEB_BUILD_ARCH" just as it is for a normal B-D foo on a m-a:forein package.

So what is the reason for this being disallowed in practice?


cheers, josch

P.S.: whatever the reply to my query probably makes a good text for the "XXX
Document discrepancies and their rationale" part of multiarch.txt :)

Attachment: signature.asc
Description: signature

Reply to: