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

Windows-CI for stables create "-md.zip" binaries that are really "MT" #30

Open
jhmgoossens opened this issue Oct 12, 2024 · 2 comments
Open

Comments

@jhmgoossens
Copy link

The Windows-CI.yml builds for stable branches for the relevant coin-or project all create binaries that are called "-md.zip". These binaries seem to be built using the MSVC flag "MD" to include the Microsoft C runtimes as dynamic link libraries, but in reality these binaries statically link against the Microsoft C runtimes ("MT").

This is discussed in CyLP issue 204 and Cbc PR 674.

Note that the master branch binaries called "-md.zip" are not affected by this issue--these really are "-MD" binaries.

This issue for stables is caused by the fact that we simplified the windows-ci.yml in stables to --enable-msvc (like in masters), but we (I) didn't realize that the configure in master and stables are actually different in this respect: master configure expects --enable-msvc while stable configure supports --enable-msvc=MD, though "=MT" doesn't in work in stable (see above).

For now, to make "MD" binaries in stable, use --enable-msvc=MD and to make MT binaries use --enable-msvc. Maybe stable configure can be fixed here, but master configure already has this fixed by only supporting --enable-msvc which makes proper MD binaries.

This affect the following stables:

Not affected is DyLP (/~https://github.com/coin-or/DyLP) because if only has a master branch for which the "-md.zip" binaries are OK.

@tkralphs Which of the multiple stables have to be updated for CHiPPS-xx?

@jhmgoossens
Copy link
Author

As a result of these changes to windows-ci for stable branches all MSVC Windows binaries are built with "MD", so with dynamically linked runtime. None of the MSVC Windows binaries are "MT". See also learn.microsoft.com.

If you need "MT" binaries to be included in the release artefacts, please raise an issue.

@tkralphs
Copy link
Member

Hi @jhmgoossens, sorry for the delay in responding. It's easy to tell the projects that use the "new" build tools from the "old" by just looking for a subdirectory that is the same as the name of the project. If there is one, then it's the "old" build tools. If not, it's the "new. For ALPS (And BiCePS), it's admittedly a little confusing because there is a "new" version of the API developed long ago for use in DiSCO, but this is still using the older build tools (it has not been actively developed in some time). In the meantime, the version 1.5 with the "old" API, which is used by several other projects that are still actively developed, got upgraded to the "new" build tools. The story is similar for BiCePS. So these are the versions still on old build tools that are still used and need to be changed to MD:
ALPS 1.5
ALPS 2.0
BiCePS 0.99
BiCePS 0.94
BLIS 0.94

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