Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions KNOWN-ISSUES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Known Issues — Build Infrastructure & Tooling

*Captured: 2026-04-15, branch `core-ui-split`*

## 1. NPE in EcoreGeneratorFragment2 when genModel is not configured

**Issue:** dsldevkit/dsl-devkit#1309
**File:** `com.avaloq.tools.ddk.xtext.generator/src/.../ecore/EcoreGeneratorFragment2.java:93-94`
**Since:** commit `45aed05d7` (Feb 2022)

`EcoreGeneratorFragment2.generate()` passes null `genModel` to `CustomClassAwareEcoreGenerator`, which NPEs at `URI.createURI(genModel)`. The fragment is used in `GenerateTestLanguage.mwe2` line 68 with empty config `{}`. The standard `EMFGeneratorFragment2` on line 63 derives genModel automatically — this custom DDK fragment doesn't.

**Fix options:** Guard against null, derive from language config, or remove the fragment from the MWE2 workflow if redundant.

---

## 2. No "run all generators" launch config or Maven-based generation

**Files:** `com.avaloq.tools.ddk.workflow/src/.../Ddk.mwe2` (aggregator exists but no launch config)
**Launch configs exist only for:** GenerateCheck, GenerateCheckCfg, GenerateTestLanguage

`Ddk.mwe2` chains all DDK language generators (Expression, Export, Format, Scope, Check, CheckCfg, Valid, TypeModel, ModelInference) but has no Eclipse launch config. There's also no `xtext-maven-plugin` configured in any pom.xml, so generation can only happen from Eclipse by right-clicking individual `.mwe2` files. This blocks CI-based regeneration and is relevant to the core-ui-split migration (pure Maven modules could use `xtext-maven-plugin`).

---

## 3. itemis ANTLR p2 repository is dead

**URL:** `https://download.itemis.com/updates/releases/2.1.1/` → HTTP 404
**Direct jar still works:** `https://download.itemis.com/antlr-generator-3.2.0-patch.jar` → HTTP 200
**Maven Central alternative:** `org.eclipse.xtext:xtext-antlr-generator:2.1.1`

Xtext's `AntlrToolFacade` (in `org.eclipse.xtext.xtext.generator`) tries to load `de.itemis.xtext.antlr.toolrunner.AntlrToolRunner` from the classpath. If not found, it auto-downloads the jar to `./.antlr-generator-3.2.0-patch.jar`. The `.gitignore` files in `workflow/` and `sample.helloworld/` correctly hide these auto-downloads. No p2 repository anywhere currently hosts this feature — not Eclipse Orbit, not the Xtext update site (it's declared as `optional='true' greedy='false'`). Source: `github.com/xtext/org.xtext.antlr.generator`.

---

## 4. MWE2 workflow generates .xtend files that conflict with xtend-gen

Running `GenerateTestLanguage.mwe2` creates `.xtend` stub files in `src/` directories (e.g., `TestLanguageScopeProvider.xtend`, `TestLanguageProposalProvider.xtend`). These conflict with the `.java` files already in `xtend-gen/`, causing "type is already defined" errors. The `.xtend` files are generated by Xtext's `XtextGenerator` as user-editable stubs — but the project already has compiled versions in `xtend-gen/`. Either the `xtend-gen/` files should be cleaned before regeneration, or the `.xtend` stubs should be suppressed if they already exist.

**Affected modules:** `check.test.runtime`, `check.test.runtime.ui`

---

## 5. dsl-devkit structural issues (build infrastructure)

### 5a. No root pom.xml
The aggregator POM lives at `ddk-parent/pom.xml` instead of the repo root. All `<module>` entries use `../` relative paths. You must `cd ddk-parent` to build. Standard Maven convention is root pom.xml as aggregator.

### 5b. ddk-parent is both aggregator and parent
Normally these are separate — a root aggregator POM and a parent POM that child modules inherit. Combining them in a subdirectory creates the `../` path issue and makes `-pl` usage awkward.

### 5c. ddk-target uses old packaging
Uses `pom` packaging with `build-helper-maven-plugin` to attach the `.target` file. Modern Tycho uses `eclipse-target-definition` packaging natively (as demonstrated in the PoC at `eclipse-maven-split/com.example.target/`).

---

## 6. `-am` (also-make) broken for all Tycho modules

Not a bug — fundamental to manifest-first builds. All inter-module dependencies are in `MANIFEST.MF` (`Require-Bundle`), not in `pom.xml`. Maven's `-am` only reads POM dependencies, so it can't resolve the build graph. Demonstrated with `check.ui` which has 7 in-project `Require-Bundle` entries but zero `<dependency>` elements in its pom.xml.

**Fix:** The core-ui-split migration addresses this — pure Maven `jar` modules declare dependencies in pom.xml, making `-am` work. For Tycho modules that stay Tycho, mirroring `Require-Bundle` entries as POM `<dependency>` elements would also work.

---

## 7. Empty/orphaned modules

- `com.avaloq.tools.ddk.xtextspy/` — zero source files, only `bin/` and `target/` directories
- `com.avaloq.tools.ddk.xtextspy.test/` — zero source files, only `bin/` and `target/` directories

These appear to be leftover from removed functionality. Listed in `ddk-parent/pom.xml` as modules but contain no code.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Bundle-Vendor: Avaloq Group AG
Bundle-RequiredExecutionEnvironment: JavaSE-21
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime,
org.eclipse.text,
org.eclipse.xtext,
org.eclipse.xtext.xbase.lib,
org.apache.commons.lang3,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21&quot; javaProject=&quot;com.avaloq.tools.ddk.check.test.runtime&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;com.avaloq.tools.ddk.check.test.runtime&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.avaloq.tools.ddk.workflow/antlr-generator-3.2.0-patch.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
Expand Down
1 change: 0 additions & 1 deletion ddk-parent/readme.txt

This file was deleted.

21 changes: 0 additions & 21 deletions ddk-target/ddk-antlr.target

This file was deleted.