Hi, 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. Thanks! cheers, josch
signature.asc
Description: signature