Hi Adrian,

thank you for weighing in!

Quoting Adrian Bunk (2023-07-20 01:27:10)
> 
> Package: box64
> Architecture: amd64 arm64 ppc64el riscv64
> Depends:
>  libgcc-s1:amd64,
>  libstdc++6:amd64,
> 
> A package must not assume that the user has other architectures enabled.

why not? Is this codified in a policy somewhere? If foreign architectures are
not enabled, box64 would just not be installable but there are tons of packages
I cannot install on my system without the package itself being buggy (for
example due to Conflicts).

If I just drop these dependencies, that would make the package have an RC bug
because box64 cannot function without amd64 shared libraries.

> There is a general issue around such dependencies, and also the more specific
> problem that permitting cross-architecture dependencies would also require
> checking that migrating a package for one architecture does not break
> dependencies on other architectures.
> 
> For box64, using libgcc-s1-amd64-cross and libstdc++6-amd64-cross might be an
> option (untested).

Those packages install their libraries into /usr/<triplet> which is not
searched by the dynamic linker. Maybe some LD_LIBRARY_PATH trickery can make it
work but those shared libraries are not meant for running actual binaries.

Originally, box64 upstream shipped their own binary blobs of libstdc++.so.6 and
libgcc_s.so.1 and installed them into /usr/lib/x86_64-linux-gnu/. This is of
course not an option either as that would conflict with users who do have amd64
packages installed and would also make the package violate DFSG for shipping
binaries without source.

It seems that the correct way forward would be to teach britney about foreign
architecture dependencies? I had a look at the britney source and it seems to
ship with its own dependency resolver instead of relying on dose3, for example.
Teaching it about foreign architectures looks like a massive change...

Thanks!

cheers, josch

Attachment: signature.asc
Description: signature

Reply via email to