Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 420725 - Inconsistencies in how executable binaries are copied to roots
Summary: Inconsistencies in how executable binaries are copied to roots
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Releng (show other bugs)
Version: 4.4   Edit
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: 4.4 RC1   Edit
Assignee: David Williams CLA
QA Contact:
URL:
Whiteboard: routine releng
Keywords:
Depends on:
Blocks: 406825 427428
  Show dependency tree
 
Reported: 2013-10-30 10:04 EDT by David Williams CLA
Modified: 2014-05-18 22:33 EDT (History)
3 users (show)

See Also:


Attachments
patch to remove starter kit feature module from repo pom (21.78 KB, patch)
2014-01-26 03:05 EST, David Williams CLA
no flags Details | Diff
alternative patch to remove modele descriptor, AND the whole module! (21.78 KB, patch)
2014-01-26 03:08 EST, David Williams CLA
no flags Details | Diff
patch to remove "copy up" items (2.50 KB, patch)
2014-02-25 07:35 EST, David Williams CLA
no flags Details | Diff
corresponding consolidation patch (3.07 KB, patch)
2014-02-25 07:55 EST, David Williams 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-30 10:04:45 EDT
It seems that windows executables (eclipse.exe and eclipsec.exe) are "copied up" from binary location to "root" of in pom of org.eclipse.equinox.core. 

Others (I think all others) are copied "up" to root only closer to making products or deltapack, namely the (funky) "configuration feature", in pom of
eclipse.platform.releng.tychoeclipsebuilder/rcp.config. 

Does anyone recall why this is? 

Seems to me they should all be one place or the other (all in org.eclipse.equinox.core or all in "configuration feature"). 

At best, this makes the build confusing, or worse, error prone or "hard to change" for one product vs. another.
Comment 1 Thanh Ha CLA 2013-10-30 10:38:14 EDT
I believe the history of this issue comes from Bug 380695. It's been awhile but I suspect the reason we added it here was because the build.properties specifies the root files. Unfortunately when it try to check the entire history of build.properties with "gitk build.properties" it simply says that the build.properties included all the root definitions in it's initial commit.
Comment 2 David Williams CLA 2013-11-07 01:17:49 EST
To add to the confusion, this funny "copy up" also occurs in 
org.eclipse.equinox.starterkit.product.feature 

again, only for windows. 

That feature, is used in the EclipseRTOSGiStarterKit.product file, but does seem to "offer much" ... other then these windows executables, and includes these two features:
org.eclipse.equinox.p2.core.feature
org.eclipse.equinox.core.feature

My guess is we could remove the 
org.eclipse.equinox.starterkit.product.feature

and "move up" some of what its doing directly to the 
EclipseRTOSGiStarterKit.product

That feature also "restricts" the target-platform-configuration specifically to these 5 platforms ... which is NOT honored, by the time we make "the product". 
linux,gtk,x86
linux,gtk,x86_64
win32,win32,x86
win32,win32,x86_64
macosx,cocoa,x86_64

If we really want to restrict to those 5, that should probably go in "the product" pom, as well.
Comment 3 David Williams CLA 2013-11-07 12:47:02 EST
Tom, can you confirm those 5 platforms are the only ones we want to produce this "product" for? I know we currently have mac 32 bit on download page, but that seems useless, these days. 

I've done some local testing, and by moving stuff "up" to the product definition/build ... and it then does only produce those 5 platforms. 

By moving stuff around,
we can get rid of 
eclipse.platform.releng.tychoeclipsebuilder/osgistarter.config.launcher

and we can get rid of 
rt.equinox.bundles/features/org.eclipse.equinox.starterkit.product.feature

I should note: I'm doing this work on "starter kit", not because it is so important by itself, but it is a smaller example to start with cleaning up some of the "junk" in our build. I am hoping what I learn here, can then be applied elsewhere. 

If you say "yes", only those 5, I'll attach patches. If we want all platforms, say, 5 on download site, and rest in repository, I'll need to do some more work. 

I may want to experiment a little more with removing/moving the "copy root" sections of org.eclipse.equinox.core, but otherwise, I think this is the right approach, given history and what we have. -- and getting rid of stuff is always a good idea, if you ask me :) (That is, it's not really contributing anything, except confusion and clutter).
Comment 4 David Williams CLA 2013-12-03 14:20:02 EST
No more work planned for M4.
Comment 5 Thomas Watson CLA 2013-12-03 14:29:46 EST
Sorry for the late response, this one got buried in my inbox.

(In reply to David Williams from comment #3)
> Tom, can you confirm those 5 platforms are the only ones we want to produce
> this "product" for? I know we currently have mac 32 bit on download page,
> but that seems useless, these days. 

I'm fine getting rid of the 32-bit mac version here for the starter kit.
Comment 6 David Williams CLA 2014-01-15 10:58:45 EST
I won't "experiment" during last week of milestone, but do want to improve this early in M6.
Comment 7 David Williams CLA 2014-01-26 02:54:03 EST
I will experiment now, though :) 

I've committed changes to 'tychobuilder' project to the "starterkit" is built in a much simpler, self contained way. It has worked well on my local test builds, but ... part of change I could make locally was to remove the 
org.eclipse.equinox.starterkit.product.feature
from equinox. 
I'll attach patch in next comment, for that ... doing a test build now to see if it builds without that patch (removal) ... we do not use it directly, but it is an example of a pom having an "outside of tree" influence, which I've heard is not a good practice in Maven (Actually, I heard it is a bad practice :)  -- so best to get rid of the whole thing, even if no immediate negative impact. 

Here's a small commit in "releng" to no longer "include" that feature in another should-not-be-needed feature (... fixing prototypes never ends :).  

http://git.eclipse.org/c/platform/eclipse.platform.releng.git/commit/?id=17a85d926b49e01ac4cc1d39e1153f6bcd2d2716

And here is the big change, to "tycho builder" where we remove the "configuration feature" and just do it all we need to do in product definition. 

http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/commit/?id=8192de903829cd3451637158ff962fa6326898c0

That "product definition" itself and/should move "down" to equinox someday ... when equinox has its own "releng" project (module).
Comment 8 David Williams CLA 2014-01-26 03:05:09 EST
Created attachment 239320 [details]
patch to remove starter kit feature module from repo pom

So the final clean up (for this starter kit stuff) is in the repository 
rt.equinox.bundles. 

1) in root pom of that repository remove 
 <module>features/org.eclipse.equinox.starterkit.product.feature</module>
Making that change, makes the feature "dead code" ... so just as well remove it.
Comment 9 David Williams CLA 2014-01-26 03:08:07 EST
Created attachment 239321 [details]
alternative patch to remove modele descriptor, AND the whole module!

I'd just get rid of any mention of "starter kit product' in equinox ... and not to worry, you can have it back any time you ready to do you own releng! :) 
(You know, at a lower "build equinox only" level.
Comment 10 David Williams CLA 2014-01-26 04:36:01 EST
Tom, or other equinox committers, the test build seemed to work fine even with the remaining 'junk' left in rt.equinox.bundles. But if at all possible, please remove the '<module>...' line from repo pom, and even better remove the feature project/module. That will help, by Tuesday's I build, for us to get a "pure" build that can be better tested on Macs and Windows (since those are signed in I-builds. So far, I'm been counting on Linux "working" (where, it does not need to be signed).
Comment 11 Thomas Watson CLA 2014-01-27 10:30:26 EST
The two patches are the same :) but I will use them to remove the whole module.
Comment 12 Thomas Watson CLA 2014-01-27 10:37:07 EST
Fixed in rt.equinox.bundles with commit:

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/commit/?id=3a7f17d65ba4a870db4de35868c7fa92acaa75db
Comment 13 David Williams CLA 2014-01-28 00:07:30 EST
Sorry about selecting the wrong files and thanks for taking the trouble to sort it out. 

During a test build, I learned (that I had forgotten) that we create the tar for macos in a post-build step (to maintain symbolic link) so for 
....macosx-cocoa-x86.tar.gz
we basically had an empty tar file. 

Fixed with 
http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/commit/?id=c1b99642a3a558c6986d0e99d645b9124988406d

We might still get a bad link on DL page ... depends on how smart the "index" custom ant task was made, and haven't had time to track that down. 

The "template" for DL page is at 

http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/tree/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.php.template

and you can see the tell-tale sign of computed starter kits at line 113. 

http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/tree/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.php.template#n113

So, at this point, we'll know soon enough if more work is needed there. 

I'll check after Tuesday's 8 AM I-build.
Comment 14 David Williams CLA 2014-01-29 02:21:11 EST
As feared, the custom ant task that produces ("indexes") the download file is not very smart, so now the Mac 32 bit version is still shown, but gives "NA" for size, and if clicked, it gives an unusual 404 error message, naturally. 

http://download.eclipse.org/equinox/drops/I20140128-0800/index.php

In principle, I don't think we should depend on the custom and task so much, since PHP is perfectly capable of handling cases like this and then all the "logic" is in one place. I've added it in many other part of DL pages. 

In short, use PHP to as "does this file abc exist", if so 
{
produce the PHP/HTML to display it. (

} {If not, skip it} 

The following is a "dump" of that the HTML turns out to me ... so its this part (the <td> elemenets) that would have to be (condidtionally) produced by the PHP. 


<div class="homeitem3col">
		<h3><a onclick="expandCollapse('osgistarterkits.bundles');"><img id="osgistarterkits.bundles.button" src="http://eclipse.org/equinox/images/downarrow.png"></a>&nbsp;OSGi starter kits</h3>
		<p>A useful collection of Equinox bundles packaged as a ready to run system.  This include the framework, p2 and other frequently used service implementations. </p>
		<div id="osgistarterkits.bundles" class="">
			<table width="100%" border="0" cellpadding="0" cellspacing="0">
				<tbody><tr><td width="5%"></td><td width="78%"></td><td width="9%"></td><td width="8%"></td></tr>
					<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86.zip">EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86.zip</a></td>
<td>6.3M</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86.zip.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86.zip.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>
<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86_64.zip">EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86_64.zip</a></td>
<td>6.3M</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86_64.zip.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-win32-win32-x86_64.zip.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>
<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86.tar.gz">EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86.tar.gz</a></td>
<td>6.4M</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86.tar.gz.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86.tar.gz.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>
<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86_64.tar.gz">EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86_64.tar.gz</a></td>
<td>6.4M</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86_64.tar.gz.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-linux-gtk-x86_64.tar.gz.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>
<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86.tar.gz">EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86.tar.gz</a></td>
<td>N/A</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86.tar.gz.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86.tar.gz.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>
<tr><td align="center"><img src="/equinox/images/OK.gif" alt="OK"></td>
<td><a href="download.php?dropFile=EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86_64.tar.gz">EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86_64.tar.gz</a></td>
<td>6.2M</td>
<td><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86_64.tar.gz.md5"><img src="/equinox/images/md5.png" alt="md5"></a><a href="http://download.eclipse.org/equinox/drops/I20140128-0800/checksum/EclipseRT-OSGi-StarterKit-I20140128-0800-macosx-cocoa-x86_64.tar.gz.sha1"><img src="/equinox/images/sha1.png" alt="sha1"></a></td>
</tr>

			</tbody></table>
		</div>
	</div>
Comment 15 David Williams CLA 2014-01-29 04:15:16 EST
And just not to lose track of it, the main purpose of this bug is to clean up the "inconsistent" copying of resources and at least have one way of doing it. So, that'll be important to finish by M6. 

The hard part of this, is doing it so the "delta pack" is correct, as well as our actual "products".
Comment 16 David Williams CLA 2014-02-25 07:07:30 EST
(In reply to David Williams from comment #14)
> As feared, the custom ant task that produces ("indexes") the download file
> is not very smart, so now the Mac 32 bit version is still shown, but gives
> "NA" for size, and if clicked, it gives an unusual 404 error message,
> naturally. 
> 
> http://download.eclipse.org/equinox/drops/I20140128-0800/index.php
> 

Actually, I think I found where this can be fixed in "template files". 

http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/commit/?id=8e49d777e7f4b7d7a5adfba79d988264ebf4d9d6
Comment 17 David Williams CLA 2014-02-25 07:35:38 EST
Created attachment 240295 [details]
patch to remove "copy up" items

I've done some local builds where I've removed the "copy up" parts of this POM, and all still seemed to work fine. 

I did move the "copy" part in with the other "copy parts" in the pom of "rcp.config" in "tychobuilder" -- and honestly not even sure it is required there :) [and, should say, "will soon", since just in my local repo so far]. 

But I think the right approach is to consolidate what ever copying we need, and not have it spread around here and there. 

I did find it important to remove to "root" statement from build.properties, or Tycho would throw  and exception ... "can't change permissions or make symbolic links if file does not exist" and fail to build (not just warning). 

If you agree, I'd like to make this change after this week's I-build (and, might be more than one, to day :) ... but would be good to "get it done" before M6.
Comment 18 David Williams CLA 2014-02-25 07:55:35 EST
Created attachment 240296 [details]
corresponding consolidation patch

Just to document it, here's what it looks like where I "consolidate" the "copy-up" to rcp.config. 

Note I commented out the permissions settings (since others seemed not to have that and seemed to work without it) and I commented out the "overwrite = true" (since none of the others had that and seems to work without it). 

I don't think these changes need to be perfectly coordinated ... once I change rcp.config, the equinox.core.feature part of that code will probably simply become useless.
Comment 19 Thomas Watson CLA 2014-02-25 08:34:50 EST
(In reply to David Williams from comment #17)
> If you agree, I'd like to make this change after this week's I-build (and,
> might be more than one, to day :) ... but would be good to "get it done"
> before M6.

Fine with me.  I can release at the end of day, depending on how the I-Build is looking.
Comment 20 David Williams CLA 2014-02-26 06:55:43 EST
(In reply to Thomas Watson from comment #19)
> (In reply to David Williams from comment #17)
> > If you agree, I'd like to make this change after this week's I-build (and,
> > might be more than one, to day :) ... but would be good to "get it done"
> > before M6.
> 
> Fine with me.  I can release at the end of day, depending on how the I-Build
> is looking.

BTW, I made my change yesterday, so feel free to change your piece. and close this as fixed (and then help keep an eye open for issues :) 

Be aware too of bug 429093. 

The point we want to end up is that all "executables" are in the "executable feature" ... but all other "product resources" are in the "product" section of the build.
Comment 21 David Williams CLA 2014-02-26 06:56:22 EST
(In reply to David Williams from comment #16)
> (In reply to David Williams from comment #14)
> > As feared, the custom ant task that produces ("indexes") the download file
> > is not very smart, so now the Mac 32 bit version is still shown, but gives
> > "NA" for size, and if clicked, it gives an unusual 404 error message,
> > naturally. 
> > 
> > http://download.eclipse.org/equinox/drops/I20140128-0800/index.php
> > 
> 
> Actually, I think I found where this can be fixed in "template files". 
> 
> http://git.eclipse.org/c/platform/eclipse.platform.releng.aggregator.git/
> commit/?id=8e49d777e7f4b7d7a5adfba79d988264ebf4d9d6

I verified this change fixed the web page.
Comment 22 David Williams CLA 2014-02-26 23:19:19 EST
(In reply to Thomas Watson from comment #19)
> (In reply to David Williams from comment #17)
> > If you agree, I'd like to make this change after this week's I-build (and,
> > might be more than one, to day :) ... but would be good to "get it done"
> > before M6.
> 
> Fine with me.  I can release at the end of day, depending on how the I-Build
> is looking.

Friendly reminder :) 
[Once done, I think I can "clean up" some of the "product poms" a little more.]
Comment 23 Thomas Watson CLA 2014-02-27 08:55:48 EST
(In reply to David Williams from comment #22)
> (In reply to Thomas Watson from comment #19)
> > (In reply to David Williams from comment #17)
> > > If you agree, I'd like to make this change after this week's I-build (and,
> > > might be more than one, to day :) ... but would be good to "get it done"
> > > before M6.
> > 
> > Fine with me.  I can release at the end of day, depending on how the I-Build
> > is looking.
> 
> Friendly reminder :) 
> [Once done, I think I can "clean up" some of the "product poms" a little
> more.]

I got this ready to push up to master, but waiting for a good I-Build first.
Comment 24 Thomas Watson CLA 2014-02-28 09:02:53 EST
(In reply to Thomas Watson from comment #23)
> (In reply to David Williams from comment #22)
> > (In reply to Thomas Watson from comment #19)
> > > (In reply to David Williams from comment #17)
> > > > If you agree, I'd like to make this change after this week's I-build (and,
> > > > might be more than one, to day :) ... but would be good to "get it done"
> > > > before M6.
> > > 
> > > Fine with me.  I can release at the end of day, depending on how the I-Build
> > > is looking.
> > 
> > Friendly reminder :) 
> > [Once done, I think I can "clean up" some of the "product poms" a little
> > more.]
> 
> I got this ready to push up to master, but waiting for a good I-Build first.

Finally did this in:

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/commit/?id=e311a338e7140795814e95bac36f877a86659c94

David, I will leave to you to close this bug as fixed.
Comment 25 David Williams CLA 2014-03-05 11:54:09 EST
I think we are 90% done here ... but, I would like to investigate a bit more if there is a reason or way we can avoid "copying up" the "eclipsec.exe" for Windows. 

I think the only reason we do is to "set executable permission" ... and off hand, seems that could be done by the "executable feature" itself, or something -- and, as far as I know, might already be being handled, and there is no reason to "copy up" at all!

Plus, there are some issues where for Mac OS only, I think, where we are still getting an extra un-renamed copy of 'launcher' from somewhere ... in addition to the renamed version of it named "eclipse".  

Plus, the "copy ups" we still have from "swt binaries" needs to be investigated. 
I'm not so much looking to change that, but currently we do  during "validate" phase -- which assumes they are already "done" and ready to copy from the very beginning -- which is true as things are now -- but I think technically should be done during "process-resources" phase, since I believe there is some process/build of natives that can happen in generate-resources phase ... and if not now, there should be :) so best to change to "process-resources" if no negative effects. 

Plus, in "rcp.config", there is still some "junk" left around that's not used ... and I believe even the "p2.inf" is mis-named for a "feature". (Might have opened another bug, for that, ah ... yes, bug 429418). 

So will leave open into M7 to finish these investigations.
Comment 26 David Williams CLA 2014-04-30 14:15:44 EDT
This overlaps with bug 427428 ... but will investigate "finishing" this work for RC1.
Comment 27 David Williams CLA 2014-05-14 17:54:17 EDT
Mass moving 5 releng bugs to RC2 -- will do proper triage tomorrow (5/15).
Comment 28 David Williams CLA 2014-05-18 20:10:58 EDT
I'm going to count this as "fixed" for 4.4 RC1 ... in part since bug 407109 was fixed then. While there is still some "clean up" to do, that's mostly related to "configuration feature", and will be tracked in bug 401037 ... I don't think are are any major "inconsistencies" left.