Updating CapyMOA’s moa.jar
version#
This document describes how to change the version of MOA that the CapyMOA project uses. It is only intended for developers who are contributing to CapyMOA. Before you start, make sure you have the following:
You have installed the development dependencies and have an editable install of CapyMOA. If you have not, follow the instructions in the installation guide.
You must NOT have set the environment variables that would override the default
moa.jar
location.CAPYMOA_MOA_JAR
must be unset.
Refreshing the moa.jar
#
When a developer wants to replace the moa.jar
in their local CapyMOA as a
consequence of pulling or rebasing changes, they can run the following command:
python -m invoke refresh-moa
Changing Project MOA Version#
When a developer needs to update the version of MOA that the capymoa project uses they need to follow these steps:
Upload the new version of MOA to the CapyMOA Dropbox.
Please name the new version with the date, e.g.
240412_moa.jar
(yymmdd_moa.jar
) so we may rollback easily if needed.Update
invoke.yml
’smoa_url
to point to the new version of MOA.This file tells capymoa where to download the
moa.jar
from during the packaging process.Must be the complete URL.
Remove the old
moa.jar
withpython -m invoke refresh-moa
.Update
tests/test_moajar.py
with the updated sha256 hash.macOS:
shasum -a 256 moa_jar_file.jar
linux:
sha256sum moa_jar_file.jar
tests/test_moajar.py
is used to avoid using an outdated version of MOA by mistake. It will generate a warning for the user if the hash of themoa.jar
does not match the one in the file. The tests on Github Actions will fail if the hash does not match the file downloaded from the URL ininvoke.yml
.Verify that capymoa is pointing to the new version of MOA by running:
$ python -c "import capymoa; capymoa.about()" CapyMOA 0.2.0 CAPYMOA_DATASETS_DIR: ... CAPYMOA_MOA_JAR: .../CapyMOA/src/capymoa/jar/moa.jar CAPYMOA_JVM_ARGS: ['-Xmx8g', '-Xss10M'] JAVA_HOME: ... MOA version: A SHA256 hash of the actual JAVA version: ...
In particular, check the if the hash matches the one you calculated in the previous step. If it does not, you should double-check the URL in
invoke.yml
and re-runpython -m invoke build.clean-moa
andpython -m invoke build.download-moa
.Your pull request should include the changes to
invoke.yml
, andtests/test_moajar.py
.