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

Re: Bug#792281: texlive-latex-base: not Multi-Arch: foreign


Quoting Norbert Preining (2015-09-22 14:57:44)
> I have now built tex-common and src:texlive-bin according to the
> discussed changes:
> > tex-common, texlive-lang, telxive-doc, texlive-base
> >       M-A: foreign
> > texlive-binaries:     M-A: foreign
> > lib*, lib*-dev:               M-A: same
> > luatex:       M-A: foreign (dummy transitional package)
> and then tried to install the :i386 versions in a clean chroot
> (cowbuilder) of amd64 arch. First adding the new arch with
> dpkg --add-architecture i386 I then tried to install texlive-binaries:i386,
> which failed badly, due to:
>         texlive-binaries:i386 depends perl:i386
>         perl:i386 depends perl-base:i386
>         perl-base:i386 conflicts perl-base
> The dependency that we have here is not strictly on a perl:i386, we just
> need *any* perl interpreter for several scripts that are necessary
> to be run (in particular updmap and fmtutil).

The adding of Multi-Arch:foreign to texlive-binaries was done precisely so that
one would *not* have to install a foreign arch version of texlive-binaries to
satisfy a dependency of a package of foreign architecture or to satisfy a
crossbuild dependency. In your setup, on amd64, your texlive-binaries:i386 can
be executed. But when crossbuilding for, say, armhf on amd64, then we cannot
execute any binaries of the package texlive-binaries:armhf and our build would
fail even if we could install texlive-binaries:armhf. Instead, and because the
interface texlive-binaries provides is architecture independent, we suggested
to mark it as M-A:foreign. That way, the package texlive-binaries:amd64 which
we *can* execute on our amd64 box is able to satisfy the dependency which
before only texlive-binaries:armhf could.

In other words: imagine a source package build depending on texlive-binaries to
build its documentation. Now we want to crossbuild that source package on amd64
for armhf. Before texlive-binaries was marked M-A:foreign by you, when building
that source package it would try installing texlive-binaries:armhf which would
probably fail because of a dependency problem. But even if it would succeed,
we'd not be able to execute any programs from it because they are armhf.
Instead, since we want to build our latex documentation, we'd like to install
texlive-binaries:amd64. In fact, no matter for which architecture we cross
compile, we always want texlive-binaries:amd64 to satisfy that dependency. This
can be achieved by marking texlive-binaries as M-A:foreign as it was done. Now
texlive-binaries:amd64 can satisfy a dependency that before needed
texlive-binaries of a foreign architecture.

So testing whether it was correct to mark texlive-binaries as M-A:foreign does
*not* involve installing it of a foreign architecture. In fact, the advantage
we now have is, that in theory we *never again* need to install
texlive-binaries of a foreign architecture.

Instead, if you want to test whether the marking of texlive-binaries as
M-A:foreign was correct, you should either:

 - install a package in a foreign architecture that depends on texlive-binaries
 - crosscompile a source package that build depends on texlive-binaries (but I
   hear Helmut already did that successfully)

But there exists no test that can give you a final binary answer whether or not
it was okay to mark texlive-binaries as M-A:foreign. There are just a number of
tests like the two above that can give you a higher confidence that it was the
correct choice.


cheers, josch

Attachment: signature.asc
Description: signature

Reply to: