Automated_Install - hpgDesigns/hpgdesigns-dev.io GitHub Wiki

This page will walk you through the raw internals of the automated checkout, update, and build process, collectively called the automated install, assuming that you have the dependency packages already installed (such as Java JRE). Notice that this is not the official installation procedure - you should follow the Install page for that. This is more for understanding how a raw automated checkout is performed during installation time, especially from a developer or debugging point of view. However, following these instructions should get you a full checkout of the latest Enigma, which is usually equivalent to an install (aside from perhaps moving a few files around and auto-installing any dependencies that you may have been missing). Note that this process will provide a fully functional Linux and Mac install.

  • For Windows, you are usually recommended to run Enigma.exe, which will install and link various dependencies for you before delegating to LGM. Otherwise, LGM may give errors about ENIGMA failing to start.
  • For Linux, you are usually encouraged to use your package manager, which will handle its own checkout and updates, so the auto-update mechanism will be disabled.

For starters, as you should be well aware, LGM itself works out-of-the-box and is entirely self-sufficient, sans that you don't have a compiler. The next step, then, is to hook up the compiler, or at least the parts needed to get the compiler. This is the job of enigma.jar, aka The Plugin, which has a dependency on JNA for starters, and will also require SvnKit if you wish to enable auto-updates or checkout (as is the purpose of this article). From there, assuming you have SvnKit, it will attempt to fetch the compiler from the internets, and hopefully install/run it.

So to review, you need all these 4 parts, and they should all be up-to-date: LateralGM, named lgm16b4.jar, which should be placed in the parent directory (enigma-dev/lgm16b4.jar). We would recommend LGM r479, available in enigma r639 or later. The Plugin, named enigma.jar, which should be placed in the plugins/ directory (enigma-dev/plugins/enigma.jar). We would recommend one from enigma r640 or later. JNA, named jna.jar, which should be placed in plugins/shared directory (enigma-dev/plugins/shared/jna.jar). Version requirements are not specific, but it is available in enigma, last updated in r437 (or later). SvnKit, named svnkit.jar, which should be placed in the plugins/shared directory (enigma-dev/plugins/shared/svnkit.jar). You can copy it over from (Autoconf/svnkit.jar) if you placed it there. The Version requirements for it are not specific, but it is available in enigma, last updated in r639 (or later).

On Windows you also need an addition part: The ENIGMA executable, named ENIGMA.exe, which should be place in the parent directory (enigma-dev/ENIGMA.exe). You can copy it over from (compilerSource/stupidity-buffer/ENIGMA.exe) if you placed it there.

The Autoconf directory (if you do not have MinGW or OpenAL installed), the entire Autoconf folder should be placed in the parent directory (enigma-dev/ENIGMA.exe). This needs only been done to install MinGW and OpenAL if you have not got them, when running ENIGMA.exe these will be installed in the process.

With this structure in place, on Linux and Mac you should now be just able to run it from a terminal and all should run.

$ cd enigma-dev
$ java -jar lgm16b4.jar

On Windows you should execute enigma.exe which will install gcc.ey (compilers/windows/gcc.ey) and MinGW/OpanAL is necessary, then all should run.

Expected Install and Update Behavior

# Terminal will report standard LGM behavior, usually looking like this:

#:

Java Version: 10600 (1.6.0_20)
Loading lib files in /home/ismavatar/enigma-dev/lgm16b4.jar
01_move.lgl 02_main1.lgl 03_main2.lgl 04_control.lgl
 05_score.lgl 06_extra.lgl 07_draw.lgl
  1. LGM will silently fetch and run all plugins in the plugins/ folder. In this case, this means enigma.jar. If a plugin fails, it will report an error on the terminal. If JNA is missing or misbehaving, it will most likely error at this point.
  2. If the plugin successfully loaded, you should see an "Enigma" menu at the top of LGM.
  3. The Plugin will attempt to check for updates via SvnKit. This should not require an internet connection initially. If it fails, it is because svnkit is missing or misbehaving, and will report this on the terminal.
    • If this is a fresh install, you will get a popup saying "Enigma is missing libraries. Would you like us to fetch these libraries for you?".
      • Please select "Stable" and click "Yes". If you do not click "Yes", the checkout/install process will be cancelled until next run.
    • If you already installed, but updates are found, you will get a popup saying "Enigma has detected that newer libraries may exist. Would you like us to fetch these for you?".
      • Please click "Yes". If you do not click "Yes", the update process will be cancelled until next run.
  4. You should then be confronted with an Enigma Progress Console - a window with a textarea log and a progress bar, which will read "Downloading libraries. This may take a while." if this is a fresh checkout.
  5. The progress console will fill with all the files its checking out or updating.
  6. After completion, it may require a restart.
    1. A popup will inform you of this. Click OK
    2. The program will terminate.
    3. On non-Windows systems, you must restart manually (the way you did before). On Windows, this is usually handled automatically by Enigma.exe.
    4. It will silently check for updates again, but should not find any (unless a dev committed something between the time you checked out and the time you started the program again).
  7. It will now proceed with trying to contact Enigma and rebuilding if necessary. Upon rebuilding, it should display progress again in the Enigma Progress Console. For the details of this process, please consult #Expected Rebuild Behavior.

Expected Rebuild Behavior

Normal abort behavior

If at any point the process aborts for any reason (e.g. error, failure, or user cancellation), it should either report something in the terminal, or via a popop message, and Enigma aspects will either be invisible or non-functional, and attempting to access them (if visible) should give you a popup stating "ENIGMA is not functional due to prior errors". LGM, however, should continue to behave as normally - just without a compiler.

Discrepancies or Misbehavior

If any behavior described here does not seem to match your behavior, it may be a serious bug in either LateralGM or The Plugin, and should immediately be reported to one of the developers of either of those tools, such as User:IsmAvatar.