-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Revive the pre 4.02.0 compilers #18240
Conversation
I should add that all 23 of these compilers are successfully running in Ubuntu 20.10. |
3.xx doesn't appear to be affected
maj.min.rev+patch was introduced in OCaml 3.08.0. Prior to that the scheme was maj.min+rev, so don't strip off the + component, or 3.07+1 and 3.07+2 don't install. opam 2.0 does not recompile base packages on changes, so the change to ocaml-config.1 doesn't cause unnecessary switch rebuilds.
Commit: 8745a60 A pull request by opam-seasoned @dra27. 🌤️ opam-lint warnings 8745a60
☀️ Installability check (+4)
🌤️ 37 ignored non-opam files:
|
9a2e316
to
8c76333
Compare
OK, looking at original opam-repo-ci report for this PR, I added commits to put a lowerbound of calendar 2.0 on all packages which didn't have (for those whose OCaml experience isn't old enough, the major change in Calendar 2.0 was packing the library in OCaml didn't support ARM64 prior to OCaml 4.02.0, so I've updated the existing ARM64 macOS restriction to apply to all platforms. Despite a little attempt, arm32 and ppc64 are both failing, but I don't like to disable them completely since if one were using an appropriate arm32 CPU and ppc64 Linux installation, I expect they would work. Constraining the packages has expanded the testing of Camelus and opam-repo-ci beyond the original remit of this PR, so here is Camelus's original pristine report! Commit: 470f3eb A pull request by opam-seasoned @dra27. ☀️ All lint checks passed 470f3eb
☀️ Installability check (+4)
🌤️ 37 ignored non-opam files:
|
I did a bit of digging for ppc64 and arm32:
In opam, only armv5, 6 and 7 are referred as |
…end before 4.03.0
Thanks for the digging, @kit-ty-kate! The arm64 failure for 4.02.x is because a backport of GPR#1330 should be applied to 4.02-4.05 (it applies cleanly), but that's best put in a separate PR, I think. I don't think the other failures in the CI run are related to the changes here? |
thanks! |
The old OCaml compilers are of interest to
a few peopleat least me and @herbelin (see #5260)! I recall noticing several years ago that 3.07 and 3.08 had stopped building on anything later than Ubuntu 14.04 (IIRC!), but my lazy solution on the very rare occasions that I've "needed" them is to fire up that old VM. It's been gradually spreading, though as gcc and, more relevantly, the linker have evolved. I can't visit actual care homes at the moment, so I spent a little time with some old compilers instead.As always, the patches carried here are strictly ones required to build an old OCaml with a new C compiler. For 3.07-3.09, this necessitates back-porting the 3.09 addition of
-fPIC
to ocamlopt to 3.07 and 3.08 and the 3.10.0 adjustment to use it by default to all three of those.-fcommon
fix (I wasn't interested enough to check why!) so the patches in ocaml: compile with -fcommon to support gcc 10 #16583 are extended to 4.00.0, 4.00.1 and 4.01.0ocaml-base-compiler.3.11.2
contained an external reference to a patch on the OCamlPRO website which is no longer there. This patch is required for any modern binutils and so I've replaced it with the actual commit from the OCaml repo and extended it to 3.11.0 and 3.11.1ocaml-config.1
has never worked on 3.07... I've simply insertedocaml-config.0
to handle the change in version number scheme 😂 Note that the change toocaml-config.1
will trigger a switch rebuild in opam 2.1 but becauseocaml-config
is a base package, it won't trigger that in opam 2.0. On that basis, I've amended its constraints, rather than a slightly more weird adjustment toocaml-base-compiler.3.07*/opam
.If we're going to have these packages (and, even as we end up splitting opam-repository, they should still be kept) then we should periodically check that they still build. To that end, I've adjusted 3 packages:
ocamlfind.1.0.4
is the last version which supported 3.07, so adding it allowsocamlfind
to be installed in any ocaml switchpcre.6.2.5
allows a library with C stubs to be installed in 3.08+calendar.1.10
- at least at present - allows a single package at a single version to be installed on all supported versions of OCamlAs usual, while touching
ocaml-base-compiler
packages and others, I've updated metadata.