Message ID | 20180718100505.7546-1-alex.bennee@linaro.org |
---|---|
Headers | show |
Series | docker on non-x86 hosts | expand |
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 >
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