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

[Coin-OR] retroactively fix compat to equality bounds #100318

Merged
merged 2 commits into from
Feb 8, 2024

Conversation

odow
Copy link
Contributor

@odow odow commented Feb 5, 2024

We're currently blocked from updating a bunch of JLL packages because the original build scripts specified compat="VERSION" instead of compat="=VERSION".

In theory, this should have been okay because of semver, but in practice, I know that minor changes in the COIN-OR stack can cause issues, and the only right thing to do is lock everything to a particular version. (I always update the entire stack in sequence so we never had parts built at different times, and they all share a common source of recent versions so everything is built in sync.)

This is brittle though, and this PR goes back to add = compat bounds.

The downside is that I'm not sure how to verify that every version has a feasible set of packages?

I've checked out this branch and tested a few combinations and it all seems to work

(tmp) pkg> add Clp MibS_jll
   Resolving package versions...
   Installed CHiPPS_BLIS_jll ─ v0.9400.802+0
   Installed Osi_jll ───────── v0.10800.600+0
   Installed CoinUtils_jll ─── v200.1100.400+0
   Installed MibS_jll ──────── v100.100.301+0
   Installed BiCePS_jll ────── v0.9400.400+0
   Installed ALPS_jll ──────── v100.500.702+0
   Installed Clp ───────────── v1.0.3
   Installed SYMPHONY_jll ──── v500.600.1700+0
  Downloaded artifact: SYMPHONY
  Downloaded artifact: Osi
  Downloaded artifact: CHiPPS_BLIS
  Downloaded artifact: ALPS
  Downloaded artifact: MibS
  Downloaded artifact: CoinUtils
  Downloaded artifact: BiCePS
    Updating `/private/tmp/Project.toml`
  [e2554f3b] + Clp v1.0.3
  [118347d2] + MibS_jll v100.100.301+0
(tmp) pkg> st
Status `/private/tmp/Project.toml` (empty project)

(tmp) pkg> add [email protected]
   Resolving package versions...
    Updating `/private/tmp/Project.toml`
⌃ [38041ee0] + Cbc_jll v200.1000.501+0
    Updating `/private/tmp/Manifest.toml`
  [692b3bcd] + JLLWrappers v1.5.0
  [21216c6a] + Preferences v1.4.1
  [ae81ac8f] + ASL_jll v0.1.3+0
⌃ [38041ee0] + Cbc_jll v200.1000.501+0
⌅ [3830e938] + Cgl_jll v0.6000.300+0
⌅ [06985876] + Clp_jll v100.1700.601+0
⌅ [be027038] + CoinUtils_jll v200.1100.400+0
⌅ [d00139f3] + METIS_jll v5.1.1+0
⌅ [d7ed1dd3] + MUMPS_seq_jll v5.4.1+0
⌅ [656ef2d0] + OpenBLAS32_jll v0.3.24+0
⌅ [7da25872] + Osi_jll v0.10800.600+0
...
        Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`

(tmp) pkg> add [email protected]
   Resolving package versions...
    Updating `/private/tmp/Project.toml`
  [38041ee0] ↑ Cbc_jll v200.1000.501+0 ⇒ v200.1000.800+0
    Updating `/private/tmp/Manifest.toml`
  [38041ee0] ↑ Cbc_jll v200.1000.501+0 ⇒ v200.1000.800+0
  [3830e938] ↑ Cgl_jll v0.6000.300+0 ⇒ v0.6000.600+0
  [06985876] ↑ Clp_jll v100.1700.601+0 ⇒ v100.1700.700+1
  [be027038] ↑ CoinUtils_jll v200.1100.400+0 ⇒ v200.1100.600+0
  [d00139f3] ↑ METIS_jll v5.1.1+0 ⇒ v5.1.2+0
  [d7ed1dd3] ↑ MUMPS_seq_jll v5.4.1+0 ⇒ v500.600.201+0
  [7da25872] ↑ Osi_jll v0.10800.600+0 ⇒ v0.10800.700+0
  [8e850b90] + libblastrampoline_jll v5.8.0+1
Precompiling project...
  5 dependencies successfully precompiled in 6 seconds. 8 already precompiled.
(tmp) pkg> add Clp_jll@100.1700.601
   Resolving package versions...
    Updating `/private/tmp/Project.toml`
⌃ [06985876] + Clp_jll v100.1700.601+0
    Updating `/private/tmp/Manifest.toml`
  [692b3bcd] + JLLWrappers v1.5.0
  [21216c6a] + Preferences v1.4.1
⌃ [06985876] + Clp_jll v100.1700.601+0
⌅ [be027038] + CoinUtils_jll v200.1100.400+0
⌅ [d00139f3] + METIS_jll v5.1.1+0
⌅ [d7ed1dd3] + MUMPS_seq_jll v5.4.1+0
⌅ [656ef2d0] + OpenBLAS32_jll v0.3.24+0
⌅ [7da25872] + Osi_jll v0.10800.600+0
...
        Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
Precompiling project...
  3 dependencies successfully precompiled in 3 seconds. 7 already precompiled.

(tmp) pkg> add Clp_jll@100.1700.700
   Resolving package versions...
    Updating `/private/tmp/Project.toml`
  [06985876]  Clp_jll v100.1700.601+0  v100.1700.700+1
    Updating `/private/tmp/Manifest.toml`
  [06985876]  Clp_jll v100.1700.601+0  v100.1700.700+1
  [be027038]  CoinUtils_jll v200.1100.400+0  v200.1100.600+0
  [d00139f3]  METIS_jll v5.1.1+0  v5.1.2+0
  [d7ed1dd3]  MUMPS_seq_jll v5.4.1+0  v500.600.201+0
  [7da25872]  Osi_jll v0.10800.600+0  v0.10800.700+0
  [8e850b90] + libblastrampoline_jll v5.8.0+1
Precompiling project...
  3 dependencies successfully precompiled in 3 seconds. 7 already precompiled.

But that's not a substitute for rigorous proof.

x-ref: JuliaPackaging/Yggdrasil#8066 (comment)

[Osi_jll] add retroactive compat
[Clp_jll] add retroactive compat
[Cgl_jll] add retroactive compat
[Cbc_jll] add retroactive compat
[Bonmin_jll] add retroactive compat
[SYMPHONY_jll] add retroactive compat
[ALPS_jll] add retroactive compat
[BiCePS_jll] add retroactive compat
[CHIPPS_BLIS_jll] add retroactive compat
[MibS_jll] add retroactive compat
@DilumAluthge
Copy link
Member

Since you tested out a few combinations and everything worked, I'd say let's try merging this, and if things break in the ecosystem, we can revert it.

@DilumAluthge DilumAluthge merged commit e82709c into JuliaRegistries:master Feb 8, 2024
10 checks passed
@odow odow deleted the patch-7 branch February 8, 2024 22:35
@odow
Copy link
Contributor Author

odow commented Feb 8, 2024

Thanks @DilumAluthge.

Here's a run of solvers on v1.10: https://github.com/jump-dev/MathOptInterface.jl/actions/runs/7836880680.
Doesn't test older versions though. I guess I wait to see if anyone posts on Discourse...

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.

3 participants