Developer Guide

This is a guide for developers to follow for various parts of the repository. This is mostly intended for maintainers of SquirrelJME.

Accepting Changes

TO BE WRITTEN

Loading Contributions

TO BE WRITTEN

Via Fossil Bundles

TO BE WRITTEN

Via Git Bundles

TO BE WRITTEN

Merging Branches

To merge a branch locally, do the following:

Releasing

When a release is to be made, it is performed in another branch and becomes separate from trunk. This means that trunk is always in a state of perpetual development. Within these branches, there are bug fixes and releases. When a commit is ready for a release then it should just be tagged and built accordingly. It is best to avoid having releases and such in the trunk branch because it will complicate bug fixes and other things. So when a release is to be made:

RetroArch

For RetroArch, the SquirrelJME recipes should be updated to reflect the release tag.

Bug-fix and Otherwise Releases

If a bug-fix or otherwise has to be done on a release version, since the release is in its own branch, the work can be done in that branch. Any fixes should have already been made in trunk if applicable, then it can be cherry picked into the release branch. Then once the fixes have been made and a new version is released the release version should be incremented (that is 0.2.0 to 0.2.1 to 0.2.2). Then any of the release related stuff should be done.

Common Release Stuff

THIS IS OUT OF DATE AND WILL BE CHANGED TO BE DONE PURELY BY CI/CD, SO THAT IT IS AUTOMATICALLY DONE AND CHECKED WITHOUT ISSUE.

When a release is done, all of the binaries and according information must be updated. It is assumed that SQUIRRELJME is an environment variable to the root of the SquirrelJME source tree. Checkout the tag or commit which the release is to be done on. Then run the following command:

This will perform an auto-build of everything and then store the release in the $__release_version__ directory, these binaries are important. Once the binaries and sources are built, they should be uploaded to the following locations:

Importing SquirrelJME Into Another Project

Any one of SquirrelJME's modules can be used as a dependency for a project. Note that the versions that are used depend on if a release is being used or not, which is in the format of M.m.r for releases and M.m.r-SNAPSHOT for development versions. Note that even minor versions are releases (ex: 0.4.0), and odd minor versions are development versions (ex: 0.3.0-SNAPSHOT).

Snapshot Repository

<!-- Maven -->
<project>
    <repositories>
        <repository>
            <id>oss.sonatype.org-snapshot</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>
// Gradle
repositories {
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
}

Debugging

SquirrelJME's VMs may be debugged by having it connect to a debugger or waiting for a debug connection. Debugging happens purely over TCP/IP. It is not possible to use existing debuggers to debug SquirrelJME virtual machines there are debug interfaces available through standardized JDWP. Note that it is not recommended for the debugger port to be open to the internet as it will allow the remote debugger to have access to all the virtual machine internals.

Arguments to the virtual machines for SpringCoat, SummerCoat, etc.:

Instructions for specific debuggers: