Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 420471 - rt.equinox.framework/bundles/org.eclipse.equinox.executable should be removed (from master)
Summary: rt.equinox.framework/bundles/org.eclipse.equinox.executable should be removed...
Status: RESOLVED FIXED
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: Launcher (show other bugs)
Version: 3.10.0 Luna   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: Luna M4   Edit
Assignee: Arun Thondapu CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 423186 423840
  Show dependency tree
 
Reported: 2013-10-28 01:49 EDT by David Williams CLA
Modified: 2013-12-11 12:11 EST (History)
8 users (show)

See Also:


Attachments
patch to remove "file system reference". (3.23 KB, patch)
2013-10-28 01:54 EDT, David Williams CLA
no flags Details | Diff
Proposed patch (2.10 MB, patch)
2013-11-29 13:40 EST, Arun Thondapu CLA
no flags Details | Diff
Patch without deleted bundle files (23.35 KB, patch)
2013-12-06 10:31 EST, Arun Thondapu CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description David Williams CLA 2013-10-28 01:49:54 EDT
As far as I can tell this feature, in the bundles directory, is not used (well, except for one place ... I'll need to patch "releng") and the new/accurate one that is used is 
rt.equinox.framework/features/org.eclipse.equinox.executable.feature

Its very confusing having two the same name (both called org.eclipse.equinox.executable in the feature.xml Id). 

I ran into this trying to sort out the thread effecting bug 419092 and bug 420134. 

As far as I can tell, bundles/org.eclipse.equinox.executable is no longer used. 

I wouldn't delete it here during M3 warmup week ... but ... after that?
Comment 1 David Williams CLA 2013-10-28 01:54:06 EDT
Created attachment 236944 [details]
patch to remove "file system reference".

As I mentioned, there is a place in "configuration features" that copies some files from the "old" location ... so this patch changes that to do the copy from the "new" location. 

As far as I know, this won't functionally improve anything ... just make searches, etc., easier, and easier to load the right one into workspace. 

I'm doing a local test build now. Assuming there's nothing that obviously breaks from this patch, I may go ahead and apply it for M3. Then you (equinox team) can remove at will (after M3).
Comment 2 Krzysztof Daniel CLA 2013-10-28 03:56:28 EDT
(In reply to David Williams from comment #0)
> As far as I can tell, bundles/org.eclipse.equinox.executable is no longer used. 

Compare the logs:
feature:
https://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/features/org.eclipse.equinox.executable.feature
bundle:
https://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/bundles/org.eclipse.equinox.executable

It looks like the fact that the bundle was moved to be a feature was forgotten, and the real executable development is still happening in the bundle. This most probably works fine because binaries are stored in the repo, and the process of Eclipse assembly is correct (although sources don't match the binaries).
Comment 3 David Williams CLA 2013-10-28 06:25:12 EDT
(In reply to Krzysztof Daniel from comment #2)
> (In reply to David Williams from comment #0)

> It looks like the fact that the bundle was moved to be a feature was
> forgotten, and the real executable development is still happening in the
> bundle. 

So ... I'm not only one confused? :) 

I've applied my patches for M3. 

I'll let Tom and Silenio and others decide the best to to resolve larger issue ... but it is very confusing the way it is.
Comment 4 Thomas Watson CLA 2013-10-28 09:33:00 EDT
Paul, I think you know why there is two.  IIRC two was needed to allow PDE build to still work.  I think that ship has sailed and we can remove the one that was used for PDE build, right?
Comment 5 Silenio Quarti CLA 2013-10-28 10:09:25 EDT
I was not aware we had the feature bundle that duplicated the executable source code.  We definitely must have just one copy of the source code.  The most up to date code is in:

https://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/bundles/org.eclipse.equinox.executable

So if that is the one that is going to be delete, we need to update the feature bundle.
Comment 6 Paul Webster CLA 2013-10-28 10:48:04 EDT
For CBI we only build the feature now, http://git.eclipse.org/c/equinox/rt.equinox.framework.git/tree/pom.xml#n77

The bundles one is left over from when PDE build was building the executable feature.

PW
Comment 7 Paul Webster CLA 2013-10-28 10:52:49 EDT
So we need the executables updates to go into the feature version.

PW
Comment 8 Thomas Watson CLA 2013-10-30 09:17:37 EDT
(In reply to Paul Webster from comment #7)
> So we need the executables updates to go into the feature version.
> 
> PW

Selinio, I think we need to do this very soon.  We are starting to get contributions from Gerrit against the source code from the features project (see https://git.eclipse.org/r/#/c/17874/) while other contributions are against the bundles project (see https://git.eclipse.org/r/#/c/17837/).
Comment 9 Silenio Quarti CLA 2013-10-30 09:45:26 EDT
Yes, I agree. Arun, please work on this after M3 is done and attach a patch for review.
Comment 10 David Williams CLA 2013-11-11 06:15:49 EST
Friendly reminder ... this would be a good week to remove this project from master (and Kepler) ... just to give time to revert if unexpected implications. 

(Of course, you may have higher priories ... so feel free to balance all those with this one).
Comment 11 David Williams CLA 2013-11-12 10:31:28 EST
For what its worth, I removed the "bundles feature" from my working test repo and the build still succeeded. That's not to say "it works" :) ... but, just that there is no hidden dependencies. I realize the "big part" of this work is to get swt/launcher team to update source in the right place. 

Just trying to be helpful.
Comment 12 Alexander Kurtakov CLA 2013-11-12 10:36:18 EST
(In reply to David Williams from comment #11)
> For what its worth, I removed the "bundles feature" from my working test
> repo and the build still succeeded. That's not to say "it works" :) ... but,
> just that there is no hidden dependencies. I realize the "big part" of this
> work is to get swt/launcher team to update source in the right place. 
> 
> Just trying to be helpful.

David, you speak about changes in rt.equinox.framework repository only or something must happen in swt repos too?
Comment 13 David Williams CLA 2013-11-12 11:08:20 EST
(In reply to Alexander Kurtakov from comment #12)
> (In reply to David Williams from comment #11)
> > For what its worth, I removed the "bundles feature" from my working test
> > repo and the build still succeeded. That's not to say "it works" :) ... but,
> > just that there is no hidden dependencies. I realize the "big part" of this
> > work is to get swt/launcher team to update source in the right place. 
> > 
> > Just trying to be helpful.
> 
> David, you speak about changes in rt.equinox.framework repository only or
> something must happen in swt repos too?

No, just rt.equinox.framework ... I said "swt/launcher team" just because its the same people (er, right?)
Comment 14 Alexander Kurtakov CLA 2013-11-12 11:10:16 EST
(In reply to David Williams from comment #13)
> (In reply to Alexander Kurtakov from comment #12)
> > (In reply to David Williams from comment #11)
> > > For what its worth, I removed the "bundles feature" from my working test
> > > repo and the build still succeeded. That's not to say "it works" :) ... but,
> > > just that there is no hidden dependencies. I realize the "big part" of this
> > > work is to get swt/launcher team to update source in the right place. 
> > > 
> > > Just trying to be helpful.
> > 
> > David, you speak about changes in rt.equinox.framework repository only or
> > something must happen in swt repos too?
> 
> No, just rt.equinox.framework ... I said "swt/launcher team" just because
> its the same people (er, right?)

I guess it's just me that is only swt that's why I asked whether smth is needed there.
Comment 15 Arun Thondapu CLA 2013-11-22 13:50:39 EST
I have started working on creating a patch for this but realized it is more complicated than I initially thought it would be, may be because I haven't worked on this code before and so don't have the necessary background. I have a few questions which might sound dumb but I'll ask them anyway :)

- For source as well as resource files, there are many changes which have gone into either the feature bundle only or the bundles version only and some of the files look very different. In these cases, should I just try to merge code from both the copies and create a combined file with all the changes? I understand that may not make sense in all scenarios but I'm just trying to think aloud about a good merge strategy here...

- There are a few files like customBuildCallbacks.xml, target.build.properties and target.build.xml which are present in the bundles version but not in the feature version. I'm assuming they are not needed by the feature bundle anymore and can be safely deleted, is that correct?

- In the current scenario, whenever the launcher binaries are updated, a corresponding 'binaryTag' value is updated in the bundles version of the build.properties file but this value is not present in the feature bundle at all. What is the role played by this variable and is it needed at all? If it is indeed needed, how are things working fine even though it is not present in the feature version? As an aside here, the build process also needs to be updated then to commit the binaryTag value to the appropriate file as needed.

I will continue working on the patch and will come back with more questions if needed. Thanks in advance for any guidance!
Comment 16 David Williams CLA 2013-11-22 20:07:48 EST
(In reply to Arun Thondapu from comment #15)
> I have started working on creating a patch for this but realized it is more
> complicated than I initially thought it would be, may be because I haven't
> worked on this code before and so don't have the necessary background. I
> have a few questions which might sound dumb but I'll ask them anyway :)

Well, I'll give a few dumb answers which I'm sure are half right and half wrong ... and maybe given that you can figure out which are which :) 

> - For source as well as resource files, there are many changes which have
> gone into either the feature bundle only or the bundles version only and
> some of the files look very different. In these cases, should I just try to
> merge code from both the copies and create a combined file with all the
> changes? I understand that may not make sense in all scenarios but I'm just
> trying to think aloud about a good merge strategy here...

According to comment 5, <quote> The most up to date code is in:

https://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/bundles/org.eclipse.equinox.executable

So if that is the one that is going to be delete, we need to update the feature bundle.</quote> 

This sounds to me like a "merge" is not really needed, ... one way or another code the "up to date" bundle needs to "replace" the (source) code that's in the feature/ version. 

> 
> - There are a few files like customBuildCallbacks.xml,
> target.build.properties and target.build.xml which are present in the
> bundles version but not in the feature version. I'm assuming they are not
> needed by the feature bundle anymore and can be safely deleted, is that
> correct?

Correct. Well, I'm half guessing, but definitely the customBuildCallbacks.xml would no longer be needed (that is a definite "PDE Build" file) ... I don't know enough to know if target.build.properties and target.build.xml are used to produce the actual "executables". I'd do a search to see where they are called from ... and if not obviously called from anywhere, safe to remove them. 

> - In the current scenario, whenever the launcher binaries are updated, a
> corresponding 'binaryTag' value is updated in the bundles version of the
> build.properties file but this value is not present in the feature bundle at
> all. What is the role played by this variable and is it needed at all? If it
> is indeed needed, how are things working fine even though it is not present
> in the feature version? As an aside here, the build process also needs to be
> updated then to commit the binaryTag value to the appropriate file as needed.

My guess is not longer needed ... unless ... does the 'binaryTag' end up as part of the executable name? (internal field or literally as part of the name)? If so, probably still need, if not, probably not. 

If I may suggest the "key" to making this transition is for you to do what ever "external" process you do to do build the source (using the /feature version instead of the /bundle version ... And as problems and differences show up you'll know that you need and don't need. 

I never realized this would be so complicated ... and that things apparently have not been communicated well ... good thing we've discovered it now. Thanks for digging into it!
Comment 17 Krzysztof Daniel CLA 2013-11-25 08:43:01 EST
(In reply to Arun Thondapu from comment #15)
> - For source as well as resource files, there are many changes which have
> gone into either the feature bundle only or the bundles version only and
> some of the files look very different. In these cases, should I just try to
> merge code from both the copies and create a combined file with all the
> changes? I understand that may not make sense in all scenarios but I'm just
> trying to think aloud about a good merge strategy here...

I think that the proper way of dealing with changes is not really about merge, as development was happening in both places. What really needs to be done, is a rewind to the fork root, and then applying patches from both places, one by one, in a chronological order.
Comment 18 Silenio Quarti CLA 2013-11-25 10:36:04 EST
I believe all you need to do is to copy all the files from 

bundles/org.eclipse.equinox.executable/library

into

features/org.eclipse.equinox.executable.feature/library

The files customBuildCallbacks.xml, target.build.properties and target.build.xml are no longer needed. They were used by the p2 build.

The binaryTag is no longer needed. They were necessary when the rt.equinox.binaries repository was not branched for maintenance builds.  The p2 build file customBuildCallbacks.xml would copy that specific tag from the binaries repo into the src repo.   This is now done by branch: R3_8_maintenance, R3_9_maintenance and master.  Note that the releng script (org.eclipse.equinox.launcher.releng/build.xml) should stop updating it as well.

Finally, the releng script needs to be updated to point the "features/org.eclipse.equinox.executable.feature" instead of "bundles/org.eclipse.equinox.executable".

I do not think there are any changes needed in the Hudson jobs.
Comment 19 Arun Thondapu CLA 2013-11-29 13:40:53 EST
Created attachment 237879 [details]
Proposed patch
Comment 20 Arun Thondapu CLA 2013-11-29 14:01:31 EST
(In reply to Silenio Quarti from comment #18)
> I believe all you need to do is to copy all the files from 
> 
> bundles/org.eclipse.equinox.executable/library
> 
> into
> 
> features/org.eclipse.equinox.executable.feature/library
> 
> The files customBuildCallbacks.xml, target.build.properties and
> target.build.xml are no longer needed. They were used by the p2 build.
> 
> The binaryTag is no longer needed. They were necessary when the
> rt.equinox.binaries repository was not branched for maintenance builds.  The
> p2 build file customBuildCallbacks.xml would copy that specific tag from the
> binaries repo into the src repo.   This is now done by branch:
> R3_8_maintenance, R3_9_maintenance and master.  Note that the releng script
> (org.eclipse.equinox.launcher.releng/build.xml) should stop updating it as
> well.
> 
> Finally, the releng script needs to be updated to point the
> "features/org.eclipse.equinox.executable.feature" instead of
> "bundles/org.eclipse.equinox.executable".
> 
> I do not think there are any changes needed in the Hudson jobs.

Thanks for pointing out the specific changes that need to be done Silenio!

I have attached a patch above which includes all the changes that are necessary. Kindly review and provide your feedback. Thanks!
Comment 21 Silenio Quarti CLA 2013-12-03 16:38:52 EST
(In reply to Arun Thondapu from comment #20)
> Thanks for pointing out the specific changes that need to be done Silenio!
> 
> I have attached a patch above which includes all the changes that are
> necessary. Kindly review and provide your feedback. Thanks!

After I apply the patch, there are still some files left in bundles/org.eclipse.equinox.executable (see below). Is that intentional? I thought "bundles/org.eclipse.equinox.executable" would be removed completely. 

bundles/org.eclipse.equinox.executable/
bundles/org.eclipse.equinox.executable/bin
bundles/org.eclipse.equinox.executable/bin/carbon
bundles/org.eclipse.equinox.executable/bin/carbon/macosx
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Resources
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Resources/Eclipse.icns
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/x86
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Resources
bundles/org.eclipse.equinox.executable/bin/carbon/macosx/x86/Eclipse.app/Contents/Resources/Eclipse.icns
bundles/org.eclipse.equinox.executable/bin/cocoa
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Resources
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/ppc/Eclipse.app/Contents/Resources/Eclipse.icns
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Resources
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86/Eclipse.app/Contents/Resources/Eclipse.icns
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Resources
bundles/org.eclipse.equinox.executable/bin/cocoa/macosx/x86_64/Eclipse.app/Contents/Resources/Eclipse.icns
bundles/org.eclipse.equinox.executable/bin/motif
bundles/org.eclipse.equinox.executable/bin/motif/linux
bundles/org.eclipse.equinox.executable/bin/motif/linux/x86
bundles/org.eclipse.equinox.executable/bin/motif/linux/x86/libXm.so.2
bundles/org.eclipse.equinox.executable/eclipse_update_120.jpg
bundles/org.eclipse.equinox.executable/library
bundles/org.eclipse.equinox.executable/library/win32
bundles/org.eclipse.equinox.executable/library/win32/eclipse.ico
bundles/org.eclipse.equinox.executable/library/wpf
bundles/org.eclipse.equinox.executable/library/wpf/eclipse.ico
bundles/org.eclipse.equinox.executable/motif_root
bundles/org.eclipse.equinox.executable/motif_root/about_files
bundles/org.eclipse.equinox.executable/motif_root/about_files/mlpl-v10.html
Comment 22 Arun Thondapu CLA 2013-12-06 10:31:51 EST
Created attachment 238120 [details]
Patch without deleted bundle files
Comment 23 Arun Thondapu CLA 2013-12-06 11:08:34 EST
(In reply to Silenio Quarti from comment #21)
> (In reply to Arun Thondapu from comment #20)
> > Thanks for pointing out the specific changes that need to be done Silenio!
> > 
> > I have attached a patch above which includes all the changes that are
> > necessary. Kindly review and provide your feedback. Thanks!
> 
> After I apply the patch, there are still some files left in
> bundles/org.eclipse.equinox.executable (see below). Is that intentional? I
> thought "bundles/org.eclipse.equinox.executable" would be removed
> completely. 
> 

Thanks for the review Silenio!
The original patch I had submitted does indeed remove the "bundles/org.eclipse.equinox.executable" project entirely. However, after some investigation with the patch, I found out that it is not applying cleanly on top of HEAD on the rt.equinox.framework repo and this seems to be because git has some issues with applying patches which include binary file diffs/changes. I got multiple errors like the one below when I tried 'git apply' from cmdline with the original patch:

error: cannot apply binary patch to 'bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Resources/Eclipse.icns' without full index line
error: bundles/org.eclipse.equinox.executable/bin/carbon/macosx/ppc/Eclipse.app/Contents/Resources/Eclipse.icns: patch does not apply

This could be the reason the patch would not have applied properly in your workspace, causing the mentioned files to be not deleted.

To workaround this problem, I have now submitted a new patch which includes only the code changes that are made when files are copied over from bundles/org.eclipse.equinox.executable/library to features/org.eclipse.equinox.executable.feature/library and also the changes needed in org.eclipse.equinox.launcher.releng/build.xml. 

After applying this patch, you can just delete bundles/org.eclipse.equinox.executable from the repo in your workspace and commit all the changes. Does this approach sound okay for you?
Comment 24 Silenio Quarti CLA 2013-12-06 11:28:36 EST
Thanks Arun, I have committed your patch (and deleted the bundle dir):

http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=72c26472b6269957b427fbc4b5251d5f3d047745
Comment 25 David Williams CLA 2013-12-06 14:04:51 EST
(In reply to Silenio Quarti from comment #24)
> Thanks Arun, I have committed your patch (and deleted the bundle dir):
> 
> http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/
> ?id=72c26472b6269957b427fbc4b5251d5f3d047745

If it helps, I did a local test build after this change ... and nothing broke! (Well ... I mean the build finished without error :) ... guess it'll deserve some extra testing during "stabilization week" to make sure we are building what's expected, that source matches, etc.) 

Much thanks!
Comment 26 Thomas Watson CLA 2013-12-09 16:59:46 EST
Should this be marked as fixed now for M4?
Comment 27 David Williams CLA 2013-12-09 17:18:07 EST
(In reply to Thomas Watson from comment #26)
> Should this be marked as fixed now for M4?

I think so (though, the "equinox launcher team" should decide if should be back ported to R4_3 maintenance now ... I just mention that since doing so would prevent accidentally "using" it in case long term maintenance required ... but, for me, fixing in master is the main thing).
Comment 28 Thomas Watson CLA 2013-12-11 12:11:22 EST
Fixed for M4.  Opened bug 423840 to consider for Kepler SR2.