Alistair Francis <alistai...@gmail.com> writes:

> On Fri, Jun 23, 2023 at 8:29 PM Alex Bennée <alex.ben...@linaro.org> wrote:
>>
>>
>> Alistair Francis <alistai...@gmail.com> writes:
>>
>> > On Thu, Jun 1, 2023 at 4:58 AM Alex Bennée <alex.ben...@linaro.org> wrote:
>> >>
>> >>
>> >> Brian Cain <bc...@quicinc.com> writes:
>> >>
>> >> >> -----Original Message-----
>> >> >> From: Alex Bennée <alex.ben...@linaro.org>
>> >> >> Sent: Wednesday, May 31, 2023 6:24 AM
>> >> >> To: Daniel P.Berrangé <berra...@redhat.com>
>> >> >> Cc: qemu-devel <qemu-devel@nongnu.org>; Michael Tokarev
>> >> >> <m...@tls.msk.ru>; Erik Skultety <eskul...@redhat.com>; Brian Cain
>> >> >> <bc...@quicinc.com>; Palmer Dabbelt <pal...@dabbelt.com>; Alistair 
>> >> >> Francis
>> >> >> <alistair.fran...@wdc.com>; Bin Meng <bin.m...@windriver.com>
>> >> >> Subject: How do you represent a host gcc and a cross gcc in lcitool?
>> >> >>
>> >> >> WARNING: This email originated from outside of Qualcomm. Please be 
>> >> >> wary of
>> >> >> any links or attachments, and do not enable macros.
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> While trying to convert the debian-riscv64-cross docker container to an
>> >> >> lcitool based one I ran into a problem building QEMU. The configure 
>> >> >> step
>> >> >> fails because despite cross compiling we still need a host compiler to
>> >> >> build the hexagon codegen tooling.
>> >> >
>> >> > I thought we'd fixed this container definition so that we only
>> >> > downloaded the hexagon toolchain instead? Do we really need a host
>> >> > compiler for that container build?
>> >> >
>> >> > Or am I misunderstanding and you're referring to features required to
>> >> > support idef parser? Does "hexagon codegen" refer to hexagon's TCG
>> >> > generation or hexagon code itself (required by tests/tcg)?
>> >>
>> >> I think so:
>> >>
>> >> #
>> >> #  Step 1
>> >> #  We use a C program to create semantics_generated.pyinc
>> >> #
>> >> gen_semantics = executable(
>> >>     'gen_semantics',
>> >>     'gen_semantics.c',
>> >>     native: true, build_by_default: false)
>> >>
>> >> semantics_generated = custom_target(
>> >>     'semantics_generated.pyinc',
>> >>     output: 'semantics_generated.pyinc',
>> >>     command: [gen_semantics, '@OUTPUT@'],
>> >> )
>> >> hexagon_ss.add(semantics_generated)
>> >>
>> >>
>> >> >
>> >> >> After scratching my head for a while I discovered we did have host 
>> >> >> GCC's
>> >> >> in our cross images despite there being no explicit request for them in
>> >> >> the docker description. It turned out that the gcovr requirement pulled
>> >> >> in lcov which itself had a dependency on gcc. However this is a bug:
>> >> >>
>> >> >>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987818
>> >> >>
>> >> >> which has been fixed in bookworm (and of course sid which is the only
>> >> >> way we can get a riscv64 build of QEMU at the moment). Hence my hacky
>> >> >> attempts to get gcc via side effect of another package failed.
>> >> >>
>> >> >> Hence the question in $SUBJECT. I tried to add a mapping to lcitool for
>> >> >> a pseudo hostgcc package:
>> >> >>
>> >> >> +  hostgcc:
>> >> >> +    default: gcc
>> >> >> +    pkg:
>> >> >> +    MacOS:
>> >> >> +    cross-policy-default: skip
>> >> >>
>> >> >> however this didn't work. Do we need a new mechanism for this or am I
>> >> >> missing a way to do this?
>> >> >>
>> >> >> RiscV guys,
>> >> >>
>> >> >> It's clear that relying on Debian Sid for the QEMU cross build for 
>> >> >> RiscV
>> >> >> is pretty flakey. Are you guys aware of any other distros that better
>> >> >> support cross compiling to a riscv64 target or is Debian still the best
>> >> >> bet? Could you be persuaded to build a binary docker image with the
>> >> >> cross compilers and libraries required for a decent cross build as an
>> >> >> alternative?
>> >
>> > It's probably not very helpful, but I find Arch based distros to be
>> > the best bet for this.
>>
>> I've never tried arch under docker, isn't it just as much of a moving
>> target?
>
> I haven't really tried Arch under Docker. I agree that it is a fast
> moving target. I guess it's up for debate if it's too much churn or
> not
>
> Would a working Arch image be helpful with lcitool?
>
>>
>> > Are you still looking for a Docker image? I could try and get
>> > something working
>>
>> Yes, although I have converted debian-riscv64-cross to lcitool and had
>> it working sid has since broken. Are there any pushes to have riscv as a
>> first class distro citizen soon or is stuff still in the early ports
>> stage?
>
> There are pushes. I thought RISC-V was progressing towards first class
> distro support, but it seems to have stalled recently.
>
> I actually thought you could cross compile with Debian bullseye, yet
> alone bookworm, has someone tried? Otherwise I can give it a crack

No.

There is a riscv64 compiler and libc in bullseye onwards which we use
for building tests. However to do a full cross compile you need a
multi-arch setup. As riscv64 is still in ports the only way to achieve
this is to use sid.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro

Reply via email to