1# Release Procedures 2 3## Core library 4 5Some minor bookkeeping updates are needed when releasing a new verision of the core library. 6 7The version number must be updated in 8 9* `include/ceed/ceed.h` 10* `ceed.pc.template` 11* `Doxyfile` 12 13Additionally, the release notes in `doc/sphinx/source/releasenotes.rst` should be updated. 14 15## Julia 16 17libCEED's Julia interface (LibCEED.jl) has two components: 18 19* LibCEED.jl, the user-facing package that contains the Julia interface. 20* libCEED_jll, a binary wrapper package ("jll package") that contains prebuilt binaries of the 21 libCEED library for various architectures. 22 23When there is a new release of libCEED, both of these components need to be updated. First, 24libCEED_jll is updated, and then LibCEED.jl. 25 26### Updating libCEED_jll 27 28The binary wrapper package libCEED_jll is updated by making a pull request against 29[Yggdrasil](https://github.com/JuliaPackaging/Yggdrasil), the Julia community build tree. In this 30PR, the file `L/libCEED/build_tarballs.jl` should be changed to update version number and change the 31hash of the libCEED commit to use to build the binaries, similar to the following diff: 32```diff 33diff --git a/L/libCEED/build_tarballs.jl b/L/libCEED/build_tarballs.jl 34--- a/L/libCEED/build_tarballs.jl 35+++ b/L/libCEED/build_tarballs.jl 36@@ -3,11 +3,11 @@ 37 using BinaryBuilder, Pkg 38 39 name = "libCEED" 40-version = v"0.7.0" 41+version = v"0.8.0" 42 43 # Collection of sources required to complete build 44 sources = [ 45- GitSource("https://github.com/CEED/libCEED.git", "06988bf74cc6ac18eacafe7930f080803395ba29") 46+ GitSource("https://github.com/CEED/libCEED.git", "e8f234590eddcce2220edb1d6e979af7a3c35f82") 47 ] 48``` 49After the PR is merged into Yggdrasil, the new version of libCEED_jll will automatically be 50registered, and then we can proceed to update LibCEED.jl. 51 52### Updating LibCEED.jl 53 54After the binary wrapper package libCEED_jll has been updated, we are ready to update the main Julia 55interface LibCEED.jl. This requires updating the file `julia/LibCEED.jl/Project.toml` in the libCEED 56repository. The version number should be incremented, and the dependency on the updated version of 57libCEED_jll should be listed: 58```diff 59diff --git a/julia/LibCEED.jl/Project.toml b/julia/LibCEED.jl/Project.toml 60--- a/julia/LibCEED.jl/Project.toml 61+++ b/julia/LibCEED.jl/Project.toml 62@@ -1,7 +1,7 @@ 63 name = "LibCEED" 64 uuid = "2cd74e05-b976-4426-91fa-5f1011f8952b" 65-version = "0.1.0" 66+version = "0.1.1" 67 68 [deps] 69 CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82" 70@@ -26,4 +26,4 @@ Cassette = "0.3" 71 Requires = "1" 72 StaticArrays = "0.12" 73 UnsafeArrays = "1" 74-libCEED_jll = "0.7" 75+libCEED_jll = "0.8" 76``` 77Once this change is merged into libCEED's `main` branch, the updated package version can be 78registered using the GitHub registrator bot by commenting on the commit: 79 80> @JuliaRegistrator register branch=main subdir=julia/LibCEED.jl 81 82At this point, the bot should create against the [general Julia 83registry](https://github.com/JuliaRegistries/General), which should be merged automatically after a 84short delay. 85 86### Moving development tests to release tests 87 88LibCEED.jl has both _development_ and _release_ unit tests. The _release_ tests are run both with 89the current build of libCEED, and with the most recent release of libCEED_jll. The _development_ 90tests may use features which were not available in the most recent release, and so they are only run 91with the current build of libCEED. 92 93Upon release, the development tests may be moved to the release tests, so that these features will 94be tested against the most recent release of libCEED_jll. The release tests are found in the file 95`julia/LibCEED.jl/test/runtests.jl` and the development tests are found in 96`julia/LibCEED.jl/test/rundevtests.jl`. 97 98## Python 99 100ToDo - instructions for releasing an new Python wheel go here 101 102## Rust 103 104ToDo - instructions for releasing the three Rust crates go here 105