Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for multiple architectures #70

Merged
merged 1 commit into from
Sep 6, 2017
Merged

Conversation

tianon
Copy link
Contributor

@tianon tianon commented Sep 5, 2017

This uses dpkg-architecture to get the proper GNU tuple value for passing to --build on ./configure invocations (which some arches can work without, but doing things like building 32bit images on 64bit kernels will break). This is along the same lines as docker-library/gcc#34 (and all the other PRs linked from that one).

For some reason, versions 18 and 19 do not build successfully on ppc64le, so I've excluded those combinations explicitly in generate-stackbrew-library.sh (with a comment noting the error received -- I also tried updating config.guess and config.sub in-place for those versions to see if that helps, and it does not, so I figured we might as well just exclude those from the support matrix instead since 17 and 20 both work fine).

This also includes the changes necessary to support the Alpine variants with proper multiarch once the upstream image is officially built that way (and the results of that for each architecture are also included below using the existing hacked-together Alpine images). See gliderlabs/docker-alpine#304 for the upstream issue tracking that change.

Here's the results from build testing this on each architecture:

amd64:

TAG            IMAGE ID      SIZE
17             1dd549b7ffa3  748MB
17-slim        6fbc2145c5f3  281MB
18             7e3e5c4a9f20  754MB
18-slim        5df9e72a4ef2  284MB
19             24ba3cb6c065  821MB
19-slim        1ad3a1c97322  375MB
20             24d24bceae50  874MB
20-alpine      297db53a7f3b  70.2MB
20-slim        ff9f8003c780  277MB
master         802a5a8bb530  809MB
master-alpine  a53503afc07e  68.2MB

arm32v7:

TAG      IMAGE ID      SIZE
17       df60315b83a1  616MB
17-slim  5a8c8979ba0e  242MB
18       c39107e65fb2  621MB
18-slim  af17963b4999  245MB
19       b6af577ba752  674MB
19-slim  8eca11cda0c3  319MB
20       d821b51ff4dc  728MB
20-slim  b1d2883c690e  240MB
master   1146f759e4ab  665MB

arm64v8:

TAG            IMAGE ID      SIZE
17             08c6e606c334  692MB
17-slim        24fc927a7eb3  269MB
18             c120c119bd84  698MB
18-slim        4f5d59a1a13f  272MB
19             60cc4c096f79  764MB
19-slim        86329f73c8e9  359MB
20             1a000e5163d7  817MB
20-alpine      f747d5abe1d7  65.6MB
20-slim        a77cbccb4422  265MB
master         1f1697a61c72  752MB
master-alpine  097e8165db40  63.6MB

i386:

TAG            IMAGE ID      SIZE
17             fac39a4759d0  734 MB
17-slim        83b2b2655733  283 MB
18             03347312d01b  740 MB
18-slim        496088b5ff70  287 MB
19             7f762ce50f2c  803 MB
19-slim        2c49447c0479  377 MB
20             24aaa2505fc5  855 MB
20-alpine      cad3f87c1031  69.9 MB
20-slim        21b805e82d04  282 MB
master         de2d23b1d874  794 MB
master-alpine  83db03d437ab  67.9 MB

s390x:

TAG            IMAGE ID      SIZE
17             fe358d304581  728MB
17-slim        eabdc152d3ff  287MB
18             63ef88c695e2  734MB
18-slim        0c7b31edc27f  290MB
19             a5fedc3365b6  806MB
19-slim        9b01eb0db543  386MB
20             0df5ebfae4f7  859MB
20-alpine      5eaba6a4bac2  67.9MB
20-slim        8b8583668671  282MB
master         0446b22ce6ac  792MB
master-alpine  be3a98bf8969  65.9MB

ppc64le:

TAG            IMAGE ID      SIZE
17             479b69dfb8e4  752MB
17-slim        2250cc40ef1a  286MB
20             3e9fb910771a  885MB
20-alpine      20fa16b73284  70.8MB
20-slim        7d451df78433  281MB
master         b2676b68fc79  819MB
master-alpine  2e6b99a7ee67  68.8MB

This uses `dpkg-architecture` to get the proper GNU tuple value for passing to `--build` on `./configure` invocations (which some arches can work without, but doing things like building 32bit images on 64bit kernels will break).

For some reason, versions 18 and 19 do not build successfully on ppc64le, so I've excluded those combinations explicitly in `generate-stackbrew-library.sh`.

This also includes the changes necessary to support the Alpine variants with proper multiarch once the upstream image is officially built that way (and the results of that for each architecture are also included below using the existing hacked-together Alpine images).

