This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 428087 - [BETA_JAVA8] Eclipse SDK "root" needs to be "patched" to contain jdt and pde patches?
Summary: [BETA_JAVA8] Eclipse SDK "root" needs to be "patched" to contain jdt and pde ...
Status: RESOLVED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Releng (show other bugs)
Version: 4.3.1   Edit
Hardware: PC Linux
: P5 normal (vote)
Target Milestone: BETA J8   Edit
Assignee: Platform-Releng-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-13 06:13 EST by David Williams CLA
Modified: 2014-03-17 16:46 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Williams CLA 2014-02-13 06:13:37 EST
Using new patch build from 

http://build.eclipse.org/eclipse/builds/4P/siteDir/updates/4.3-P-builds 

the patches seem to install, but do not show up in "about box" ... 

Oh, I may need to update the version in feature to match "RC4" (which is what I installed "into"). 

I'll try that first.
Comment 1 David Williams CLA 2014-02-13 08:09:04 EST
Correcting the "required" version of org.eclpse.pde and org.eclipse.jdt to patch did fix the main problem. (patched plugins were installed and "active" on restart. 

But, I think we may still need to have "Eclipse SDK" as the "root" that holds the other two patched features. 

The reason I think that is I could not uninstall the patches, once I had installed them. 

The error was 

Cannot complete the install because one or more required items could not be found.
  Software currently installed: Eclipse SDK 4.3.2.M20140212-0800 (org.eclipse.sdk.ide 4.3.2.M20140212-0800)
  Missing requirement: Eclipse Java Development Tools 3.9.2.v20140212-0800 (org.eclipse.jdt.feature.group 3.9.2.v20140212-0800) requires 'org.eclipse.jdt.core [3.9.2.v20140114-1555]' but it could not be found
  Cannot satisfy dependency:
    From: Eclipse Project SDK 4.3.2.v20140212-0800 (org.eclipse.sdk.feature.group 4.3.2.v20140212-0800)
    To: org.eclipse.jdt.feature.group [3.9.2.v20140212-0800]
  Cannot satisfy dependency:
    From: Eclipse SDK 4.3.2.M20140212-0800 (org.eclipse.sdk.ide 4.3.2.M20140212-0800)
    To: org.eclipse.sdk.feature.group [4.3.2.v20140212-0800]

Not sure if this is "working as designed", or a p2 bug? 

But, it make some conceptual sense to have an Eclipse SDK patch feature, since typically someone needs to install both patches together ... would not make much sense, I'm assuming, to install one, but not the other.
Comment 2 David Williams CLA 2014-02-14 06:43:29 EST
FWIW, I have noticed from "history" view (in About Box) I can "revert" to previous version to effectively uninstall the patches ... not sure what the difference between "revert" and "uninstall" would be. Perhaps related to p2.metatdata ... which we may not be able to control in our patch features?
Comment 3 David Williams CLA 2014-02-18 00:56:34 EST
I don't think we will _need_ this ... as "udpate" seems to work for me, (since I have the P-build repo as one of my software sites, in my P-build test instance only, naturally). 

Conceptually, it is probably 'more correct' to have it, since I believe if someone is patching the Eclipse SDK, they do need BOTH of of the feature patches we produce ... but I think in practice, people would know to select both so we don't need to "force" them to. 

The one "hack" I'll mention is that if I use the current feature patches, to "update" my 4.3.2 instance, then 

org.eclipse.jdt.annotation  1.1.0.<qualifier>

is installed into that 4.3.2 SDK, but 

org.eclipse.jdt.annotation  2.0.0.<qualifier>

is not. I have confirmed they are both in the repository: 

       [00:46:50] david_williams@build:/opt/public/eclipse/builds/4P/siteDir/updates/4.3-P-builds/P20140217-1600
 
$ ll plugins/*jdt.annotation*
-rw-rw-r--+ 1 e4Build common 15K Feb 17 16:11 plugins/org.eclipse.jdt.annotation_1.1.0.v20140129-1625.jar
-rw-rw-r--+ 1 e4Build common 15K Feb 17 16:11 plugins/org.eclipse.jdt.annotation_2.0.0.v20140213-0613.jar

I think the reason is that there is simply nothing that specifically requires it. 

So, it that ok? 

I _think_ Srikanth said this particular bundle is "used for tests" only ... so if that's true then I'd say we are fine. 

BUT if it is required to be "in SDK", one way to (probably) accomplish that is to have an Eclipse SDK patch feature, which included the other two patch features, AND included this "extra bundle". 

But unless I hear otherwise, I'll assume we don't really need that "version 2" installed into an SDK ... and do not need and Eclipse SDK patch feature ... and we'll work out how to get that version 2 of jdt.annotations into tests, once we get to that point?
Comment 4 David Williams CLA 2014-02-18 00:58:35 EST
Oh, might mention the other reason we MIGHT need "Eclipes SDK patch" is to have better ability to "uninstall" it, once installed. 

"Uninstall" does not seem to work for the patch features, BUT seems that "restore to previous point in installation history" does work, and accomplished the same thing ... as far as I know.
Comment 5 Timo Kinnunen CLA 2014-02-18 06:09:08 EST
(In reply to comment #3)

> So, it that ok?

A simple way to test this is with a test project. Steps to follow:

1) Copy-paste this code into a new project:

package annos;
public class AnnotatedMain {
  public static void main(java.lang.@NonNull String... args) {}
}

2) Make sure the JRE System Library for the project is set to jdk8, JavaSE-1.8 or equivalent.
3) Find the compile error, activate Quick Fix on it by pressing Ctrl-1 and select 'Copy library with default null annotations to build path'.
4) The error is fixed.
Comment 6 David Williams CLA 2014-02-18 11:12:35 EST
(In reply to Timo Kinnunen from comment #5)
> (In reply to comment #3)
> 
> > So, it that ok?
> 
> A simple way to test this is with a test project. Steps to follow:
> 
> 1) Copy-paste this code into a new project:
> 
> package annos;
> public class AnnotatedMain {
>   public static void main(java.lang.@NonNull String... args) {}
> }
> 
> 2) Make sure the JRE System Library for the project is set to jdk8,
> JavaSE-1.8 or equivalent.
> 3) Find the compile error, activate Quick Fix on it by pressing Ctrl-1 and
> select 'Copy library with default null annotations to build path'.
> 4) The error is fixed.

Thanks so much. 

I've gone through this test case and it does seem that 
org.eclipse.jdt.annotation_2.0.0.v20140213-0613.jar
is required for it to work. 

I first just installed the patch into Eclipse SDK 4.3.2 (RC4) and added your test case. Saw the error, I was offered several "quick fixes", but none of were "Copy library with default null annotations to build path". 

I then "manually" downloaded  
org.eclipse.jdt.annotation_2.0.0.v20140213-0613.jar
and put it in the "dropins" folder (of all things) ... restarted, "cleaned" project (just in case) and then quick fix did offer "Copy library with default null annotations to build path" and that did indeed fix the compile error. 

(To be honest, did not seem to change .classpath file, nor MANIFEST.MF, but did add the bundle to the "required bundles" list.)

Before we "hack up" eclipse SDK though, I'll experiment with a few other things -- things that would transfer to Luna stream better.
Comment 7 David Williams CLA 2014-02-20 14:58:01 EST
The "two versions of jdt.annotation" was solved in bug 428099 ... so I think only reason to consider creating patch at "SDK level" is if we feared, or discovered, that many people only picked one of the patch features to install, but not the other ... and, that seems unlikely, to me, so will leave this open, but at "5" priority ... which basically means "no plans to fix", unless others think it would be a problem not to.
Comment 8 David Williams CLA 2014-03-17 16:46:29 EDT
I'm closing this as "won't fix", since I don't think its a very useful approach. Its based on people applying the patch to only the SDK, but that would rule out people applying the patch to other EPP packages, such as Java EE package, and most others.