[Qemu-devel] [PATCH RFC 00/10] docker on non-x86 hosts

Alex Bennée posted 10 patches 5 years, 9 months ago
Failed in applying to current master (apply log)
Makefile                                      |  4 +-
tests/docker/Makefile.include                 | 58 +++++++++++++++++--
...debian-amd64.docker => debian-host.docker} |  4 +-
.../debian-mips64el-user-cross.docker         | 16 +++++
.../debian-ppc64el-user-cross.docker          | 16 +++++
.../debian-s390x-user-cross.docker            | 16 +++++
tests/tcg/Makefile.include                    |  3 +
tests/tcg/Makefile.probe                      |  2 +-
tests/tcg/mips/Makefile.include               |  5 ++
9 files changed, 116 insertions(+), 8 deletions(-)
rename tests/docker/dockerfiles/{debian-amd64.docker => debian-host.docker} (91%)
create mode 100644 tests/docker/dockerfiles/debian-mips64el-user-cross.docker
create mode 100644 tests/docker/dockerfiles/debian-ppc64el-user-cross.docker
create mode 100644 tests/docker/dockerfiles/debian-s390x-user-cross.docker
[Qemu-devel] [PATCH RFC 00/10] docker on non-x86 hosts
Posted by Alex Bennée 5 years, 9 months ago
Hi,

Our existing support for docker is fairly x86 centric. While docker
itself has support for multiple architectures not all architectures
are equal. For example Debian only packages the widest range of
cross-compilers in it's x86 images (although for example armhf is
available on aarch64 based images).

As the binfmt support is getting more solid we always have that fall
back option and I've converted a number of the guests that way.
Unfortunately I've overloaded the meaning of DOCKER_PARTIAL_IMAGES but
I was loathed to throw in yet another magic variable without some
discussion first. I'm not sure if my current path will end up with a
maze of twisty if/else statements all subtly alike.

Thoughts?

Alex Bennée (10):
  docker: rename docker-amd64 to docker-host
  docker: change docker-image to docker-all-images target
  docker: add a placeholder for handling non-x86 hosts
  docker: don't include docker-arm64-cross on aarch64 hosts
  docker: fall-back to binfmt_misc debian-mips64el-user-cross on non-x86
  docker: fall-back to binfmt_misc debian-ppc64el-user-cross on non-x86
  docker: fall-back to binfmt_misc debian-s390x-user-cross on non-x86
  docker: disable additional non-x86 images
  tests: tcg skip docker images we can't build
  tests/tcg: debian-mips64el-user-cross fallback

 Makefile                                      |  4 +-
 tests/docker/Makefile.include                 | 58 +++++++++++++++++--
 ...debian-amd64.docker => debian-host.docker} |  4 +-
 .../debian-mips64el-user-cross.docker         | 16 +++++
 .../debian-ppc64el-user-cross.docker          | 16 +++++
 .../debian-s390x-user-cross.docker            | 16 +++++
 tests/tcg/Makefile.include                    |  3 +
 tests/tcg/Makefile.probe                      |  2 +-
 tests/tcg/mips/Makefile.include               |  5 ++
 9 files changed, 116 insertions(+), 8 deletions(-)
 rename tests/docker/dockerfiles/{debian-amd64.docker => debian-host.docker} (91%)
 create mode 100644 tests/docker/dockerfiles/debian-mips64el-user-cross.docker
 create mode 100644 tests/docker/dockerfiles/debian-ppc64el-user-cross.docker
 create mode 100644 tests/docker/dockerfiles/debian-s390x-user-cross.docker

-- 
2.17.1


Re: [Qemu-devel] [PATCH RFC 00/10] docker on non-x86 hosts
Posted by Fam Zheng 5 years, 9 months ago
On Wed, 07/18 11:04, Alex Bennée wrote:
> Hi,
> 
> Our existing support for docker is fairly x86 centric. While docker
> itself has support for multiple architectures not all architectures
> are equal. For example Debian only packages the widest range of
> cross-compilers in it's x86 images (although for example armhf is
> available on aarch64 based images).
> 
> As the binfmt support is getting more solid we always have that fall
> back option and I've converted a number of the guests that way.
> Unfortunately I've overloaded the meaning of DOCKER_PARTIAL_IMAGES but
> I was loathed to throw in yet another magic variable without some
> discussion first. I'm not sure if my current path will end up with a
> maze of twisty if/else statements all subtly alike.

Just my two cents.  So far it looks reasonable. Though I guess we could give
DOCKER_PARTIAL_IMAGES a better name or at least better documentation.

Would a per-arch variable list look cleaner? Like

    DOCKER_IMAGES_GENERIC = debian
    DOCKER_IMAGES_X86_64 = ubuntu fedora centos7
    DOCKER_PARTIAL_IMAGES_X86_64 = ...
    DOCKER_IMAGES_AARCH64 = ...
    DOCKER_PARTIAL_IMAGES_AARCH64 = ...

