#!/bin/sh # Reads every .fls under corpus/ with Java FILIUS itself and writes # corpus/corpus.java.json. Java is the arbiter for the file format (plan §13, M2). # Needs a JDK (17+), Maven and xvfb-run: FILIUS opens its main window while # loading (Information.reset → JMainFrame), so it needs a display, not headless. set -eu here="$(cd "$(dirname "$0")" && pwd)" root="$(cd "$here/../.." && pwd)" commit=6640354 upstream="$here/.upstream" if [ ! -d "$upstream/.git" ]; then git clone -q https://gitlab.com/filius1/filius.git "$upstream" fi if [ "$(git -C "$upstream" rev-parse --short=7 HEAD)" != "$commit" ]; then git -C "$upstream" fetch -q origin git -C "$upstream" checkout -q "$commit" rm -rf "$upstream/target" fi if [ ! -f "$upstream/target/filius.jar" ]; then (cd "$upstream" && mvn -q -DskipTests package dependency:copy-dependencies -DoutputDirectory=target/lib) fi classpath="$upstream/target/filius.jar:$upstream/target/lib/*" mkdir -p "$here/.build" javac -encoding UTF-8 -d "$here/.build" -cp "$classpath" "$here/src/FlsOracle.java" "$here/src/GetterDefaults.java" # FILIUS writes its settings below $HOME; keep them out of the real one. mkdir -p "$here/.build/home" # Removed first: a crashed run must not leave the previous result standing. rm -f "$root/corpus/corpus.java.json" HOME="$here/.build/home" xvfb-run -a java -cp "$classpath:$here/.build" FlsOracle \ "$root/corpus" "$root/corpus/corpus.java.json" 2>&1 | grep -v 'logback\|^$' || true test -s "$root/corpus/corpus.java.json" # Getter defaults for the XMLEncoder references (packages/fls/src/javaDefaults.json). defaults="$root/packages/fls/src/javaDefaults.json" rm -f "$defaults" HOME="$here/.build/home" xvfb-run -a java -cp "$classpath:$here/.build" GetterDefaults "$defaults" \ filius.gui.netzwerksicht.JSidebarButton#iconTextGap \ filius.gui.netzwerksicht.JSidebarButton#verticalTextPosition \ filius.gui.netzwerksicht.JSidebarButton#displayedMnemonicIndex \ filius.gui.netzwerksicht.JSidebarButton#debugGraphicsOptions \ filius.gui.netzwerksicht.JSidebarButton#enabled \ java.lang.ThreadGroup#maxPriority \ filius.hardware.knoten.Rechner#maxLayerOfOperation \ filius.hardware.knoten.Notebook#maxLayerOfOperation \ filius.hardware.knoten.Vermittlungsrechner#maxLayerOfOperation \ filius.hardware.knoten.Gateway#maxLayerOfOperation \ filius.software.clientserver.ServerBaustein#port \ filius.software.dhcp.DHCPServer#port \ filius.software.dns.DNSServer#port \ filius.software.rip.RIPServer#port \ filius.software.www.WebServer#port \ 2>&1 | grep -v 'logback\|^$' || true test -s "$defaults"