diff mbox

[RFC,for,2.10,34/35] docker: add debian 'bleeding' image with gcc7 and clang5

Message ID 20170724182751.18261-35-f4bug@amsat.org
State New
Headers show

Commit Message

Philippe Mathieu-Daudé July 24, 2017, 6:27 p.m. UTC
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 .../docker/dockerfiles/debian-bleeding-dev.docker  | 94 ++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 tests/docker/dockerfiles/debian-bleeding-dev.docker

Comments

Alex Bennée July 25, 2017, 2:15 p.m. UTC | #1
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  .../docker/dockerfiles/debian-bleeding-dev.docker  | 94 ++++++++++++++++++++++
>  1 file changed, 94 insertions(+)
>  create mode 100644 tests/docker/dockerfiles/debian-bleeding-dev.docker
>
> diff --git a/tests/docker/dockerfiles/debian-bleeding-dev.docker b/tests/docker/dockerfiles/debian-bleeding-dev.docker
> new file mode 100644
> index 0000000000..d6ae20692c
> --- /dev/null
> +++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker
> @@ -0,0 +1,94 @@
> +#
> +# Docker x86_64 bleeding image
> +#
> +# This docker target builds on the debian unstable base image. Further
> +# libraries which are not widely available are installed by hand.
> +#

Not for 2.10 please.

> +FROM debian:unstable
> +
> +MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
> +
> +RUN echo 'Acquire::ForceIPv4 "true";' >> /etc/apt/apt.conf.d/01network
> +
> +# Duplicate deb line as deb-src
> +RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
> +
> +# Install common build utilities
> +RUN apt-get update && \
> +    DEBIAN_FRONTEND=noninteractive apt-get install -yy eatmydata
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        bison \
> +        build-essential \
> +        ca-certificates \
> +        ccache \
> +        flex \
> +        git \
> +        less \
> +        pkg-config \
> +        psmisc \
> +        python \
> +        texinfo \
> +        $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\  -f2)
> +
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        binutils-multiarch \
> +        gdb-multiarch \
> +        libnewlib-dev \
> +        musl-dev \
> +        uclibc-source
> +
> +############################################################################
> +# GCC 7
> +
> +RUN echo deb http://httpredir.debian.org/debian experimental main >> \
> +    /etc/apt/sources.list.d/experimental.list && apt-get update
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        gcc-7 \
> +        gcc-7-cross-base-ports \
> +        gcc-7-multilib \
> +        g++-7
> +
> +############################################################################
> +# Clang 5
> +
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        curl gnupg
> +RUN curl http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
> +    echo 'deb http://apt.llvm.org/unstable/ llvm-toolchain main' \
> +        > /etc/apt/sources.list.d/llvm.list && \
> +    apt-get update
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        clang-5.0 \
> +        lldb-5.0 \
> +        llvm-5.0 && \
> +    test -x /usr/bin/clang || ln -s clang-5.0 /usr/bin/clang
> +
> +############################################################################
> +# QEMU specific starts here
> +
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get build-dep -yy qemu
> +
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        libbz2-dev \
> +        liblzo2-dev \
> +        librdmacm-dev \
> +        libsnappy-dev \
> +        libvte-dev
> +
> +# virgl
> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \
> +    apt-get install -y --no-install-recommends \
> +        libegl1-mesa-dev \
> +        libepoxy-dev \
> +        libgbm-dev
> +RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer
> +RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure
> --with-glx --disable-tests && make install

There are a lot of moving parts basing this in debian unstable and
compiling extra bleeding edge stuff. What does this buy that the clang
and toolchain builds in Travis don't already cover?

> +
> +ENV QEMU_CONFIGURE_OPTS --host-cc=clang-5.0 --cc=clang-5.0 --cxx=clang++-5.0


