diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 602d0381..13049a2b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -31,7 +31,7 @@ Contributions are always welcome!
## EPP Committer and Maintainer Policy
For each EPP package,
-there is a commiter who is the package _maintainer_.
+there is a committer who is the package _maintainer_.
The maintainer is expected to participate in overall project discussions and to be involved in making decisions that affect the maintained package.
If someone is a committer on another Eclipse project,
diff --git a/RELEASING.md b/RELEASING.md
index 6807434e..b380cc56 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -1,20 +1,25 @@
# The EPP Release Process
-This guide contains the step-by-step process to complete an EPP release.
-The guide assumes that you have an IDE provisioned using the [Oomph setup](CONTRIBUTING.md#create-an-eclipse-development-environment).
+This guide contains the step-by-step process to complete an EPP release and assumes that you have an IDE provisioned using the [Oomph setup](
+https://github.com/eclipse-packaging/packages/blob/master/CONTRIBUTING.md#create-an-eclipse-development-environment).
**Before** copying this file to create a new issue titled `EPP 2026-03 M1` with label `endgame`, update the names and versions, including those in this document.
- [ ] To update names and versions, edit [org.eclipse.epp.releng.updater.Updater](
releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
) to set the values of `MILESTONE`, `PLATFORM_VERSION`, and possibly `EXECUTION_ENVIRONMENT` to the current appropriate values.
- - Use the `Run` toolbar button drop-down menu to launch the `Update Versions` launch configuration
- to apply all the necessary name and version changes.
+ - Use the `Run` toolbar button drop-down menu to launch the `Update Versions` launch configuration to apply all the necessary name and version changes.
+ - Or use the `Run` toolbar button drop-down menu to launch the `Open Issue` launch configuration to apply all the necessary name and version changes,
+ and to open a new properly-titled, properly-labeled issue;
+ the body text is too long to automatically create the body of the issue,
+ but that text is copied to the system clipboard,
+ so you can use simply paste it into the body.
The individual releases are tracked with [endgame](https://github.com/eclipse-packaging/packages/labels/endgame) issues on GitHub.
For each release (M1, M2, M3, RC1, RC2) an endgame ticket is created with the appropriate contents from the rest of this document:
-EPP releases happen for each milestone and release candidate according to the [Eclipse Simultaneous Release Plan](https://github.com/eclipse-simrel/.github/blob/main/wiki/Simultaneous_Release.md).
+EPP releases happen for each milestone and release candidate according to the [Eclipse Simultaneous Release Plan](
+https://github.com/eclipse-simrel/.github/blob/main/wiki/SimRel/2026-03.md)
**Steps at the beginning of each release cycle, i.e., before M1:**
@@ -39,7 +44,7 @@ Scroll down for the per-milestone/RC steps.
See near the end of the build output for a report of `check-incubating.sh` script.
- This item is not currently done per milestone/release because for a while now all packages contain incubating components and until TM4E moves out of incubation this step is redundant.
- The incubating indication should appear in feature.properties `description`, `plugin.xml`'s product `aboutText` and `about.properties` _blurb_.
- In the past `-incubation` had to appear in the file name and ` (includes Incubating components)` had to appear in `packageMetaData`.
+ In the past `-incubation` had to appear in the file name and `(includes Incubating components)` had to appear in `packageMetaData`.
See [Bug 564214](https://bugs.eclipse.org/bugs/show_bug.cgi?id=564214) for documentation/votes on decision making.
- [ ] On RC1 check "new and noteworthy" version numbers.
@@ -88,7 +93,7 @@ Scroll down for the per-milestone/RC steps.
_This can be done after promotion if time is tight or the notarization fails repeatedly._
_See [Bug 571669](https://bugs.eclipse.org/bugs/show_bug.cgi?id=571669) for an example of failures._
- [ ] Check the build script output to make sure that the curl calls were successful,
- e.g. no `curl: (92) HTTP/2 stream 0 was not closed cleanly: INTERNAL_ERROR (err 2) ` messages.
+ e.g., no `curl: (92) HTTP/2 stream 0 was not closed cleanly: INTERNAL_ERROR (err 2) ` messages.
If there is an error like the above, the .dmg file that is copied to download.eclipse.org is corrupt.
Run [notarize-prepare-to-redo](
https://ci.eclipse.org/packaging/job/notarize-prepare-to-redo/
@@ -151,8 +156,8 @@ This applies to all releases, i.e. M1, M2, M3, RC1 and R.
Everything except R is typically the Friday around 9:30am Ottawa time and the R is the following Wednesday sometime before 10am in coordination with the SimRel release engineer.
- [ ] Check that this worked:
- copy the composite\*M1.jar files over the composite\*.jar files in https://download.eclipse.org/technology/epp/packages/2026-03/ -
- this is done automatically with the
+ copy the composite\*M1.jar files over the composite\*.jar files in https://download.eclipse.org/technology/epp/packages/2026-03/ -
+ this is done automatically with the
[EPP Make Visible job](https://ci.eclipse.org/packaging/job/epp-makeVisible/)
which is automatically triggered by SimRel's
[SimRel Make Visible Job](https://ci.eclipse.org/simrel/view/All/job/simrel.releng.makeVisible/).
diff --git a/releng/org.eclipse.epp.config/oomph/EPP.setup b/releng/org.eclipse.epp.config/oomph/EPP.setup
index 8509783f..0d15044c 100644
--- a/releng/org.eclipse.epp.config/oomph/EPP.setup
+++ b/releng/org.eclipse.epp.config/oomph/EPP.setup
@@ -473,6 +473,34 @@
+
+
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+ <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
+ <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+ <listEntry value="/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java"/>
+ </listAttribute>
+ <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+ <listEntry value="1"/>
+ </listAttribute>
+ <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+ <listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+ </listAttribute>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
+ <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.epp.releng.updater.Updater"/>
+ <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="org.eclipse.epp.releng.updater"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-open-issue"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.epp.releng.updater"/>
+ </launchConfiguration>
+
+
+
@@ -608,9 +636,11 @@
<launchHistory>
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
<mruHistory>
+ <launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Open Issue"/> "/>
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Update Versions"/> "/>
</mruHistory>
<favorites>
+ <launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Open Issue"/> "/>
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Update Versions"/> "/>
</favorites>
</launchGroup>
diff --git a/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java b/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
index f7a0267c..1ea3767b 100644
--- a/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
+++ b/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
@@ -10,11 +10,16 @@
*/
package org.eclipse.epp.releng.updater;
+import java.awt.Desktop;
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
import java.io.IOException;
import java.net.URI;
+import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers;
+import java.nio.charset.StandardCharsets;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -23,6 +28,7 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;
@@ -72,6 +78,19 @@ public static void main(String[] args) throws IOException {
}
var root = currentWorkingDirectory.resolve("../../..").toRealPath();
new Updater(root).update();
+ if (List.of(args).contains("-open-issue")) {
+ var text = Files.readString(root.resolve("RELEASING.md"));
+ var joinedText = text.replaceAll("([,;:.a-z()-_*])\r?\n +([^-* ])", "$1 $2");
+ var issueURL = "https://github.com/eclipse-packaging/packages/issues/new?title="
+ + encode("EPP " + SIMREL_VERSION + " " + MILESTONE) + "&labels=endgame" + "&body="
+ + encode("\n");
+
+ // Can't do this because the URL is then too long + "&body=" + encode(text);
+ // So instead copy the text to the clipboard.
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(joinedText), null);
+
+ openURL(issueURL);
+ }
}
private Map contents = new LinkedHashMap<>();
@@ -253,7 +272,11 @@ private void visit(Path file) throws IOException {
+ " must be created with an empty p2 composite repository pointing to "
+ SIMREL_VERSION_MATCHER + " until M1",
SIMREL_VERSION, SIMREL_NEXT_VERSION, SIMREL_VERSION);
- apply(file, "issue titled `EPP " + SIMREL_VERSION_MATCHER + " " + SIMREL_QUALIFIER_MATCHER + "`", SIMREL_VERSION, MILESTONE);
+ apply(file, "issue titled `EPP " + SIMREL_VERSION_MATCHER + " " + SIMREL_QUALIFIER_MATCHER + "`",
+ SIMREL_VERSION, MILESTONE);
+ apply(file,
+ "https://github.com/eclipse-simrel/.github/blob/main/wiki/SimRel/" + SIMREL_VERSION_MATCHER + ".md",
+ SIMREL_VERSION);
}
}
@@ -283,4 +306,12 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
Files.writeString(entry.getKey(), entry.getValue());
}
}
+
+ private static String encode(String value) {
+ return URLEncoder.encode(value, StandardCharsets.UTF_8);
+ }
+
+ public static void openURL(String uri) throws IOException {
+ Desktop.getDesktop().browse(URI.create(uri));
+ }
}