You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/site/markdown/SignProducts.md
+147Lines changed: 147 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -128,3 +128,150 @@ Now we need to package them as zip files again and place them at the location wh
128
128
## Result
129
129
130
130
You will now end up with a product for windows that only have `eclipse.exe` (or whatever your launcher name was) without the corresponding `eclipsec.exe`, you can find the example [here](https://github.com/eclipse-tycho/tycho/tree/master/demo/custom-signing-product).
131
+
132
+
## Implementation Details
133
+
134
+
This section explains where in Tycho and Eclipse P2 the product binary zip files are created and how they flow through the build system. Understanding this implementation can help when troubleshooting or customizing the product signing process.
135
+
136
+
### Overview of the Product Publishing Flow
137
+
138
+
The product publishing process in Tycho involves several components working together:
139
+
140
+
1.**PublishProductMojo** - The entry point Maven mojo
141
+
2.**PublishProductToolImpl** - Tycho's implementation of product publishing
142
+
3.**Eclipse P2 ProductAction** - P2's publisher action for products
- Obtains the Equinox executable feature (launcher binaries) from dependencies
156
+
- Delegates to `PublishProductToolImpl` for actual publishing
157
+
- Calculates SHA-256 checksums for published binary artifacts
158
+
159
+
The mojo extracts the launcher binaries from `org.eclipse.equinox.executable` feature if the product includes launchers (`includeLaunchers()` returns true). These binaries are passed to the publishing tool.
This is where the binary executable artifacts are actually created:
191
+
192
+
1.**Branding**: Applies product branding to executables (icons, names, etc.)
193
+
2.**Artifact Key Creation**: Creates a binary artifact key using `PublisherHelper.createBinaryArtifactKey()`
194
+
3.**Zip Creation**: The `publishArtifact()` method (from `AbstractPublisherAction`) creates a temporary zip file containing all launcher files using `FileUtils.zip()`
195
+
4.**Publishing**: The zip is written to the artifact repository via `destination.getOutputStream(descriptor)`
196
+
197
+
The classifier for these artifacts follows the pattern: `<product-id>.executable.<ws>.<os>.<arch>` (e.g., `myproduct.executable.win32.win32.x86_64`).
This allows Tycho to integrate Maven concepts (GAV coordinates, classifiers) with P2's metadata model while leveraging P2's publisher infrastructure for the actual product generation.
0 commit comments