[PATCH 1/1] Dockerfile: compile QEMU for Nokia N900 emulation

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Jul 13 23:27:40 CEST 2020


On 13.07.20 19:20, Tom Rini wrote:
> On Mon, Jul 13, 2020 at 07:10:46PM +0200, Heinrich Schuchardt wrote:
>
>> For the Nokia N900 emulation we need a special QEMU version. Up to now we
>> compile it in the Gitlab runner. By compiling it in Docker we can reduce
>> the Gitlab job duration.
>>
>> To avoid naming conflicts the QEMU binary is stored as
>> /opt/qemu/bin/qemu-system-n900.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>> ---
>>  Dockerfile | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/Dockerfile b/Dockerfile
>> index 209e008..bc3cdee 100644
>> --- a/Dockerfile
>> +++ b/Dockerfile
>> @@ -171,6 +171,16 @@ RUN git clone git://git.qemu.org/qemu.git /tmp/qemu && \
>>  	make -j$(nproc) all install && \
>>  	rm -rf /tmp/qemu
>>
>> +# Compile QEMU for Nokia N900 emulation
>> +# Last working commit is 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1
>> +RUN git clone https://git.linaro.org/qemu/qemu-linaro.git /tmp/qemu && \
>> +	cd /tmp/qemu && \
>> +	git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1 && \
>> +	./configure --enable-system --target-list=arm-softmmu --disable-sdl --disable-gtk --disable-curses --audio-drv-list= --audio-card-list= --disable-werror --disable-xen --disable-xen-pci-passthrough --disable-brlapi --disable-vnc --disable-curl --disable-slirp --disable-kvm --disable-user --disable-linux-user --disable-bsd-user --disable-guest-base --disable-uuid --disable-vde --disable-linux-aio --disable-cap-ng --disable-attr --disable-blobs --disable-docs --disable-spice --disable-libiscsi --disable-smartcard-nss --disable-usb-redir --disable-guest-agent --disable-seccomp --disable-glusterfs --disable-nptl --disable-fdt && \
>> +	make -j$(nproc) && \
>> +	cp arm-softmmu/qemu-system-arm /opt/qemu/bin/qemu-system-n900 && \
>> +	rm -rf /tmp/qemu
>> +
>>  # Create our user/group
>>  RUN echo uboot ALL=NOPASSWD: ALL > /etc/sudoers.d/uboot
>>  RUN useradd -m -U uboot
>
> Azure and GitLab will pick this up, if we modify the job to link the
> binary in.  Travis will not, of course.  But this feels like a bit of a
> micro-optimization.  The test job is 3-4 minutes currently.  If we want

Yes, time I am waiting for the tests that interest me. And sometimes it
fails because the source repository is not available.

> to reduce that, I think switching the test script to use $(nproc) rather
> than 4 for all make jobs would be a bit better.  Keeping all 3 CI

This depends on the number of cores you have on Travis CI. Is this more
than one?

> scripts as close as possible is a goal we have to have I believe to
> reduce the likelyhood of one CI failing when another passes and it being
> the CI at fault rather than exposing a race condition in our code.
>

https://docs.travis-ci.com/user/docker/a
says that you can use Docker images in Travis CI too.

https://docs.travis-ci.com/user/build-stages/share-docker-image/
shows how to trigger tests inside a Docker image.

I think the Docker route is the only way to minimize differences between
the build systems.

Best regards

Heinrich




More information about the U-Boot mailing list