Clone
7
Build System
Patrick Gniza edited this page 2026-08-22 15:46:50 +02:00

Deutsch | English

Build System

The build system is split into independent layers and service images.

romexis-payload ----------------+--> romexis-server
                                +--> romexis-admin
                                +--> romexis-mromexis-app

romexis-client-payload ------------> romexis-client

romexis-base-jre ------------------> romexis-server

romexis-gui-runtime -----------+--> romexis-admin
                               +--> romexis-client

romexis-firebird-payload ----------> romexis-server

romexis-common -> server/gui runtime build sources

Build Components

Payload build

The payload build extracts the official Romexis Windows installer.

It produces:

/opt/romexis
/opt/romexis-mssql-db
/opt/romexis/version

It also provides files consumed by other service images, including Admin files and the mRomexis Web App WAR when available.

Client payload build

The Client payload is extracted from the same Windows installer with a separate copy map. It produces the files required by the standalone romexis-client image and is versioned as romexis-client-payload:<version>.

Firebird payload build

The Firebird payload build extracts the macOS installer database package.

It produces:

/opt/romexis-firebird-db
/opt/romexis-firebird-db/scripts
/opt/romexis-firebird-db/tools
/opt/romexis-firebird-db/templates

Server runtime build

romexis-base-jre provides reusable server runtime dependencies:

  • Java 11
  • JavaFX/OpenJFX
  • SQL Server tools
  • Firebird client libraries and tools
  • OS dependencies
  • Chilkat
  • Java property agent with embedded RxCr2 and RomexisOptionPaneUI runtime patches

GUI runtime build

romexis-gui-runtime contains the architecture-specific graphical stack shared by Admin and Client: Java 17/OpenJFX, X11/noVNC, Mesa/GTK, Chilkat, PropertyAgent with the Java 17 OptionPane null guard, and the DxService compatibility library.

Shared runtime sources

romexis-common/ is the single source location for RomexisPropertyAgent.java, RomexisOptionPaneUIPatch.java, the RxCr2 replacement and dxservice_dummy.c. The agent build embeds ASM and both targeted runtime patches into RomexisPropertyAgent.jar. These sources are compiled into the appropriate runtime images instead of being duplicated in final image directories.

Server image build

The final server image imports:

  • /opt/romexis from romexis-payload
  • /opt/romexis-mssql-db from romexis-payload
  • /opt/romexis-firebird-db from romexis-firebird-payload
  • server runtime from romexis-base-jre
  • runtime helper scripts

Admin image build

The Admin image imports Romexis Admin files from the payload and combines them with the shared browser-accessible romexis-gui-runtime.

Important runtime components:

Xvfb
Openbox
xcompmgr
x11vnc
noVNC/websockify
JavaFX

Client image build

The final Client image combines romexis-client-payload with romexis-gui-runtime and Client-specific startup/test scripts. It no longer inherits from the Admin image.

mRomexis Web App build

The mRomexis Web App image copies:

/opt/romexis/broker/mromexis-html.war

from the Romexis payload into Tomcat as:

/usr/local/tomcat/webapps/ROOT.war

This is only possible for Romexis 6.5.3 and newer.


Local Build Scripts

Local builds are handled through:

scripts/build-local.sh
scripts/build-local.ps1

Linux/macOS:

chmod +x scripts/build-local.sh
./scripts/build-local.sh all

Windows PowerShell:

.\scripts\build-local.ps1 -Targets all

Build individual image groups:

./scripts/build-local.sh server-runtime server
./scripts/build-local.sh gui-runtime admin client
./scripts/build-local.sh migration control

Manual Build Examples

The helper scripts are the supported manual entry point because they create the required runtime/payload dependency contexts consistently.

Build reusable runtimes:

./scripts/build-local.sh server-runtime gui-runtime

Build payloads explicitly:

./scripts/build-local.sh payload client-payload firebird-payload

Build final application images:

./scripts/build-local.sh server admin client mromexis

For Windows PowerShell the same targets are available:

.\scripts\build-local.ps1 -Targets server-runtime,gui-runtime,server,admin,client

Runtime Compose Relationship

The runtime Compose files use multi-architecture manifest tags instead of architecture-specific tags.

Feature branches use IMAGE_SUFFIX:

IMAGE_SUFFIX=-feature-romexis-admin

Runtime Compose image references then resolve to branch-specific manifests.


Docker Cache Cleanup

Buildx cache:

docker buildx prune -a -f

Builder cache:

docker builder prune -a -f

System cleanup:

docker system prune -a -f

Do not use --volumes unless you intentionally want to remove unused database/application volumes.