oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 120 forks source link

Documentation for updating the cornerstones #159

Open tthsqe12 opened 4 years ago

tthsqe12 commented 4 years ago

I would like to document the process for updating Singular.jl, but I do not know where to put such a thing. The process is at the end of the message, and I hope @thofma can fix any mistakes. This took five days to get one line of code into the official Singular.jl, so I hope there is another method that developers can use in real time.


Instructions for updating Singular.jl

Here is a record of how we solved https://github.com/oscar-system/Singular.jl/issues/261 by getting the commit https://github.com/Singular/Singular/commit/48c4ba686b2356180aee77dfb59d6d9d7ade5cd9 into Singular.jl.

Singular.jl depends on two binary artifacts: Singular_jll for the actual binaries of Singular, and libsingular_julia_jll for the cxx-wrapped portion.

First, the pull request https://github.com/JuliaPackaging/Yggdrasil/pull/1622 bumps the SHA to an appropriate version of the Singular sources and the version 4.1.3p4 in the comment is actually 4.1.3+3 (the 4 is off by one). After the changes are merged, the repo https://github.com/JuliaBinaryWrappers/Singular_jll.jl is automagically updated and Singular_jll version 4.1.3+3 is usable from julia.

Next, since the bug fix in Singular is in a header file which also happens to be included by the cxx wrappers, libsingular_julia_jll needs to be updated as well. This involves making a new release of the repo https://github.com/oscar-system/libsingular-julia Since this is now version 0.2.0, the version and the SHA needs to be updated by https://github.com/JuliaPackaging/Yggdrasil/pull/1643 After this is merged, the repo https://github.com/JuliaBinaryWrappers/libsingular_julia_jll.jl is automagically updated and libsingular_julia_jll version 0.2.0 is usable.

Finally, an updated Singular.jl is make by bumping the versions in https://github.com/oscar-system/Singular.jl/commit/56ebe7bdfe977d29a1d97cb567e487d741ae9712 It is important to ping the JuliaRegistrator so that version 0.4.1 is usable.


new for libsingular_julia process as of a few months ago: update libsingular_julia/common.jl and version 1.3 https://github.com/JuliaPackaging/Yggdrasil/pull/2535 once this is merged in the registry (i.e. https://github.com/JuliaRegistries/General/pull/29881), a dummy commit for version 1.4 https://github.com/JuliaPackaging/Yggdrasil/pull/2536 once this is merged in the registry, another dummy commit for version 1.5 https://github.com/JuliaPackaging/Yggdrasil/pull/2537

fingolfin commented 4 years ago

Thank you for this. I'd like to have similar instructions for Polymake.jl and eventually GAP.jl, too. Where best to put them? Perhaps in a README.maintainer.md or etc/README.md file in the relevant package?