Then the actual host arch can be used to expand rules:

    docker-all-images: $(DOCKER_IMAGES_GENERIC)
    docker-all-images: $(DOCKER_IMAGES_$(shell uname -m | tr '[a-z]' '[A-Z]))

Fam

> 
> Thoughts?
> 
> Alex Bennée (10):
>   docker: rename docker-amd64 to docker-host
>   docker: change docker-image to docker-all-images target
>   docker: add a placeholder for handling non-x86 hosts
>   docker: don't include docker-arm64-cross on aarch64 hosts
>   docker: fall-back to binfmt_misc debian-mips64el-user-cross on non-x86
>   docker: fall-back to binfmt_misc debian-ppc64el-user-cross on non-x86
>   docker: fall-back to binfmt_misc debian-s390x-user-cross on non-x86
>   docker: disable additional non-x86 images
>   tests: tcg skip docker images we can't build
>   tests/tcg: debian-mips64el-user-cross fallback
> 
>  Makefile                                      |  4 +-
>  tests/docker/Makefile.include                 | 58 +++++++++++++++++--
>  ...debian-amd64.docker => debian-host.docker} |  4 +-
>  .../debian-mips64el-user-cross.docker         | 16 +++++
>  .../debian-ppc64el-user-cross.docker          | 16 +++++
>  .../debian-s390x-user-cross.docker            | 16 +++++
>  tests/tcg/Makefile.include                    |  3 +
>  tests/tcg/Makefile.probe                      |  2 +-
>  tests/tcg/mips/Makefile.include               |  5 ++
>  9 files changed, 116 insertions(+), 8 deletions(-)
>  rename tests/docker/dockerfiles/{debian-amd64.docker => debian-host.docker} (91%)
>  create mode 100644 tests/docker/dockerfiles/debian-mips64el-user-cross.docker
>  create mode 100644 tests/docker/dockerfiles/debian-ppc64el-user-cross.docker
>  create mode 100644 tests/docker/dockerfiles/debian-s390x-user-cross.docker
> 
> -- 
> 2.17.1
> 

Re: [Qemu-devel] [PATCH RFC 00/10] docker on non-x86 hosts
Posted by Alex Bennée 5 years, 8 months ago
Fam Zheng <famz@redhat.com> writes:

> On Wed, 07/18 11:04, Alex Bennée wrote:
>> Hi,
>>
>> Our existing support for docker is fairly x86 centric. While docker
>> itself has support for multiple architectures not all architectures
>> are equal. For example Debian only packages the widest range of
>> cross-compilers in it's x86 images (although for example armhf is
>> available on aarch64 based images).
>>
>> As the binfmt support is getting more solid we always have that fall
>> back option and I've converted a number of the guests that way.
>> Unfortunately I've overloaded the meaning of DOCKER_PARTIAL_IMAGES but
>> I was loathed to throw in yet another magic variable without some
>> discussion first. I'm not sure if my current path will end up with a
>> maze of twisty if/else statements all subtly alike.
>
> Just my two cents.  So far it looks reasonable. Though I guess we could give
> DOCKER_PARTIAL_IMAGES a better name or at least better documentation.
>
> Would a per-arch variable list look cleaner? Like
>
>     DOCKER_IMAGES_GENERIC = debian
>     DOCKER_IMAGES_X86_64 = ubuntu fedora centos7
>     DOCKER_PARTIAL_IMAGES_X86_64 = ...
>     DOCKER_IMAGES_AARCH64 = ...
>     DOCKER_PARTIAL_IMAGES_AARCH64 = ...
>
> Then the actual host arch can be used to expand rules:
>
>     docker-all-images: $(DOCKER_IMAGES_GENERIC)
>     docker-all-images: $(DOCKER_IMAGES_$(shell uname -m | tr '[a-z]'
>     '[A-Z]))

That might work better... I'll give that a go on v2

>
> Fam
>
>>
>> Thoughts?
>>
>> Alex Bennée (10):
>>   docker: rename docker-amd64 to docker-host
>>   docker: change docker-image to docker-all-images target
>>   docker: add a placeholder for handling non-x86 hosts
>>   docker: don't include docker-arm64-cross on aarch64 hosts
>>   docker: fall-back to binfmt_misc debian-mips64el-user-cross on non-x86
>>   docker: fall-back to binfmt_misc debian-ppc64el-user-cross on non-x86
>>   docker: fall-back to binfmt_misc debian-s390x-user-cross on non-x86
>>   docker: disable additional non-x86 images
>>   tests: tcg skip docker images we can't build
>>   tests/tcg: debian-mips64el-user-cross fallback
>>
>>  Makefile                                      |  4 +-
>>  tests/docker/Makefile.include                 | 58 +++++++++++++++++--
>>  ...debian-amd64.docker => debian-host.docker} |  4 +-
>>  .../debian-mips64el-user-cross.docker         | 16 +++++
>>  .../debian-ppc64el-user-cross.docker          | 16 +++++
>>  .../debian-s390x-user-cross.docker            | 16 +++++
>>  tests/tcg/Makefile.include                    |  3 +
>>  tests/tcg/Makefile.probe                      |  2 +-
>>  tests/tcg/mips/Makefile.include               |  5 ++
>>  9 files changed, 116 insertions(+), 8 deletions(-)
>>  rename tests/docker/dockerfiles/{debian-amd64.docker => debian-host.docker} (91%)
>>  create mode 100644 tests/docker/dockerfiles/debian-mips64el-user-cross.docker
>>  create mode 100644 tests/docker/dockerfiles/debian-ppc64el-user-cross.docker
>>  create mode 100644 tests/docker/dockerfiles/debian-s390x-user-cross.docker
>>
>> --
>> 2.17.1
>>


--
Alex Bennée