--
Alex Bennée
Daniel P. Berrangé July 25, 2017, 2:22 p.m. UTC | #2
On Tue, Jul 25, 2017 at 03:15:07PM +0100, Alex Bennée wrote:
> 
> Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
> 
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > ---
> >  .../docker/dockerfiles/debian-bleeding-dev.docker  | 94 ++++++++++++++++++++++
> >  1 file changed, 94 insertions(+)
> >  create mode 100644 tests/docker/dockerfiles/debian-bleeding-dev.docker
> >
> > diff --git a/tests/docker/dockerfiles/debian-bleeding-dev.docker b/tests/docker/dockerfiles/debian-bleeding-dev.docker
> > new file mode 100644
> > index 0000000000..d6ae20692c
> > --- /dev/null
> > +++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker


> > +RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer
> > +RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure
> > --with-glx --disable-tests && make install
> 
> There are a lot of moving parts basing this in debian unstable and
> compiling extra bleeding edge stuff. What does this buy that the clang
> and toolchain builds in Travis don't already cover?

FWIW, the clang version in Travis is somewhat old compared to the version
that Peter uses during merge testing. I recently had a pull request that
passed travis tests, but failed with modern clang.

Doesn't neccessarily mean we need debian bleeding edge though - a Fedora
26 image would have detected that since it has new clang.

Regards,
Daniel
Alex Bennée July 25, 2017, 2:46 p.m. UTC | #3
Daniel P. Berrange <berrange@redhat.com> writes:

> On Tue, Jul 25, 2017 at 03:15:07PM +0100, Alex Bennée wrote:
>>
>> Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
>>
>> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> > ---
>> >  .../docker/dockerfiles/debian-bleeding-dev.docker  | 94 ++++++++++++++++++++++
>> >  1 file changed, 94 insertions(+)
>> >  create mode 100644 tests/docker/dockerfiles/debian-bleeding-dev.docker
>> >
>> > diff --git a/tests/docker/dockerfiles/debian-bleeding-dev.docker b/tests/docker/dockerfiles/debian-bleeding-dev.docker
>> > new file mode 100644
>> > index 0000000000..d6ae20692c
>> > --- /dev/null
>> > +++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker
>
>
>> > +RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer
>> > +RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure
>> > --with-glx --disable-tests && make install
>>
>> There are a lot of moving parts basing this in debian unstable and
>> compiling extra bleeding edge stuff. What does this buy that the clang
>> and toolchain builds in Travis don't already cover?
>
> FWIW, the clang version in Travis is somewhat old compared to the version
> that Peter uses during merge testing. I recently had a pull request that
> passed travis tests, but failed with modern clang.
>
> Doesn't neccessarily mean we need debian bleeding edge though - a Fedora
> 26 image would have detected that since it has new clang.

Yeah I think from a compiler testing point of view it would be nice to
have two images, one for latest clang, one for latest gcc that are
pre-set up to build with them for QEMU_CONFIGURE_OPTS. I'd rather those
on a stable base distro than taking a potshot on the status of a rolling
distro on any given day.

The virgl and other tip of tree installs are done once and probably
don't need repeating in other trees.

--
Alex Bennée
Philippe Mathieu-Daudé July 25, 2017, 2:51 p.m. UTC | #4
On 07/25/2017 11:15 AM, Alex Bennée wrote:
>> +++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker
>> @@ -0,0 +1,94 @@
>> +#
>> +# Docker x86_64 bleeding image
>> +#
>> +# This docker target builds on the debian unstable base image. Further
>> +# libraries which are not widely available are installed by hand.
>> +#
> 
> Not for 2.10 please.

Surely not ;) Also unlikely to get merged in mainline...

[...]
> There are a lot of moving parts basing this in debian unstable and
> compiling extra bleeding edge stuff. What does this buy that the clang
> and toolchain builds in Travis don't already cover?

Bleeding is bleeding :) This is an implicit No Warranty clause...
It might trigger something useful or give you slow death.

https://wiki.debian.org/DebianUnstable
"If you are a hardcore developer or tester you should use this release."

