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

Include llvm in image #125

Open
flip111 opened this issue Mar 17, 2024 · 10 comments
Open

Include llvm in image #125

flip111 opened this issue Mar 17, 2024 · 10 comments

Comments

@flip111
Copy link

flip111 commented Mar 17, 2024

Would it be an option to include the relevant llvm version of a particular version of ghc? Newer versions of host operating systems don't have older llvm versions in the repository, in that case the haskell docker image comes in handy

@flip111 flip111 changed the title Include llvm in container Include llvm in image Mar 17, 2024
@flip111
Copy link
Author

flip111 commented Mar 18, 2024

for GHC 9.2.6 up to llvm 12 is supported. But debian buster only included up to llvm 11. So the docker OS versions don't match for the latest llvm version for the ghc version

@benz0li
Copy link

benz0li commented Apr 17, 2024

@flip111 You may be interested in my multi‑arch (linux/amd64, linux/arm64/v8) GHC musl docker images:

  1. Multi‑arch: linux/amd64, linux/arm64/v8
  2. Built using Hadrian1, from source, without docs
  3. Built using the LLVM backend
    • flavour: perf+llvm+split_sections

👉 See the Version Matrix to find out which version of LLVM is included in the image.

ℹ️ Based on Alpine Linux (that is musl libc and BusyBox) = Made to build statically linked executables.

Footnotes

  1. GHC versions ≥ 9.2.8.

@benz0li
Copy link

benz0li commented Apr 17, 2024

GHC musl Dev Containers available, too.

@flip111
Copy link
Author

flip111 commented Apr 19, 2024

@benz0li thanks that great, i mentioned your repo as unofficial docker image here https://gitlab.haskell.org/ghc/ghc/-/wikis/building/preparation/linux

i will leave this open because i believe the official image should also either have llvm or provide the ability to install the latest llvm version that is supported by a specific GHC version

@benz0li
Copy link

benz0li commented Apr 19, 2024

or provide the ability to install the latest llvm version that is supported by a specific GHC version

@flip111 IMHO the "Haskell Docker Official Images" are released according to the supported platforms.

For GHC 9.2.6 this is Debian 10. And the Debian 10 package repository serves LLVM versions 6, 7, 11 and 13.

My 'Alpine Linux'-based images only include a supported LLVM version – which does not have to be the latest1.

Footnotes

  1. 2024-04-22, Addendum: The latest version of LLVM supported by a specific GHC version.

@benz0li
Copy link

benz0li commented Apr 19, 2024

So the docker OS versions don't match for the right llvm version for the right ghc version

@flip111 It does. LLVM 11 is among the supported LLVM versions for GHC 9.2.6.

@flip111
Copy link
Author

flip111 commented Apr 19, 2024

the "Haskell Docker Official Images" are released according to the supported platforms.

Well not exactly in the url you linked you can see the following platforms supported: Alpine, Debian 10, Debian 9, Fedora 27, ubuntu 20.04, CentOS 7. Of those 7 distros only one has the official docker image buster.

My 'Alpine Linux'-based images only include a supported LLVM version – which does not have to be the latest.

I mean the latest supported version by GHC. Not the latest LLVM (19) version which would be incompatible with any GHC version at the moment.

It does. LLVM 11 is among the supported LLVM versions for GHC 9.2.6.

For 11 yes. Question is though why make a docker image for GHC based on an OS that does not support the same LLVM version as GHC, i'm talking about LLVM 12. You want to have the latest supported version for performance and LLVM bugs.

@benz0li
Copy link

benz0li commented Apr 22, 2024

Question is though why make a docker image for GHC based on an OS that does not support the same LLVM version as GHC

@flip111 Because for GHC 9.2.6 there is no binary distribution for Debian 11 (bullseye).

Addendum: If you want something unofficial, you have to build it yourself – from source.

@flip111
Copy link
Author

flip111 commented Apr 22, 2024

Because for GHC 9.2.6 there is no binary distribution for Debian 11 (bullseye).

@benz0li i appreciate you thinking along, but this doesn't make sense. Specifically choosing Debian for the docker container is a choice of for the docker container and not from the binary distribution. If we look at the release page for 9.2.4 there are more OS supported as i mentioned before. The docker image could be based on ubuntu for example which has LLVM 12 and is also supported by the binary release of 9.2.6.

@benz0li
Copy link

benz0li commented Apr 22, 2024

Specifically choosing Debian for the docker container is a choice of for the docker container and not from the binary distribution.

@flip111 You are correct.

So either

  • ask the maintainer(s) to add Ubuntu-based images

or

  • create a pull request that adds Ubuntu-based images

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

No branches or pull requests

2 participants