From 460c0021aa8e2553817154ac13b2024c97a07f40 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Mon, 1 May 2023 13:55:20 -0400 Subject: [PATCH] Move all dependencies to maven direct where possible Includes: - Sign all artifacts, particularly 3rd party with CDT's PGP key - Using maven version managed and updated by EF Webmasters - Update to latest SnakeYAML - Move some 3rd party dependencies to Import-Package (instead of Require-Bundle) --- Jenkinsfile | 19 ++++- .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 6 +- .../CMakePropertiesEvolutionTest.java | 3 +- .../META-INF/MANIFEST.MF | 7 +- .../internal/CMakePropertiesController.java | 6 +- .../cdt-full-pod-plus-eclipse-install.yaml | 10 +++ pom.xml | 19 ++++- releng/CDT.setup | 2 +- releng/org.eclipse.cdt.repo/pom.xml | 15 ++++ releng/org.eclipse.cdt.target/cdt.target | 80 +++++++++++++++---- releng/org.eclipse.cdt.target/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 3 +- 13 files changed, 144 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 34b1e2896d7..e56194241fd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,12 +8,22 @@ pipeline { timestamps() } stages { + stage('initialize PGP') { + steps { + container('cdt') { + withCredentials([file(credentialsId: 'secret-subkeys.asc', variable: 'KEYRING')]) { + sh 'gpg --batch --import "${KEYRING}"' + sh 'for fpr in $(gpg --list-keys --with-colons | awk -F: \'/fpr:/ {print $10}\' | sort -u); do echo -e "5\ny\n" | gpg --batch --command-fd 0 --expert --edit-key ${fpr} trust; done' + } + } + } + } stage('Code Formatting Checks') { steps { container('cdt') { timeout(activity: true, time: 30) { withEnv(['MAVEN_OPTS=-XX:MaxRAMPercentage=60.0']) { - sh 'MVN="/usr/share/maven/bin/mvn -Dmaven.repo.local=/home/jenkins/.m2/repository \ + sh 'MVN="/jipp/tools/apache-maven/latest/bin/mvn -Dmaven.repo.local=/home/jenkins/.m2/repository \ --settings /home/jenkins/.m2/settings.xml" ./releng/scripts/check_code_cleanliness.sh' } } @@ -25,8 +35,10 @@ pipeline { container('cdt') { timeout(activity: true, time: 20) { withEnv(['MAVEN_OPTS=-XX:MaxRAMPercentage=60.0']) { - sh "/usr/share/maven/bin/mvn \ + withCredentials([string(credentialsId: 'gpg-passphrase', variable: 'KEYRING_PASSPHRASE')]) { + sh '''/jipp/tools/apache-maven/latest/bin/mvn \ clean verify -B -V \ + -Dgpg.passphrase="${KEYRING_PASSPHRASE}" \ -Dmaven.test.failure.ignore=true \ -DexcludedGroups=flakyTest,slowTest \ -P baseline-compare-and-replace \ @@ -38,7 +50,8 @@ pipeline { -Dcdt.tests.dsf.gdb.versions=gdb.10,gdbserver.10 \ -Dmaven.repo.local=/home/jenkins/.m2/repository \ --settings /home/jenkins/.m2/settings.xml \ - " + ''' + } } } } diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF index cdef1b3f320..cf5434aa22f 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF @@ -14,7 +14,6 @@ Export-Package: org.eclipse.cdt.managedbuilder.core.tests, org.eclipse.cdt.projectmodel.tests Require-Bundle: org.eclipse.core.runtime, org.junit, - org.junit.jupiter.api, org.eclipse.core.resources, org.eclipse.ui, org.eclipse.ui.ide, @@ -26,4 +25,6 @@ Require-Bundle: org.eclipse.core.runtime, Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-17 Automatic-Module-Name: org.eclipse.cdt.managedbuilder.core.tests -Import-Package: com.google.gson +Import-Package: com.google.gson, + org.junit.jupiter.api;version="[5.9.3,6.0.0)", + org.junit.jupiter.api.function;version="[5.9.3,6.0.0)" diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF index fdf1b41feb8..a8ff015db30 100644 --- a/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF +++ b/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF @@ -4,10 +4,10 @@ Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.eclipse.cdt.cmake.core.tests Bundle-Version: 1.0.0.qualifier Fragment-Host: org.eclipse.cdt.cmake.core;bundle-version="1.5.0" +Import-Package: org.assertj.core.api;version="[3.24.2,4.0.0)", + org.junit.jupiter.api;version="[5.9.3,6.0.0)" Automatic-Module-Name: org.eclipse.cdt.cmake.core.tests Bundle-Vendor: %Bundle-Vendor Bundle-Copyright: %Bundle-Copyright -Require-Bundle: org.junit, - org.junit.jupiter.api, - org.assertj;bundle-version="3.14.0" +Require-Bundle: org.junit diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java index 3062a12f050..fc065c031eb 100644 --- a/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java +++ b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java @@ -22,6 +22,7 @@ import org.eclipse.cdt.cmake.core.internal.properties.CMakePropertiesBean; import org.eclipse.cdt.cmake.core.properties.CMakeGenerator; import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; @@ -56,7 +57,7 @@ public void testSaveLoadEvolution_1() throws IOException { extraArgs.add("arg2"); props.setExtraArguments(extraArgs); - Yaml yaml = new Yaml(new CustomClassLoaderConstructor(this.getClass().getClassLoader())); + Yaml yaml = new Yaml(new CustomClassLoaderConstructor(this.getClass().getClassLoader(), new LoaderOptions())); String output = yaml.dump(props); // try to load as evolved properties.. diff --git a/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF index 21f38df8eb1..0bd9a8014f4 100644 --- a/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF +++ b/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF @@ -12,8 +12,7 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.cdt.core;bundle-version="5.12.0", org.eclipse.tools.templates.freemarker;bundle-version="1.2.200", com.google.gson, - org.eclipse.cdt.jsoncdb.core, - org.yaml.snakeyaml;bundle-version="[1.14.0,2.0.0)" + org.eclipse.cdt.jsoncdb.core Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.cdt.cmake.core, @@ -21,4 +20,6 @@ Export-Package: org.eclipse.cdt.cmake.core, org.eclipse.cdt.cmake.core.properties Automatic-Module-Name: org.eclipse.cdt.cmake.core Bundle-Localization: plugin -Import-Package: org.eclipse.core.variables +Import-Package: org.eclipse.core.variables, + org.yaml.snakeyaml;version="[2.0.0,3.0.0)", + org.yaml.snakeyaml.constructor;version="[2.0.0,3.0.0)" diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java index 9997f85e3f8..44cdc77e5b3 100644 --- a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java +++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java @@ -27,6 +27,7 @@ import org.eclipse.cdt.cmake.core.properties.CMakeGenerator; import org.eclipse.cdt.cmake.core.properties.ICMakeProperties; import org.eclipse.cdt.cmake.core.properties.ICMakePropertiesController; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; @@ -66,8 +67,9 @@ public ICMakeProperties load() throws IOException { CMakePropertiesBean props = null; if (Files.exists(storageFile)) { try (InputStream is = Files.newInputStream(storageFile)) { - props = new Yaml(new CustomClassLoaderConstructor(this.getClass().getClassLoader())).loadAs(is, - CMakePropertiesBean.class); + var classLoader = this.getClass().getClassLoader(); + var clConstructor = new CustomClassLoaderConstructor(classLoader, new LoaderOptions()); + props = new Yaml(clConstructor).loadAs(is, CMakePropertiesBean.class); // props is null here if if no document was available in the file } } diff --git a/jenkins/pod-templates/cdt-full-pod-plus-eclipse-install.yaml b/jenkins/pod-templates/cdt-full-pod-plus-eclipse-install.yaml index f788287b877..7728bee973e 100644 --- a/jenkins/pod-templates/cdt-full-pod-plus-eclipse-install.yaml +++ b/jenkins/pod-templates/cdt-full-pod-plus-eclipse-install.yaml @@ -20,6 +20,11 @@ spec: readOnly: true - name: m2-repo mountPath: /home/jenkins/.m2/repository + - name: "jenkins-home" + mountPath: "/home/jenkins" + readOnly: false + - name: tools + mountPath: /jipp/tools - name: jnlp resources: requests: @@ -37,3 +42,8 @@ spec: path: settings.xml - name: m2-repo emptyDir: {} + - name: "jenkins-home" + emptyDir: {} + - name: tools + persistentVolumeClaim: + claimName: tools-claim-jiro-cdt diff --git a/pom.xml b/pom.xml index 7ccb48fbd38..8d88f0b8bf5 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ runs with. It may work with older versions, but this is not tested or supported. --> 3.6.3 - 3.0.3 + 3.0.5 1.3.4 jacoco http://ci.eclipse.org/cdt/job/cdt-master/lastSuccessfulBuild/artifact/releng/org.eclipse.cdt.repo/target/repository @@ -990,6 +990,23 @@ + + org.eclipse.tycho + tycho-gpg-plugin + ${tycho-version} + + + pgpsigner + + sign-p2-artifacts + + + 4F23165B6AC51B15 + false + + + + diff --git a/releng/CDT.setup b/releng/CDT.setup index 111673869c0..20cd3b5d1d4 100644 --- a/releng/CDT.setup +++ b/releng/CDT.setup @@ -246,7 +246,7 @@ + url="https://download.eclipse.org/oomph/simrel-orbit/milestone/latest/"/> ${project.artifactId} + + + + production + + + + org.eclipse.tycho + tycho-gpg-plugin + + + + + + diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target index 5cf7b3f106a..9100df3b367 100644 --- a/releng/org.eclipse.cdt.target/cdt.target +++ b/releng/org.eclipse.cdt.target/cdt.target @@ -1,6 +1,6 @@ - + @@ -51,23 +51,13 @@ - - + - - - - - - - - - - - - + + + @@ -92,6 +82,66 @@ 1.7.36 jar + + com.google.code.gson + gson + 2.10.1 + jar + + + org.apache.commons + commons-compress + 1.23.0 + jar + + + org.assertj + assertj-core + 3.24.2 + jar + + + org.freemarker + freemarker + 2.3.32 + jar + + + org.junit.jupiter + junit-jupiter-api + 5.9.3 + jar + + + org.junit.jupiter + junit-jupiter-engine + 5.9.3 + jar + + + org.mockito + mockito-core + 5.3.1 + jar + + + org.yaml + snakeyaml + 2.0 + jar + + + net.java.dev.jna + jna-platform + 5.13.0 + jar + + + net.java.dev.jna + jna + 5.13.0 + jar + diff --git a/releng/org.eclipse.cdt.target/pom.xml b/releng/org.eclipse.cdt.target/pom.xml index a78cf7fa41a..effe3589f81 100644 --- a/releng/org.eclipse.cdt.target/pom.xml +++ b/releng/org.eclipse.cdt.target/pom.xml @@ -31,7 +31,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.3.0 + 3.4.0 attach-artifacts diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF index 0e3e58716c5..3f04bb48196 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF +++ b/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF @@ -9,7 +9,6 @@ Require-Bundle: org.junit, org.eclipse.tm.terminal.control;bundle-version="4.5.0", org.eclipse.core.runtime, org.eclipse.ui, - org.junit.jupiter.api, org.opentest4j Bundle-RequiredExecutionEnvironment: JavaSE-17 Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true, @@ -21,4 +20,6 @@ Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true, org.eclipse.tm.internal.terminal.textcanvas;x-internal:=true, org.eclipse.tm.terminal.model, org.eclipse.tm.terminal.test +Import-Package: org.junit.jupiter.api;version="[5.9.3,6.0.0)", + org.junit.jupiter.api.function;version="[5.9.3,6.0.0)" Automatic-Module-Name: org.eclipse.tm.terminal.test