Skip to content

Commit 14ea582

Browse files
Add first draft for README.maintainer.md (#1203)
Co-authored-by: Max Horn <[email protected]>
1 parent 8c44a29 commit 14ea582

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

README.maintainer.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Directions for updating GAP.jl
2+
3+
`GAP.jl` depends on the GAP kernel, the GAP library,
4+
and some glue code in the `JuliaInterface` GAP package,
5+
which is located in the `pkg/JuliaInterface/` directory.
6+
Additionally, there are various GAP packages that either
7+
depend on a GAP kernel extension, or some binary that
8+
is not part of GAP.
9+
10+
Compiled versions of each are distributed to users
11+
as binary artifacts via the Julia "JLL" packages `GAP_jll`,
12+
`GAP_lib_jll`, `GAP_pkg_juliainterface_jll`, and
13+
various `GAP_pkg_*_jll` packages (where `*` stands for
14+
the name of the GAP package written in all lowercase).
15+
16+
The build recipes for these JLL packages can be found here:
17+
18+
- <https://github.com/JuliaPackaging/Yggdrasil/blob/master/G/GAP/build_tarballs.jl>
19+
- <https://github.com/JuliaPackaging/Yggdrasil/blob/master/G/GAP_lib/build_tarballs.jl>
20+
- <https://github.com/JuliaPackaging/Yggdrasil/blob/master/G/GAP_pkg/GAP_pkg_juliainterface/build_tarballs.jl>
21+
- <https://github.com/JuliaPackaging/Yggdrasil/tree/master/G/GAP_pkg>
22+
23+
## Updating the glue code in `juliainterface`
24+
25+
Suppose just the code in `juliainterface` was updated, without any changes to GAP itself.
26+
Then `GAP_pkg_juliainterface_jll` needs to be rebuilt before the next GAP.jl release.
27+
One can detect that such a rebuild is necessary when the CI job `treehash` in the GAP.jl
28+
repository fails in a PR.
29+
30+
1. Merge that PR.
31+
32+
2. After the changes are merged (and before the next `GAP.jl` release), update
33+
the `GAP_pkg_juliainterface` build recipe with a new version number and using the
34+
latest commit SHA for the `master` branch of `GAP.jl`.
35+
> ex: <https://github.com/JuliaPackaging/Yggdrasil/pull/11582>
36+
37+
3. Wait for this to be merged into Yggdrasil, and then wait for the registry
38+
to pick up the new version of `GAP_pkg_juliainterface_jll`.
39+
> ex: <https://github.com/JuliaRegistries/General/pull/134045>
40+
41+
4. Bump the dependence in `GAP.jl` to whatever version number was used in Step 2.
42+
In this PR, the `treehash` CI job should succeed.
43+
> ex: <https://github.com/oscar-system/GAP.jl/pull/1200>
44+
45+
5. (Optional) Release a new `GAP.jl`. This is done by pinging JuliaRegistrator in the comments of a commit.
46+
> ex: <https://github.com/oscar-system/GAP.jl/commit/21d5dd6b4ff8457649a922f0d5ba4a4414502f27#commitcomment-161267536>
47+
48+
49+
## Build against a new `libjulia` version
50+
51+
This needs to be done regularly, or as soon as some weird crashes start
52+
happening on a new julia release or on julia nightly.
53+
54+
1. Wait for someone to update `libjulia_jll` to a new version.
55+
56+
2. Update the GAP build recipe by bumping the patch part of the version,
57+
and changing the `libjulia_jll` version number to the new one.
58+
> ex: <https://github.com/JuliaPackaging/Yggdrasil/pull/11335>
59+
60+
3. Wait for the Yggdrasil merge, and wait for the registry.
61+
62+
4. Update the `GAP_pkg_juliainterface` build recipe with the version number of the
63+
`GAP_jll` from the previous step, bump the patch part of `offset`,
64+
and change the `libjulia_jll` version number to the new one.
65+
> ex: <https://github.com/JuliaPackaging/Yggdrasil/pull/11336>
66+
67+
5. Wait for the Yggdrasil merge, and wait for the registry.
68+
69+
4. Bump the dependence in `GAP.jl` to whatever version numbers were released in Steps 3 and 5.
70+
71+
72+
## Updating GAP
73+
74+
After a new GAP version is released, the following steps are necessary to update
75+
all of the JLL packages that depend on GAP.
76+
77+
1. Update the GAP build recipe with the new `upstream_version` and SHA256 of the release tarball
78+
> ex: <https://github.com/JuliaPackaging/Yggdrasil/pull/9937>
79+
80+
In this specific commit, there was also an update to `Readline_jll` and some build flags,
81+
but that should not be needed in most cases.
82+
83+
2. Wait for the Yggdrasil merge, and wait for the registry.
84+
> ex: <https://github.com/JuliaRegistries/General/pull/120909>
85+
86+
3. Update the GAP_lib build recipe with the new `upstream_version` and SHA256 of the release tarball
87+
> ex: <https://github.com/JuliaPackaging/Yggdrasil/pull/9938>
88+
89+
4. Wait for the Yggdrasil merge, and wait for the registry.
90+
> ex: <https://github.com/JuliaRegistries/General/pull/120893>
91+
92+
TODOs:
93+
- update `G/GAP_pkg/update.jl` (in Yggdrasil): `upstream_version`, `gap_version`, `gap_lib_version`, juliainterface `upstream_version`
94+
- run `G/GAP_pkg/update.jl` (in Yggdrasil) and push the result in multiple small PRs which each touch 3-5 folders, wait for all of them to be merged and released to the registry
95+
- run `etc/update_artifact.jl` (in GAP.jl)
96+
- update compat bounds of all JLLs
97+
- (optionally) release GAP.jl

0 commit comments

Comments
 (0)