qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Fam Zheng <famz@redhat.com>
Cc: "open list:All patches CC here" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2 5/7] new debian-multiarch-cross.docker: a cross-compiling docker guest
Date: Thu, 26 Jan 2017 12:48:20 +0000	[thread overview]
Message-ID: <87efzq9ecr.fsf@linaro.org> (raw)
In-Reply-To: <20170126105346.GH6879@lemon>


Fam Zheng <famz@redhat.com> writes:

> On Tue, 01/24 14:33, Alex Bennée wrote:
>> This provides a basic Debian install with access to the emdebian cross
>> compilers for armhf, arm64, mipsel and ppc64el. On its own it provides
>> the basic cross build essentials for building any of those
>> architectures. More complex cross-compilations would need to install
>> library dependencies on top of this image.
>>
>> An example use:
>>
>>   docker run --rm -it \
>>     -v /home/alex/lsrc/qemu/qemu.git/:/home/alex/lsrc/qemu/qemu.git/ \
>>     --user=alex:alex \
>>     -w /home/alex/lsrc/qemu/qemu.git/arm-linux-user/tests \
>>     -e CROSS_CC="arm-linux-gnueabihf-gcc" \
>>     debian:cross make -f ../../tests/tcg/arm/Makefile
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>
>> ---
>> v2
>>   - add clang (keep shippable happy)
>>   - rm adduser code (done direct now)
>>   - add aptitude (useful for debugging package clashes)
>> ---
>>  .../dockerfiles/debian-multiarch-cross.docker      | 45 ++++++++++++++++++++++
>>  1 file changed, 45 insertions(+)
>>  create mode 100644 tests/docker/dockerfiles/debian-multiarch-cross.docker
>>
>> diff --git a/tests/docker/dockerfiles/debian-multiarch-cross.docker b/tests/docker/dockerfiles/debian-multiarch-cross.docker
>> new file mode 100644
>> index 0000000000..749fdf07e1
>> --- /dev/null
>> +++ b/tests/docker/dockerfiles/debian-multiarch-cross.docker
>> @@ -0,0 +1,45 @@
>> +#
>> +# Docker multiarch cross-compiler target
>> +#
>> +# This docker target is builds on Debian and Emdebian's cross compiler targets
>> +# to build distro with a selection of cross compilers for building test binaries.
>> +#
>> +# This does not include the build dependancies for QEMU as there are
>> +# so many there are unresolvable clashes.
>> +#
>> +FROM debian:stable-slim
>> +
>> +# Setup some basic tools we need
>> +RUN apt update
>> +RUN apt install -yy curl aptitude
>> +
>> +# Setup Emdebian
>> +RUN echo "deb http://emdebian.org/tools/debian/ jessie main" >> /etc/apt/sources.list
>> +RUN curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -
>> +
>> +# Duplicate deb line as deb-src
>> +RUN cat /etc/apt/sources.list | sed "s/deb/deb-src/" >> /etc/apt/sources.list
>> +
>> +# Add the foriegn architectures we want
>> +RUN dpkg --add-architecture armhf
>> +RUN dpkg --add-architecture arm64
>> +RUN dpkg --add-architecture mipsel
>> +RUN dpkg --add-architecture ppc64el
>> +
>> +#FIXME: Currently these cause clashes due to multi-arch being an ongoig process
>
> "ongoing"?
>
>> +#RUN dpkg --add-architecture mips
>> +#RUN dpkg --add-architecture powerpc
>> +
>> +# Final update
>> +RUN apt update
>> +
>> +# Install the crossbuild essential packages
>> +# FIXME: crossbuild-essential-powerpc has a clash with '/lib/ld.so.1'
>> +RUN apt install -yy clang crossbuild-essential-arm64 crossbuild-essential-armhf crossbuild-essential-mipsel crossbuild-essential-ppc64el
>> +
>> +# Before you can actually build something you need to install its build dependancies.
>> +# This is best done in a child container as architecture specific -dev packages have a habit of clashing with
>> +# each other because not everything is fully complient with the multiarch specififcation.
>
> "compliant"?
>
>> +#
>> +# To install the QEMU build dependacnies you need to run:
>> +# RUN apt-get build-dep -yy -a armhf qemu
>> --
>> 2.11.0
>>
>
> Does this image work with our tests, such as "make
> docker-test-quick@debian-multiarch-cross"? If not let's put it into a different
> folder okay?

There is no particular reason why it couldn't be included in the docker
targets. We can either expand the existing build.sh to include a
dependency step or add a new build script for use here.

--
Alex Bennée

  reply	other threads:[~2017-01-26 12:48 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20170124143346.22240-1-alex.bennee@linaro.org>
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 1/7] .travis.yml: don't specify CONFIG twice Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 2/7] .travis.yml: split VM based builds Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 3/7] .travis.yml: DEBUG MacOSX build Alex Bennée
2017-01-26 11:26   ` Fam Zheng
2017-01-26 12:46     ` Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 4/7] tests/docker: add basic user mapping support Alex Bennée
2017-01-26  9:08   ` Fam Zheng
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 5/7] new debian-multiarch-cross.docker: a cross-compiling docker guest Alex Bennée
2017-01-26 10:53   ` Fam Zheng
2017-01-26 12:48     ` Alex Bennée [this message]
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 6/7] .shippable.yml: new CI provider Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 7/7] qemu-options: remove stray space Alex Bennée
2017-01-26 11:15   ` Fam Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87efzq9ecr.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=famz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).