xref: /libCEED/RELEASING.md (revision ff0d35f1d1ff56754730a89ffd053837f7b88549)
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