[I didn't write the wiki page in question here, but perhaps I can help
to clarify it.]

On Thu, Jan 24, 2013 at 08:09:25PM +0100, Sandro Tosi wrote:
> On Thu, Jan 17, 2013 at 5:13 AM, Wookey <woo...@wookware.org> wrote:
> > That's not what that paragraph says. Sorry if it's confusing. You
> > shouldn't add M-A: foreign if the package isn't arch-independent in
> > it's _effects_ (i.e you should set M-A: foreign if the package's
> > _effect_ is arch-independent). Whether the package itself is arch :any
> > or not is not relevent. So fdupes will find duplicate files just the
> > same if you run the arm version or the sparc version or the i386
> > version. That makes it M-A: foreign.
> 
> I don't get why it wouldn't find duplicate files. The same I don't get
> why it would need to add that, in particular because you skipped the
> part about apt solution, would would avoid to "fix" (?) several
> packages.

The bit in that page about apt is not relevant to fdupes anyway, since
fdupes is Architecture: any, not all.

Here's the deal given apt's current behaviour (I'm simplifying a bit to
avoid boredom, but this at least covers any/all and foreign/not):

  1) Architecture: any, not M-A: foreign

    These packages contain architecture-dependent code, and also have
    architecture-dependent effects: that is, you need to pick the build
    of the package for the correct architecture.

    For example, libraries are generally like this, as are some tools
    that only operate on objects of the same architecture (say,
    binutils).  This is a safe conservative default for Architecture:
    any packages, since it's how all such packages worked before
    multiarch came along.

  2) Architecture: any, M-A: foreign

    These packages contain architecture-dependent code, but it really
    doesn't matter which architecture you get as long as you can execute
    the binaries.

    Many simple tools are like this, although we can't safely assume
    that any given tool will be like this without being told; failing to
    cross-build something because we can't satisfy its
    cross-build-dependencies is better than cross-building it
    incorrectly, and likewise for run-time uses of multiarch.

  3) Architecture: all, not M-A: foreign

    These packages contain architecture-independent code, but they may
    only satisfy dependencies of packages of the primary architecture or
    of other packages that are also Architecture: all.  The reason for
    this restrictions is to avoid breaking pre-multiarch assumptions of
    packages that depend on Architecture: all packages and assume that
    *their* (transitive) dependencies will be resolved using the native
    architecture.

    A package that contained an architecture-independent tool but that
    also depended on libfoo-dev might be in this category.

  4) Architecture: all, M-A: foreign

    These packages contain architecture-independent code, and they may
    satisfy dependencies of packages of any architecture.  Most
    architecture-independent packages fall into this category.

Steve's proposal in #666772 is to say that we don't need to be
ultra-conservative for cross-build-dep handling, and for that purpose we
can treat 3) like 4).  Based on my experience with cross-building, I
tend to agree that that makes sense - but it doesn't have any effect on
this bug either way.

It would not make sense to extend #666772 to Architecture: any packages,
because very many of those *do* have architecture-dependent effects; all
that this would achieve would be having to add a roughly similar number
of Multi-Arch: tags to packages in the other direction.

> > If you could explain why you misunderstood the "When shouldn't I add
> > M-A: foreign?", I'll try and improve the wording.
> 
> Well, if you start a paragraph saying "When the package is not
> arch-independent" that means to me it's arch:any, short-cut, that
> package is not requires a M-A: foreign.

The full sentence you're quoting is:

  When the package is not arch-independent in its effects, i.e if you
  run the wrong-arch version it will operate on the wrong files or
  produce the wrong output.

The "in its effects" matters here.  That is, binutils is
architecture-dependent in its effects, because (for example) the armhf
version of nm operates only on armhf objects while the i386 version of
nm operates only on i386 objects; but the effects of fdupes are
architecture-independent, even though it happens to be a compiled
executable.

Architecture: any packages are precisely those which are rather evenly
divided between those where the architecture you get matters and those
where it doesn't.  A substantial number of them have already correctly
had Multi-Arch: foreign added to them, and fdupes should too.

Does this help?

-- 
Colin Watson                                       [cjwat...@debian.org]


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to