Some information for maintainers of the GAP.jl packages
-
Switch to the
master
branch andcd
into the root directory of the git repository. -
Update the version of the Julia and GAP packages by invoking the script
etc/update_version.sh
with the new version as argument. Example:etc/update_version.sh 0.3.0
(by the way, this is shell script which callsperl
right now; it would make sense to rewrite it as a Julia script to avoid the need for perl). -
git push
-
Ideally wait for Travis CI to complete the full CI tests for the commit you just pushed
-
Comment on the commit on GitHub with the message
@JuliaRegistrator register
(see here for an example).
The latter works because we have set up a GitHub Action for Julia TagBot to tag and make the release automatically.
To do this, open a pull request for https://github.com/JuliaPackaging/Yggdrasil.
The files to edit there are in G/GAP
(produces a JLL with compiled code for
the GAP kernel) and G/GAP_lib
(produces a JLL with the GAP library code, no
binaries). Usually, those two JLLs should be updated simultaneously; but if
one knows that only the kernel resp. only the GAP library, one can also
deviate from this.
When the C sources in pkg/JuliaInterface/src
change, this JLL should be updated.
To do this, open a pull request for https://github.com/JuliaPackaging/Yggdrasil.
The file to edit there is G/GAP_pkg/GAP_pkg_juliainterface/build_tarballs.jl
.
Increment the version and the git SHA1 hash.
This can be useful for various reasons e.g.,
- you need to test GAP.jl with a newer GAP version, perhaps even its master branch
- you need to test with a newer Julia version that breaks binary compatibility
- you need to test with a Julia debug build
For this to work, follow these instructions:
-
Obtain a copy of the GAP sources, probably from a clone of the GAP git repository. Let's say this is in directory
GAPROOT
. -
Compiled GAP inside GAPROOT once (this is to ensure
build/c_oper1.c
andbuild/c_type1.c
are present). -
Build GAP with the Julia version of your choice by executing the
etc/setup_override_dir.jl
script. It takes as first argument the GAPROOT, and as second argument the places where the result shall be installed. I recommend to execute this in a separate environment, as it may need to install a few things.To give a concrete example you could invoke
julia --proj=override etc/setup_override_dir.jl $GAPROOT /tmp/gap_jll_override
-
Use the
etc/run_with_override.jl
script with the exact same Julia executable and the override environment we just prepared.julia --proj=override etc/run_with_override.jl /tmp/gap_jll_override
-
This opens a Julia session with the override in effect. You can now e.g. load GAP.jl via
using GAP
, or install other packages (such as Oscar) and test with them.
using ArtifactUtils
add_artifact!(
"Artifacts.toml",
"gap_packages",
"https://github.com/gap-system/PackageDistro/releases/download/v4.13.1/packages.tar.gz";
force=true
)