From 7b0619770988bc63962a412ff16546db94b08888 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Tue, 2 Jan 2024 19:47:38 +0100 Subject: [PATCH] Add required OSGi capability to wire o.e.swt to its native fragments This ensures that the org.eclipse.swt bundle can only resolve if a the native fragment of the current platform is available in the OSGi runtime. This also has the effect that for launches, where dependencies are added automatically, the native fragment of the current platform is always added without anything external that enforces its presence (like a feature). Consequently this also allows to remove the p2 instructions doing the same at p2 level. Fixes https://github.com/eclipse-platform/eclipse.platform.swt/issues/490 --- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- binaries/pom.xml | 60 ------------------- .../org.eclipse.swt.svg/META-INF/MANIFEST.MF | 2 +- bundles/org.eclipse.swt.svg/META-INF/p2.inf | 32 ---------- bundles/org.eclipse.swt/META-INF/MANIFEST.MF | 1 + bundles/org.eclipse.swt/META-INF/p2.inf | 46 -------------- bundles/org.eclipse.swt/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 1 + .../META-INF/p2.inf | 10 ---- 17 files changed, 22 insertions(+), 159 deletions(-) delete mode 100644 bundles/org.eclipse.swt.svg/META-INF/p2.inf delete mode 100644 bundles/org.eclipse.swt/META-INF/p2.inf delete mode 100644 examples/org.eclipse.swt.examples.ole.win32/META-INF/p2.inf diff --git a/binaries/org.eclipse.swt.cocoa.macosx.aarch64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.cocoa.macosx.aarch64/META-INF/MANIFEST.MF index 7b8d69e1809..47449e1cadb 100644 --- a/binaries/org.eclipse.swt.cocoa.macosx.aarch64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.cocoa.macosx.aarch64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.cocoa.macosx.aarch64; singleton:=true @@ -29,3 +29,4 @@ SWT-WS: cocoa SWT-OS: macosx SWT-Arch: aarch64 Automatic-Module-Name: org.eclipse.swt.cocoa.macosx.aarch64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF index dfd9ce6f164..740129d5354 100644 --- a/binaries/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.cocoa.macosx.x86_64; singleton:=true @@ -29,3 +29,4 @@ SWT-WS: cocoa SWT-OS: macosx SWT-Arch: x86_64 Automatic-Module-Name: org.eclipse.swt.cocoa.macosx.x86_64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.gtk.linux.aarch64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.gtk.linux.aarch64/META-INF/MANIFEST.MF index b6b713365c2..f9aa3e63b56 100644 --- a/binaries/org.eclipse.swt.gtk.linux.aarch64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.gtk.linux.aarch64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.gtk.linux.aarch64; singleton:=true @@ -34,3 +34,4 @@ SWT-WS: gtk SWT-OS: linux SWT-Arch: aarch64 Automatic-Module-Name: org.eclipse.swt.gtk.linux.aarch64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.gtk.linux.loongarch64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.gtk.linux.loongarch64/META-INF/MANIFEST.MF index 0de3979c8e6..d4c0d2ba389 100644 --- a/binaries/org.eclipse.swt.gtk.linux.loongarch64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.gtk.linux.loongarch64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.gtk.linux.loongarch64; singleton:=true @@ -34,3 +34,4 @@ SWT-WS: gtk SWT-OS: linux SWT-Arch: loongarch64 Automatic-Module-Name: org.eclipse.swt.gtk.linux.loongarch64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.gtk.linux.ppc64le/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.gtk.linux.ppc64le/META-INF/MANIFEST.MF index 08a01b1ff35..74245636808 100644 --- a/binaries/org.eclipse.swt.gtk.linux.ppc64le/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.gtk.linux.ppc64le/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.gtk.linux.ppc64le;singleton:=true @@ -34,3 +34,4 @@ SWT-WS: gtk SWT-OS: linux SWT-Arch: ppc64le Automatic-Module-Name: org.eclipse.swt.gtk.linux.ppc64le +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.gtk.linux.riscv64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.gtk.linux.riscv64/META-INF/MANIFEST.MF index f28d79d1f91..7fcdaed1842 100644 --- a/binaries/org.eclipse.swt.gtk.linux.riscv64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.gtk.linux.riscv64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.gtk.linux.riscv64; singleton:=true @@ -34,3 +34,4 @@ SWT-WS: gtk SWT-OS: linux SWT-Arch: riscv64 Automatic-Module-Name: org.eclipse.swt.gtk.linux.riscv64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.gtk.linux.x86_64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.gtk.linux.x86_64/META-INF/MANIFEST.MF index c8636c6c6c1..e2f00f18f07 100644 --- a/binaries/org.eclipse.swt.gtk.linux.x86_64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.gtk.linux.x86_64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.gtk.linux.x86_64; singleton:=true @@ -34,3 +34,4 @@ SWT-WS: gtk SWT-OS: linux SWT-Arch: x86_64 Automatic-Module-Name: org.eclipse.swt.gtk.linux.x86_64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.win32.win32.aarch64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.win32.win32.aarch64/META-INF/MANIFEST.MF index b6c2693b450..a700ca488d8 100644 --- a/binaries/org.eclipse.swt.win32.win32.aarch64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.win32.win32.aarch64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.win32.win32.aarch64; singleton:=true @@ -33,3 +33,4 @@ SWT-WS: win32 SWT-OS: win32 SWT-Arch: aarch64 Automatic-Module-Name: org.eclipse.swt.win32.win32.aarch64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/org.eclipse.swt.win32.win32.x86_64/META-INF/MANIFEST.MF b/binaries/org.eclipse.swt.win32.win32.x86_64/META-INF/MANIFEST.MF index 1be8809fcda..542e840910d 100644 --- a/binaries/org.eclipse.swt.win32.win32.x86_64/META-INF/MANIFEST.MF +++ b/binaries/org.eclipse.swt.win32.win32.x86_64/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Fragment-Host: org.eclipse.swt;bundle-version="[3.128.0,4.0.0)" +Fragment-Host: org.eclipse.swt;bundle-version="[3.135.100,4.0.0)" Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.swt.win32.win32.x86_64; singleton:=true @@ -33,3 +33,4 @@ SWT-WS: win32 SWT-OS: win32 SWT-Arch: x86_64 Automatic-Module-Name: org.eclipse.swt.win32.win32.x86_64 +Provide-Capability: eclipse.swt;implementation="native";version:Version="3.135.100" diff --git a/binaries/pom.xml b/binaries/pom.xml index ebe22394a68..37da911287c 100644 --- a/binaries/pom.xml +++ b/binaries/pom.xml @@ -44,60 +44,6 @@ - - org.eclipse.tycho - target-platform-configuration - - - - - linux - gtk - x86_64 - - - linux - gtk - aarch64 - - - linux - gtk - ppc64le - - - linux - gtk - riscv64 - - - win32 - win32 - x86_64 - - - win32 - win32 - aarch64 - - - macosx - cocoa - x86_64 - - - macosx - cocoa - aarch64 - - - - org.apache.maven.plugins maven-surefire-plugin @@ -173,12 +119,6 @@ target-platform-configuration JavaSE-${maven.compiler.release} - - - - true - - diff --git a/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF index f51e06d1b83..5091cce568c 100644 --- a/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF @@ -23,4 +23,4 @@ Provide-Capability: osgi.serviceloader; osgi.serviceloader="com.github.weisj.jsvg.logging.LogManager"; register:="org.eclipse.swt.svg.logging.JVSGLoggerLogManager" - +Require-Capability: eclipse.swt; filter:="(implementation=native)" diff --git a/bundles/org.eclipse.swt.svg/META-INF/p2.inf b/bundles/org.eclipse.swt.svg/META-INF/p2.inf deleted file mode 100644 index 9818f97c079..00000000000 --- a/bundles/org.eclipse.swt.svg/META-INF/p2.inf +++ /dev/null @@ -1,32 +0,0 @@ -# ensure that the applicable implementation fragment gets installed (https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/3006) -requires.1.namespace = org.eclipse.equinox.p2.iu -requires.1.name = org.eclipse.swt.win32.win32.x86_64 -requires.1.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=x86_64)) - -requires.2.namespace = org.eclipse.equinox.p2.iu -requires.2.name = org.eclipse.swt.cocoa.macosx.x86_64 -requires.2.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=x86_64)) - -requires.3.namespace = org.eclipse.equinox.p2.iu -requires.3.name = org.eclipse.swt.gtk.linux.x86_64 -requires.3.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=x86_64)) - -requires.4.namespace = org.eclipse.equinox.p2.iu -requires.4.name = org.eclipse.swt.gtk.linux.ppc64le -requires.4.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=ppc64le)) - -requires.5.namespace = org.eclipse.equinox.p2.iu -requires.5.name = org.eclipse.swt.gtk.linux.aarch64 -requires.5.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=aarch64)) - -requires.6.namespace = org.eclipse.equinox.p2.iu -requires.6.name = org.eclipse.swt.cocoa.macosx.aarch64 -requires.6.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=aarch64)) - -requires.7.namespace = org.eclipse.equinox.p2.iu -requires.7.name = org.eclipse.swt.win32.win32.aarch64 -requires.7.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=aarch64)) - -requires.8.namespace = org.eclipse.equinox.p2.iu -requires.8.name = org.eclipse.swt.gtk.linux.riscv64 -requires.8.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=riscv64)) diff --git a/bundles/org.eclipse.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.swt/META-INF/MANIFEST.MF index dc21e745e09..006e8f21761 100644 --- a/bundles/org.eclipse.swt/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.swt/META-INF/MANIFEST.MF @@ -25,3 +25,4 @@ Export-Package: Eclipse-ExtensibleAPI: true Bundle-RequiredExecutionEnvironment: JavaSE-21 Automatic-Module-Name: org.eclipse.swt +Require-Capability: eclipse.swt; filter:="(&(implementation=native)(version=3.135.100))" diff --git a/bundles/org.eclipse.swt/META-INF/p2.inf b/bundles/org.eclipse.swt/META-INF/p2.inf deleted file mode 100644 index d241b4233fa..00000000000 --- a/bundles/org.eclipse.swt/META-INF/p2.inf +++ /dev/null @@ -1,46 +0,0 @@ -requires.1.namespace=java.package -requires.1.name=org.eclipse.swt.accessibility2 -requires.1.optional=true -requires.1.greedy=false -requires.1.range=0.0.0 - -# ensure that the applicable implementation fragment gets installed (bug 361901) -requires.2.namespace = org.eclipse.equinox.p2.iu -requires.2.name = org.eclipse.swt.win32.win32.x86_64 -requires.2.range = [$version$,$version$] -requires.2.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=x86_64)(!(org.eclipse.swt.buildtime=true))) - -requires.3.namespace = org.eclipse.equinox.p2.iu -requires.3.name = org.eclipse.swt.cocoa.macosx.x86_64 -requires.3.range = [$version$,$version$] -requires.3.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=x86_64)(!(org.eclipse.swt.buildtime=true))) - -requires.4.namespace = org.eclipse.equinox.p2.iu -requires.4.name = org.eclipse.swt.gtk.linux.x86_64 -requires.4.range = [$version$,$version$] -requires.4.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=x86_64)(!(org.eclipse.swt.buildtime=true))) - -requires.5.namespace = org.eclipse.equinox.p2.iu -requires.5.name = org.eclipse.swt.gtk.linux.ppc64le -requires.5.range = [$version$,$version$] -requires.5.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=ppc64le)(!(org.eclipse.swt.buildtime=true))) - -requires.6.namespace = org.eclipse.equinox.p2.iu -requires.6.name = org.eclipse.swt.gtk.linux.aarch64 -requires.6.range = [$version$,$version$] -requires.6.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=aarch64)(!(org.eclipse.swt.buildtime=true))) - -requires.7.namespace = org.eclipse.equinox.p2.iu -requires.7.name = org.eclipse.swt.cocoa.macosx.aarch64 -requires.7.range = [$version$,$version$] -requires.7.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=aarch64)(!(org.eclipse.swt.buildtime=true))) - -requires.8.namespace = org.eclipse.equinox.p2.iu -requires.8.name = org.eclipse.swt.win32.win32.aarch64 -requires.8.range = [$version$,$version$] -requires.8.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=aarch64)(!(org.eclipse.swt.buildtime=true))) - -requires.9.namespace = org.eclipse.equinox.p2.iu -requires.9.name = org.eclipse.swt.gtk.linux.riscv64 -requires.9.range = [$version$,$version$] -requires.9.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=riscv64)(!(org.eclipse.swt.buildtime=true))) diff --git a/bundles/org.eclipse.swt/pom.xml b/bundles/org.eclipse.swt/pom.xml index 0e0bbc6cb48..aca6cd487e2 100644 --- a/bundles/org.eclipse.swt/pom.xml +++ b/bundles/org.eclipse.swt/pom.xml @@ -37,7 +37,7 @@ ignore - true + true diff --git a/examples/org.eclipse.swt.examples.ole.win32/META-INF/MANIFEST.MF b/examples/org.eclipse.swt.examples.ole.win32/META-INF/MANIFEST.MF index c38f3467950..46c733572b1 100644 --- a/examples/org.eclipse.swt.examples.ole.win32/META-INF/MANIFEST.MF +++ b/examples/org.eclipse.swt.examples.ole.win32/META-INF/MANIFEST.MF @@ -18,3 +18,4 @@ Require-Bundle: org.eclipse.ui.ide, Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-21 Automatic-Module-Name: org.eclipse.swt.examples.ole.win32 +Require-Capability: eclipse.swt; filter:="(implementation=native)" diff --git a/examples/org.eclipse.swt.examples.ole.win32/META-INF/p2.inf b/examples/org.eclipse.swt.examples.ole.win32/META-INF/p2.inf deleted file mode 100644 index fee2d66b27c..00000000000 --- a/examples/org.eclipse.swt.examples.ole.win32/META-INF/p2.inf +++ /dev/null @@ -1,10 +0,0 @@ -# ensure that the applicable implementation fragment gets installed (bug 361901) -requires.0.namespace = org.eclipse.equinox.p2.iu -requires.0.name = org.eclipse.swt.win32.win32.x86_64 -#requires.0.range = [$version$,$version$] -requires.0.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=x86_64)) - -requires.1.namespace = org.eclipse.equinox.p2.iu -requires.1.name = org.eclipse.swt.win32.win32.aarch64 -#requires.1.range = [$version$,$version$] -requires.1.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=aarch64))