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