https://www.debian.org/doc/manuals/securing-debian-howto/ch10.en.html#s10.1.3
"you should not use Debian's unstable branch for production-level systems"
Alex Bennée July 25, 2017, 3:05 p.m. UTC | #5
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> On 07/25/2017 11:15 AM, Alex Bennée wrote:
>>> +++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker
>>> @@ -0,0 +1,94 @@
>>> +#
>>> +# Docker x86_64 bleeding image
>>> +#
>>> +# This docker target builds on the debian unstable base image. Further
>>> +# libraries which are not widely available are installed by hand.
>>> +#
>>
>> Not for 2.10 please.
>
> Surely not ;) Also unlikely to get merged in mainline...
>
> [...]
>> There are a lot of moving parts basing this in debian unstable and
>> compiling extra bleeding edge stuff. What does this buy that the clang
>> and toolchain builds in Travis don't already cover?
>
> Bleeding is bleeding :) This is an implicit No Warranty clause...
> It might trigger something useful or give you slow death.
>
> https://wiki.debian.org/DebianUnstable
> "If you are a hardcore developer or tester you should use this release."
>
> https://www.debian.org/doc/manuals/securing-debian-howto/ch10.en.html#s10.1.3
> "you should not use Debian's unstable branch for production-level systems"

Quite but from a QEMU point of view these are being used for CI loops
and proving a known state of something for users to test on. As I said
in reply elsewhere I think to get the benefit of recent Clang and GCCs
it would be best to base of some sort of stable base.

--
Alex Bennée
diff mbox

Patch

diff --git a/tests/docker/dockerfiles/debian-bleeding-dev.docker b/tests/docker/dockerfiles/debian-bleeding-dev.docker
new file mode 100644
index 0000000000..d6ae20692c
--- /dev/null
+++ b/tests/docker/dockerfiles/debian-bleeding-dev.docker
@@ -0,0 +1,94 @@ 
+#
+# Docker x86_64 bleeding image
+#
+# This docker target builds on the debian unstable base image. Further
+# libraries which are not widely available are installed by hand.
+#
+FROM debian:unstable
+
+MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
+
+RUN echo 'Acquire::ForceIPv4 "true";' >> /etc/apt/apt.conf.d/01network
+
+# Duplicate deb line as deb-src
+RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
+
+# Install common build utilities
+RUN apt-get update && \
+    DEBIAN_FRONTEND=noninteractive apt-get install -yy eatmydata
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        bison \
+        build-essential \
+        ca-certificates \
+        ccache \
+        flex \
+        git \
+        less \
+        pkg-config \
+        psmisc \
+        python \
+        texinfo \
+        $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\  -f2)
+
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        binutils-multiarch \
+        gdb-multiarch \
+        libnewlib-dev \
+        musl-dev \
+        uclibc-source
+
+############################################################################
+# GCC 7
+
+RUN echo deb http://httpredir.debian.org/debian experimental main >> \
+    /etc/apt/sources.list.d/experimental.list && apt-get update
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        gcc-7 \
+        gcc-7-cross-base-ports \
+        gcc-7-multilib \
+        g++-7
+
+############################################################################
+# Clang 5
+
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        curl gnupg
+RUN curl http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
+    echo 'deb http://apt.llvm.org/unstable/ llvm-toolchain main' \
+        > /etc/apt/sources.list.d/llvm.list && \
+    apt-get update
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        clang-5.0 \
+        lldb-5.0 \
+        llvm-5.0 && \
+    test -x /usr/bin/clang || ln -s clang-5.0 /usr/bin/clang
+
+############################################################################
+# QEMU specific starts here
+
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get build-dep -yy qemu
+
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        libbz2-dev \
+        liblzo2-dev \
+        librdmacm-dev \
+        libsnappy-dev \
+        libvte-dev
+
+# virgl
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y --no-install-recommends \
+        libegl1-mesa-dev \
+        libepoxy-dev \
+        libgbm-dev
+RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer
+RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure --with-glx --disable-tests && make install
+
+ENV QEMU_CONFIGURE_OPTS --host-cc=clang-5.0 --cc=clang-5.0 --cxx=clang++-5.0