riscvarchive / riscv-qemu

QEMU with RISC-V (RV64G, RV32G) Emulation Support
385 stars 154 forks source link

RISC-V: Fix CONFIG_USER_ONLY build. #104

Closed sorear closed 6 years ago

sorear commented 6 years ago

Thanks @andreas-schwab for noticing. I've only tested it on a Hello World program, travis may have other ideas.

michaeljclark commented 6 years ago

Yes. Travis broke with some upstream changes. I merged a patch to fix Travis but builds are taking 50 mins. We need to have our own .travis.yml eventually when we automate some of the RISC-V specific tests.

michaeljclark commented 6 years ago

@sorear Oh. Reading the earlier messages in the libatomic_ops thread. That was the compile error I had that I mentioned on IRC, which went away for some reason (I didn't realize why at the time). I had reconfigured without linux-user as my primary development is on a mac. I didn't realize which I first did a test merge that I was shelled into a linux host, which was when I got the compile error.

I usually run linux-user tests on a remote Linux machine. We really need to add RISC-V smoke tests to the CI, including linux-user and the RISC-V specific machines in qemu-system-riscv. The upstream .travis.yml compiles all architectures, which causes travis timeouts, and it only does a make check. i.e. it doesn't boot Linux or run riscv-tests against qemu, so is not super useful other than, does it compile and pass make check.

I'm working on some CI dependencies presently, so we can eventually spin linux/bbl images using GitHub tag hooks and the GitHub deployment API...

These verilator images use Travis/Docker/GitHub deployment integration that build Ubuntu .deb and Centos .rpm packages in Docker and then uploads them automatically to a GitHub release:

https://github.com/sifive/verilator/releases

The plan is to do the same sort of thing for riscv-gnu-toolchain, so that repos like riscv-linux (or some other meta repos) could potentially spin kernel and root images when tagged. Of course to do this, we can't use the current model of building git submodules for things like the toolchain as it will take way too long do to that. We need to get each repo to build and upload packages, that can be used as dependencies in the test scripts for each component. So we'll eventually be able to get Travis to install pre-built toolchain packages to compile and package kernels, initramfs and buildroot images. riscv-qemu Travis will then be able to pull in binary images and run them.

This is work in progress for toolchain packages (the biggest dependency):

https://github.com/michaeljclark/riscv-gnu-toolchain/tree/master/docker-build

Compiling things like busybox can be done pretty quickly (much quicker than a kernel build).

michaeljclark commented 6 years ago

We'll have to cherry-pick a custom .travis.yml whenever we merge with upstream. v5 Travis got broken by the merge with upstream.