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

Upgrade Clp -- v1.17.9 #8066

Closed
wants to merge 7 commits into from
Closed

Conversation

amontoison
Copy link
Contributor

Dependency("MUMPS_seq_jll", compat="$(MUMPS_seq_version)"),
Dependency("OpenBLAS32_jll", OpenBLAS32_version),
Dependency("CompilerSupportLibraries_jll"),
Dependency(PackageSpec(name="CoinUtils_jll", uuid="be027038-0da8-5614-b30d-e42594cb92df"), compat="$(CoinUtils_version)"),
Copy link
Contributor

Choose a reason for hiding this comment

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

Okay. Confession time. I've been putting this off because the previous releases did not use strict = compat bounds. So it's highly probable that releasing new CoinUtils etc will break Clp.

I think we should retroactively fix all the compat bounds, but I haven't gotten around to it yet. Partially because there is less and less motivation to fix the COIN stuff now that HiGHS works so well.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

alexis@HP-Spectre:~/Bureau/git/Yggdrasil$ grep -nr CoinUtils_jll .
./C/Coin-OR/Bonmin/build_tarballs.jl:67:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/Cgl/build_tarballs.jl:63:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/BiCePS/build_tarballs.jl:46:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/ALPS/build_tarballs.jl:47:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/Cbc/build_tarballs.jl:68:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/Osi/build_tarballs.jl:61:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/MibS/build_tarballs.jl:43:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/SYMPHONY/build_tarballs.jl:55:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/CHiPPS_BLIS/build_tarballs.jl:41:    Dependency("CoinUtils_jll", compat="$(CoinUtils_version)"),
./C/Coin-OR/Clp/build_tarballs.jl:82:    Dependency(PackageSpec(name="CoinUtils_jll", uuid="be027038-0da8-5614-b30d-e42594cb92df"), compat="$(CoinUtils_version)"),

It will impact a lot of packages if I upgrade CoinUtils_jll with LBT.
Maybe it's not a good idea to updete the COIN-OR packages.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes... I should have fixed the compat ages ago, but it wasn't standard practice when I worked on them all. We thought that following semver was enough...

Copy link
Contributor

Choose a reason for hiding this comment

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

I had to draw a graph of all the COIN-OR dependencies to figure out the right order to update them all in...

Copy link
Contributor

Choose a reason for hiding this comment

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


make -j${nproc}
make install
"""

platforms = supported_platforms()
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
platforms = supported_platforms()
# platforms is a global constant defined in coin-or-common.jl

Copy link
Contributor Author

Choose a reason for hiding this comment

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

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = expand_cxxstring_abis(supported_platforms())
platforms = filter!(!Sys.isfreebsd, platforms)

We don't want to use expand_cxxstring_abis is the code if it is not in C++.
We don't apply expand_gfortran_versions by default for the same reason.
I also don't think that FreeBSD is an issue now.

I suppose that you added these options a long time ago.

Copy link
Contributor

@odow odow Jul 16, 2024

Choose a reason for hiding this comment

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

We don't want to use expand_cxxstring_abis is the code if it is not in C++

Clp is written in C++?

I think they got added because at one point the auditor complained. But that was definitely a number of years ago so things might have changed.

@odow
Copy link
Contributor

odow commented Jul 16, 2024

Error is
image

--with-coinutils-lib="-lCoinUtils" \
--with-osi-lib="-lOsi -lCoinUtils" \
--with-mumps-lib="-L${libdir} -ldmumps -lzmumps -lcmumps -lsmumps -lmumps_common -lmpiseq -lpord -lmetis -lopenblas -lgfortran -lpthread" \
Copy link
Contributor

Choose a reason for hiding this comment

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

I guess we needed to expand on fortran versions because of this

Copy link
Contributor Author

@amontoison amontoison Jul 16, 2024

Choose a reason for hiding this comment

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

I don't think so because Clp doesn't contain Fortran code.
It's MUMPS that is linked to libgfortran.
We need all these options only if we use static libraries.
Because we have a shared library libdmumps.$dlext, this library is already linked to libmetis, libpord, libgfortran etc...

@amontoison
Copy link
Contributor Author

Error is image

Thanks Oscar! We need to update an option for the finding the include directory of MUMPS.

@odow
Copy link
Contributor

odow commented Jul 17, 2024

I tried this locally and needed:

    --with-blas \
    --with-blas-lib="-L${libdir} ${LBT}" \
    --with-lapack \
    --with-lapack-lib="-L${libdir} ${LBT}" \
    --with-coinutils-lib="-lCoinUtils" \
    --with-osi-lib="-lCoinUtils -lOsi" \
    --with-mumps-lib="-L${libdir} -ldmumps -lmpiseq" \
    --with-mumps-incdir="${includedir}/libseq" \
    --with-metis-lib="-L${libdir} -lmetis" \
    --with-metis-incdir="${includedir}"

@odow
Copy link
Contributor

odow commented Jul 17, 2024

Updated at #9088

@amontoison amontoison closed this Jul 17, 2024
@amontoison amontoison deleted the clp_lbt branch July 17, 2024 01:59
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.

2 participants