-
Notifications
You must be signed in to change notification settings - Fork 30
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
Debian unstable #151
Debian unstable #151
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36,12 +36,12 @@ | |
- build-essential | ||
- curl | ||
- libffi-dev | ||
- libffi6 | ||
- libffi8 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can completely remove all the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's not how this works. GHC versions depend on certain specific libraries with specific SONAMEs. We're making a best effort here (should probably also specify libffi7 if it still exists). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
But this dependency would come from the Note: we should obviously use the same images for building the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We support GHC versions back to 8.0.2. The older bindists are linked against older libraries that are not corresponding to what There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I re-checked experimentally, 'cause I do not use Debian/Ubuntu stable releases since a lot of years (just Debian testing/unstable/experimental and Ubuntu devel releases), with the following command: $ bash -c 'for image in debian:10 debian:11 debian:12 debian:testing ubuntu:18.04 ubuntu:20.04 ubuntu:22.04 ubuntu:23.10 ; do echo "Testing $image" ; docker run --quiet --rm "$image" sh -c "apt -qy update ; apt -qy upgrade ; apt -qy install build-essential curl libffi-dev libgmp-dev libncurses-dev libnuma-dev ; curl -sSf https://get-ghcup.haskell.org | env BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 sh ; . /root/.ghcup/env ; ghcup upgrade ; ghcup install ghc 9.4.8" ; done' And it works with all the base images. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
It means that the dev environment used to build that ghc release was broken or badly configured. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Not at all. You can't build GHC against libraries that are not released yet. How does that work?
I will not do that, unless I get employed by the Haskell Foundation. You can ask GHC devs. A ticket is already open here: haskell/ghcup-hs#903 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I expressed myself in a bad way. Anyway, as you suggested below, this is not the right place to talk about those ideas.
I'm sorry, I was not asking you for it :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 to removing corner cases, which is why I would recommend against rebuilding old bindists in the first place. GHC bindists represent snapshots in time, do they not? A particular set of GHC variants build against a particular set of platforms at a particular moment in time. Is that so bad? Having a different process that continually updates old versions of GHC against new platforms sounds like it would be even better, of course. But to build such a thing would require a lot of resources for development and maintenance that I don't think we have and goes far beyond what I expect of any open source project. Applying that process retroactively to previously-released versions introduces even more ongoing maintenance work. There are more important actions we can take to improve GHC stability and we have to be very careful how we spend our limited resources. [edit] posted this before seeing @marinelli's latest reply, sorry for any confusion! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @chreekat indeed, I also wouldn't expect GHC HQ to do that. In fact, I'd rather be completely independent of their CI and bindists. I did draft a HF proposal about this, but I never submitted it, since I wouldn't be able to accept the funding or dedicate enough time for it: https://gist.github.com/hasufell/18cb5438ce7c2ba388160588d751b32d |
||
- libgmp-dev | ||
- libgmp10 | ||
- libncurses-dev | ||
- libncurses5 | ||
- libtinfo5 | ||
- libncurses6 | ||
- libtinfo6 | ||
notes: '' | ||
Linux_Ubuntu: | ||
"( >= 20.04 && < 20.10 )": | ||
|
@@ -3637,7 +3637,7 @@ | |
dlUri: https://downloads.haskell.org/~ghc/9.4.8/ghc-9.4.8-x86_64-deb11-linux.tar.xz | ||
dlSubdir: ghc-9.4.8-x86_64-unknown-linux | ||
dlHash: 2743629d040f3213499146cb5154621d6f25e85271019afc9b9009e04d66bf6c | ||
unknown_versioning: *ghc-948-64-deb9 | ||
unknown_versioning: *ghc-948-64-deb11 | ||
Linux_Ubuntu: | ||
unknown_versioning: *ghc-948-64-deb10 | ||
'( >= 16 && < 19 )': *ghc-948-64-deb9 | ||
|
@@ -6235,7 +6235,7 @@ | |
dlHash: 728be2371e257c6960341167192fa704ff1f92ab61657dd4781710a257fae7c1 | ||
dlSubdir: | ||
RegexDir: "stack-.*" | ||
# FreeBSD: | ||
# unknown_versioning: | ||
# dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/stack/2.13.1/stack-2.13.1-freebsd-x86_64.tar.xz | ||
# dlHash: <replace_me> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is actually a valid configuration for the
debian:12
image. If you take a look here https://packages.debian.org/source/stable/ncurses, you will see thatlibncurses5
andlibtinfo5
are just legacy packages. Thelibncurses-dev
package depends on the new ones:I would actually do an other thing: I would completely remove the binary packages from those commands for all the Debian/Ubuntu releases. In those distros every
-dev
package depends on the corresponding binary library package. So, instead of writing:We can just write:
Btw, we are already using this approach with the numa library, we just require libnuma-dev, and
apt
will installlibnuma1
too.The only difference would be that the packages for the library binaries (eg:
libncurses6
), will not be marked as automatically installed, and this is not really important, because the binaries and the headers are both required.We could have something like this:
In this way we will not have to never touch the dependencies :)
I'm not sure it's really useful to have the image for debian unstable. It will change during time, and the ghc packages built on it will be invalid in the medium/long term.
I think we should add
debian:12
, and as I suggested in the other PR, we should use the most update version with unknown versions.(EDIT: you already changed the unknown version, I noticed it right now. I'm sorry)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, we should also fix the documentation available here https://www.haskell.org/ghcup/install/#version-12.
I'm pretty in favor of just suggesting
build-essential curl libffi-dev libgmp-dev libncurses-dev libnuma-dev
, but if you think its better to be more explicit, we should replacelibncurses5
andlibtinfo5
with the soname 6 versions, and we should also mentionlibnuma1
andlibnuma-dev
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then we add a separate section for debian:12.
This is not correct as explained below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure is correct :) See below