Here's the results from build testing this on each architecture:

`amd64`:

```
TAG            IMAGE ID      SIZE
17             1dd549b7ffa3  748MB
17-slim        6fbc2145c5f3  281MB
18             7e3e5c4a9f20  754MB
18-slim        5df9e72a4ef2  284MB
19             24ba3cb6c065  821MB
19-slim        1ad3a1c97322  375MB
20             24d24bceae50  874MB
20-alpine      297db53a7f3b  70.2MB
20-slim        ff9f8003c780  277MB
master         802a5a8bb530  809MB
master-alpine  a53503afc07e  68.2MB
```

`arm32v7`:

```
TAG      IMAGE ID      SIZE
17       df60315b83a1  616MB
17-slim  5a8c8979ba0e  242MB
18       c39107e65fb2  621MB
18-slim  af17963b4999  245MB
19       b6af577ba752  674MB
19-slim  8eca11cda0c3  319MB
20       d821b51ff4dc  728MB
20-slim  b1d2883c690e  240MB
master   1146f759e4ab  665MB
```

`arm64v8`:

```
TAG            IMAGE ID      SIZE
17             08c6e606c334  692MB
17-slim        24fc927a7eb3  269MB
18             c120c119bd84  698MB
18-slim        4f5d59a1a13f  272MB
19             60cc4c096f79  764MB
19-slim        86329f73c8e9  359MB
20             1a000e5163d7  817MB
20-alpine      f747d5abe1d7  65.6MB
20-slim        a77cbccb4422  265MB
master         1f1697a61c72  752MB
master-alpine  097e8165db40  63.6MB
```

`i386`:

```
TAG            IMAGE ID      SIZE
17             fac39a4759d0  734 MB
17-slim        83b2b2655733  283 MB
18             03347312d01b  740 MB
18-slim        496088b5ff70  287 MB
19             7f762ce50f2c  803 MB
19-slim        2c49447c0479  377 MB
20             24aaa2505fc5  855 MB
20-alpine      cad3f87c1031  69.9 MB
20-slim        21b805e82d04  282 MB
master         de2d23b1d874  794 MB
master-alpine  83db03d437ab  67.9 MB
```

`s390x`:

```
TAG            IMAGE ID      SIZE
17             fe358d304581  728MB
17-slim        eabdc152d3ff  287MB
18             63ef88c695e2  734MB
18-slim        0c7b31edc27f  290MB
19             a5fedc3365b6  806MB
19-slim        9b01eb0db543  386MB
20             0df5ebfae4f7  859MB
20-alpine      5eaba6a4bac2  67.9MB
20-slim        8b8583668671  282MB
master         0446b22ce6ac  792MB
master-alpine  be3a98bf8969  65.9MB
```

`ppc64le`:

```
TAG            IMAGE ID      SIZE
17             479b69dfb8e4  752MB
17-slim        2250cc40ef1a  286MB
20             3e9fb910771a  885MB
20-alpine      20fa16b73284  70.8MB
20-slim        7d451df78433  281MB
master         b2676b68fc79  819MB
master-alpine  2e6b99a7ee67  68.8MB
```
@tianon tianon mentioned this pull request Sep 5, 2017
@c0b
Copy link
Collaborator

c0b commented Sep 5, 2017

looks good; appreciate that changes are kept minimum 👍

will effectively close #69 and is a superset.

@c0b c0b merged commit e7d145c into erlang:master Sep 6, 2017
@c0b
Copy link
Collaborator

c0b commented Sep 6, 2017

just merged; wonder will there be an official place for the multiarch images? I checked Docker Hub or Docker Store or Docker.com Engineering blog not seeing any public news yet

@tianon tianon deleted the multiarch branch September 6, 2017 21:35
@tianon
Copy link
Contributor Author

tianon commented Sep 6, 2017

Currently they're in https://github.com/docker-library/official-images#architectures-other-than-amd64, but once we resolve docker-library/official-images#2289 (which we're hoping to do soon), then docker pull erlang should automatically do-the-right-thing on all supported architectures, and give a reasonable error message for unsupported ones. 👍

I'll have a PR to update library/erlang in https://github.com/docker-library/official-images open shortly. 👍

c0b added a commit to c0b/official-images that referenced this pull request Jan 28, 2018
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment)
the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
davidl-zend pushed a commit to davidl-zend/official-images that referenced this pull request Apr 17, 2018
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment)
the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
davidl-zend pushed a commit to davidl-zend/official-images that referenced this pull request Apr 17, 2018
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment)
the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants