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

    From Wookey@21:1/5 to Tong Sun on Sun Jan 16 21:10:02 2022
    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/

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEER4nvI8Pe/wVWh5yq+4YyUahvnkcFAmHke1gACgkQ+4YyUahv nkfiyhAAk2GRTZGUxwdiGBld+CB5R6NPnweosu9X/3iDCIYweWPrdHJ0GUFLeUT7 5sVQlN8hDqSBv8gzus6SbKkwFEyEUHH9W5u1RLLwNybFzcESotmewX7x4XgkEdNT PgsU1GNllv/rDjL4FpMCBAOaRUQvg+ucz9kg0bnCYHhVKGqeVevmtTp1pJfQ8ZQt 6bi9XMleCqedzNtYtYHVOOYV9V7pHzUhftM5ObAAUyiTUOPtyJdDUr0a3YlynTtu ulnjVzZrt48BHsQvuRicJmOwyATi7Txzxc0X3x/WO8L6yS6KbWzbBVJ+ozsGwwgW FJn51bR7SH0ap5tv7K3no0PA02+UgAtB+4yZQjQpTAC0ETPPVkQyKoHKlEaGBDAI r+EBzpr1X/KxpMyanGMfYEbIuxO9YHJDZAp+i8jwMBaraQ0fhJ56U19YQOquj3jb DkLTCfQYDdd6e0X3CYC4/bnISJ+lYSAP2hdwjFzimO+/skQ26sWmV/7Nwq95YEO0 OyeJYKZEZ4MvEqhMP5uze2isjv2PnqsIFRv5aAFy6OJzAHtTrutFnVXSsKUF54ay PXfQHrZJNf0900heg+R+es+7lWIhcPOuCA/ErJQbMxn5+2UOKTwXIieXUVMp5wPJ KQ7Wp7s20MAYfE6PgqWVnQZ3MBXUTyWjoZ2myT3mN2Zr87bQ1Nk=
    =dRHx
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)