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