Skip to content

Update GHA TPL cache; resolve new test failures#3865

Merged
jsiirola merged 60 commits intoPyomo:mainfrom
jsiirola:baron-license-check
Mar 6, 2026
Merged

Update GHA TPL cache; resolve new test failures#3865
jsiirola merged 60 commits intoPyomo:mainfrom
jsiirola:baron-license-check

Conversation

@jsiirola
Copy link
Member

@jsiirola jsiirola commented Mar 1, 2026

Fixes # .

Summary/Motivation:

This updates the GHA TPL caches. Sort of. We are updating GAMS to the almost-current version (52.5) because the current version (53.1) causes segfaults (at least under pytest). The updated versions led to some test errors that this PR also resolves:

  • Rework the BARON license test to rely on the LST ("times") file and not parsing the log (in the most recent BARON version the log message changed).
    • This also takes the opportunity to significantly simplify the logic around parsing and caching the BARON version / licensing information.
    • This also adds some "defensive" exceptions to catch incomplete results parsing if the Baron API ever expands/
  • Update Xpress "locally optimal" test so Xpress doesn't recognize it as a conic problem it "knows how to solve"
  • Update GAMS on GHA:
    • Stop installing gams distribution on OSX (self-extracting zip is no longer distributed, and I couldn't see how to (easily) install the package on GHA.
    • Update the gams Python installation for recent package layout
    • Add fallback on gamspy from PyPI if we either don't recognize the layout or didn't install the package

While working on things, some other things were cleaned up:

  • Rework/simplify the download-extensions command
    • simplify (and document!) function control flow.
    • move retry parameters from module constants to command-line arguments.
  • GHA drivers
    • standardize on use of the curlrc for passing standard options to curl
    • remove creation of local variables that led to obfuscation of the driver logic
    • update test-branches python versions to get better coverage without adding tests
  • cplex: IBMDecisionOptimization released new versions of cplex and docplex that are both a bit buggy
    • cplex 22.1.2.1 errors when computing the IIS on Python 3.13 & 3.14. It looks like the file they write to is getting closed/corrupted before the routine exits. Either way, it results in some (fatal) error is coming out of the compiled library. I don't see how to fix or workaround, so we are just going to ignore that release.
    • docplex 2.32.257 is missing required dependencies for Python<=3.12. This highlighted that our tests for whether docplex is available were fragile / incomplete. This PR updates those tests to be more robust.
  • Quit attempting to verify links to SourceForge: it appears that SF is categorically rejecting connections from GHA.

NOTE: the intent is to let this PR build and generate the new caches, then we will update the PR to unpin GAMS (but not trigger the caches to be rebuilt).

Changes proposed in this PR:

  • (see above)

Legal Acknowledgement

By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution:

  1. I agree my contributions are submitted under the BSD license.
  2. I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.

@codecov
Copy link

codecov bot commented Mar 1, 2026

Codecov Report

❌ Patch coverage is 90.16393% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.68%. Comparing base (ae10c13) to head (1fe200b).
⚠️ Report is 61 commits behind head on main.

Files with missing lines Patch % Lines
pyomo/solvers/plugins/solvers/BARON.py 83.78% 6 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3865      +/-   ##
==========================================
+ Coverage   89.65%   89.68%   +0.02%     
==========================================
  Files         908      908              
  Lines      106757   106735      -22     
==========================================
+ Hits        95715    95726      +11     
+ Misses      11042    11009      -33     
Flag Coverage Δ
builders 29.07% <65.57%> (-0.02%) ⬇️
default 85.96% <86.88%> (?)
expensive 35.51% <65.57%> (?)
linux 87.13% <88.52%> (-2.01%) ⬇️
linux_other 87.13% <88.52%> (+0.29%) ⬆️
oldsolvers 28.00% <27.86%> (+<0.01%) ⬆️
osx 82.04% <88.52%> (-1.01%) ⬇️
win 85.57% <88.52%> (+0.29%) ⬆️
win_other 85.57% <88.52%> (+0.29%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jsiirola jsiirola requested a review from mrmundt March 5, 2026 21:38
Copy link
Member

@blnicho blnicho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a couple (hopefully easy) questions

else
curl --max-time 150 --retry 8 \
-L $URL/idaes-solvers-windows-x86_64.tar.gz \
$URL/idaes-lib-windows-x86_64.tar.gz > $IPOPT_TAR
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We no longer need idaes-lib on Windows?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the better question here is, "Did we ever actually need it in the first place?", and I think the answer is "no."

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there was a time when we did need it (we were distributing some "standard libraries" that are always present on *nix). I think at some point we started compiling things more statically, which cut out the need for the extra libraries (or we changed how things were packaged so that the libraries we needed for the solvers were bundled with the solvers). Either way, I don't think there is anything in idaes-lib that we need for Pyomo testing.

@jsiirola jsiirola merged commit bdb22dd into Pyomo:main Mar 6, 2026
61 of 63 checks passed
@jsiirola jsiirola deleted the baron-license-check branch March 6, 2026 03:39
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