Menu

Automated_Install

Hugh Greene

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.


Related

Wiki: Install
Wiki: JNA
Wiki: Java
Wiki: LateralGM
Wiki: Plugin
Wiki: SvnKit

MongoDB Logo MongoDB