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

Re: Help with cross-satisfiability for binutils-sh-elf



Hi,

On Sat, Oct 09, 2021 at 01:19:57PM +0000, John Scott wrote:
> The following packages have unmet dependencies:
>  libc6-dev:riscv64 : Depends: linux-libc-dev:riscv64 but it is not installable
> 
> Now I wonder why it wants me to install libc6-dev:riscv64 and linux-
> libc-dev:riscv64; shouldn't libc6-dev-riscv64-cross and linux-libc-dev-
> riscv64-cross be sufficient? It seems libc6-dev:riscv64 is wanted
> because of zlib1g-dev:riscv64, which is a build dependency of mine.

Indeed, that's an aspect that is less than obvious. To understand it,
we'll need to figure out why there are both libc6-dev:riscv64 and
libc6-dev-riscv64-cross as well as linux-libc-dev:riscv64 and
linux-libc-dev-riscv64-cross and what their respective difference is.

Historically, the *-arch-cross packages came first. They predate
multiarch and they're usually constructed using dpkg-cross. Later, we
added multiarch and the *:arch packages became usable directly. Now
we're somehow in between these two worlds and neither solution satisfies
all requirements.

The *-arch-cross packages don't have working symbol files. So while you
can use them for cross building, you cannot use them for cross building
Debian packages. I'm not exactly sure what the problem is. It was
dpkg-shlibdeps failing or producing broken packages last time I checked.

Now why don't we remove those *-arch-cross packages? The basic issue is
that too many things cannot yet enable multiarch. We do want to be able
to install cross compilers without adding an architecture in some
settings. Beyond that, crossbuild-essential-arch cannot depend on *:arch
packages, because britney would consider that dependency unsatisfiable
(as it cannot deal with cross architecture dependencies) and it would
eternally block src:build-essential from migrating. As such, the
relevant build tools (sbuild and pbuilder) explicitly request those
*:arch packages in addition to crossbuild-essential-$arch.

There is a solution to this latter issue on the horizon, but it depends
on adding gcc-for-host aka #666743. We need help with reviewing and
testing that patch stack.

I hope that this answers your question. If it doesn't, please continue
asking.

Helmut


Reply to: