Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Platform » Need help building org.eclipse.ua without having to build every other eclipse project(For one file changed, fixed-version dependencies have me building virtually all eclipse projects my target depends on)
Need help building org.eclipse.ua without having to build every other eclipse project [message #1816294] Fri, 25 October 2019 13:18 Go to next message
Simon L. is currently offline Simon L.Friend
Messages: 8
Registered: July 2009
Junior Member
Hi, I am a newcomer to building eclipse platform components. My original thread asking for help on how to do so was at https://www.eclipse.org/forums/index.php/m/1811194/ . I need a tycho-built bundle or p2 repository which I want to integrate into my target platform to hot-fix an error in the e4 compatibility layer (for which I plan to follow up in the bugtracker and eventually, a PR upstream if that works out).

I have succeeded in fixing the issue I had with (eclipse.platform.ua/.../ReusableHelpPart.java). PDE-building the project it belongs to -- org.eclipse.help.ui -- in a PDE build. That means, exporting the project via PDE as a JAR and putting it into the run configuration of my product works. Great! Now I am sure to have the problem almost fixed.

However, the RCP is built at the end with Tycho. And this is giving me problems. My target platform [1] seems to depend on a fixed version of the project I fixed, and Tycho seems to force me to build all of the platform, equinox etc. projects!!

Therefore, 2 parts and the following inquiries:

  • I) is the stuff as I see it that is forcing me to build so much extra dependencies with tycho
  • II) is where I am stuck at the moment and where I think I can be helped quickly, but where I don't have domain knowledge to get further.
  • please enlighten me :) the more the better, because I want to do a sleek version of this adventure in the future when similar issues arise
  • but for the sake of getting things done, please also take a look directly at II) because I think I have gotten quite far and maya just need a pointer to where to get a dependency to get forward with work right now. Thanks :)


Ok, here is the matter:

I )
The circumstances where OSGi and Tycho seem to force me to build everything are:

- My product seems to have a non-explicit dependency on org.eclipse.help.feature.group with a fixed version number. As I nowhere specify this dependency myself (I thoroughly searched and grepped for it), it must be referenced by some of my target platform's constituents [1]
- org.eclipse.help.feature.group in turn depends on a FIXED version of org.eclipse.help.ui. This is part of eclipse.platform.ua, and indeed where I made changed to one file.
- Building and installing org.eclipse.help.ui with that same version number (to hotfix-replace it in my product) fails; tycho tells me, file contents differ from the SDK baseline or something, and it just plainly disregards the changes. It won't let me install the changed code with that same version number in my local repository. If there is a workaround for this, it would solve my problem, I think.
- I am a therefore forced to mvn install my changes (locally) under a new version number

Therefore I have to also build org.eclipse.help.feature.group (where the fixed version dependency came from), and following that, I have to pull into my build e.g. rt.equinox.bundles for a jetty component etc etc.

There must be a way around all that hassle for a single class to be changed, right? Help is much appreciated!

II) Where I am right now

Right now, I have installed locally the locally-built version org.eclipse.help.feature.group 2.3.0.v20191024-1814 which requires my changed code and I hoped everything would go fine now. However, this seems to force me to build other stuff. My hope now is, to get this "other stuff" via some public repositories. But I have no idea of how to get e.g. org.eclipse.equinox.http.jetty of that specific version without building it myself. After all, it is depended upon from the Oomph-cloned master branch of an eclipse platform project and tycho can't seem to find that version itself. Help!! :)

Tycho says right now:
[ERROR]   Software being installed: jcryptool 1.0.0
[ERROR]   Missing requirement: org.eclipse.help.feature.group 2.3.0.v20191024-1814 requires 'org.eclipse.equinox.p2.iu; org.eclipse.equinox.http.jetty [3.7.300.v20191015-2006,3.7.300.v20191015-2006]' but it could not be found
[ERROR]   Only one of the following can be installed at once: [org.eclipse.help.ui 4.1.700.v20190917-1614, org.eclipse.help.ui 4.1.701.v20190917-1614]
[ERROR]   Cannot satisfy dependency: jcryptool 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.jcryptool.core.dependencies.feature.feature.group [1.0.0,2.0.0)
[ERROR]   Cannot satisfy dependency: jcryptool 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.jcryptool.core.feature.feature.group [1.0.0,2.0.0)
[ERROR]   Cannot satisfy dependency: org.eclipse.help.feature.group 2.3.0.v20191009-1800 depends on: org.eclipse.equinox.p2.iu; org.eclipse.help.ui [4.1.700.v20190917-1614,4.1.700.v20190917-1614]
[ERROR]   Cannot satisfy dependency: org.jcryptool.core.dependencies.feature.feature.group 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.eclipse.help.feature.group [2.3.0,2.3.1)
[ERROR]   Cannot satisfy dependency: org.jcryptool.core.feature.feature.group 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.eclipse.help.ui [4.1.701.v20190917-1614,4.1.701.v20190917-1614]




  • org.eclipse.help.feature.group 2.3.0.v20191024-1814 I have built and installed locally myself after its predecessor (transitively required somewhere in my project) depended on the org.eclipse.help.ui with a fixed version
  • org.eclipse.help.ui 4.1.701.v20190917-1614 is the version of org.eclipse.help.ui I built myself and which I want in my product. 4.1.700 I don't need, it is just the Oomph-cloned "current" version of that project. My product depended previously upon org.eclipse.help.ui 4.1.600.<something>



Thank you for your help! :)

------ Appendix / github code pointers:

[1]
(I had fixed versions first for the units. To make things easier for tycho, I changed from 2019/09 to /12 and allowed with 0.0.0 to choose the most fitting ones; but maybe that is the wrong way. Yes, I read about that platform DSL but have not come around to use it.)
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
		<repository location="http://download.eclipse.org/releases/2019-12"/>
		<unit id="org.eclipse.equinox.core.sdk.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.equinox.p2.sdk.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.gef.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.platform.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.rcp.feature.group" version="0.0.0"/>
		<unit id="org.eclipse.rcp.sdk.id" version="0.0.0"/>
		<unit id="org.eclipse.zest.sdk.feature.group" version="0.0.0"/>
	</location>

This is an excerpt of: https://github.com/simlei/core/blob/contextHelpHotfix--tychoConfigWIP/org.jcryptool.target/org.jcryptool.target.target

The project has a .releng, .target and .product subproject structure that follows more or less the tutorials of vogella. This is the branch at the time of my posting.

points of interest would be e.g.:
xxx:~/git/jct-simlei-core$ grep -R --include='feature.xml' help . | grep -v '/target/'
./org.jcryptool.core.dependencies.feature/feature.xml:         id="org.eclipse.help"
./org.jcryptool.core.dependencies.nl_de.feature/feature.xml:      <import feature="org.eclipse.help" version="2.3.0"/>
./org.jcryptool.core.dependencies.nl_de.feature/feature.xml:         id="org.eclipse.help.base.nl_de"
./org.jcryptool.core.dependencies.nl_de.feature/feature.xml:         id="org.eclipse.help.nl_de"
./org.jcryptool.core.dependencies.nl_de.feature/feature.xml:         id="org.eclipse.help.ui.nl_de"
./org.jcryptool.core.dependencies.nl_de.feature/feature.xml:         id="org.eclipse.help.webapp.nl_de"
./org.jcryptool.core.feature/feature.xml:         id="org.jcryptool.core.help"
./org.jcryptool.core.feature/feature.xml:         id="org.eclipse.help.ui"

[Updated on: Fri, 25 October 2019 13:34]

Report message to a moderator

Re: Need help building org.eclipse.ua without having to build every other eclipse project [message #1816307 is a reply to message #1816294] Sat, 26 October 2019 02:14 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
Simon, you're impressively tenacious in getting this far! A tool that's really helpful for finding a specific version of any IU hosted in any Eclipse repository is described here:

https://wiki.eclipse.org/Eclipse_Oomph_Authoring#How_to_find_a_P2_repository_at_Eclipse_using_the_Repository_Explorer

So one can very quickly determine that the missing IU is available from:

http://download.eclipse.org/eclipse/updates/4.14-I-builds

Given that the master branch of all the platform repositories is built to produce the current 4.14 IBuilds, it would be best to base your target platform on those 4.14 IBuilds at this point in time.


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Need help building org.eclipse.ua without having to build every other eclipse project [message #1816434 is a reply to message #1816307] Tue, 29 October 2019 13:25 Go to previous messageGo to next message
Simon L. is currently offline Simon L.Friend
Messages: 8
Registered: July 2009
Junior Member
Hi Ed,

thanks for the high praise :)
Does that mean, my way of approaching this is valid? I.e. not a dead end?

I will try out how far I can get, now that I know how to pinpoint specific versions with the browser tool you linked, possibly next week. I'm sure I will have to come back then with more questions. But that tool, and using the I-Build repository, seems like a piece of the puzzle I have been missing! Thanks!

Regards,
Simon Leischnig

PS: what is an "IU"?

[Updated on: Tue, 29 October 2019 14:06]

Report message to a moderator

Re: Need help building org.eclipse.ua without having to build every other eclipse project [message #1816485 is a reply to message #1816434] Wed, 30 October 2019 03:40 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
Sorry, Installable Unit (p2 terminology) is kind of an unwieldy term, so I often shorten it to IU.

Not that it's entirely relevant, I generate reports on the state of various p2 repositories such as the platform's I-Builds:

https://download.eclipse.org/oomph/archive/reports/download.eclipse.org/eclipse/updates/4.14-I-builds/index.html

So in the end, everything in a p2 repository is an installable unit with detailed information about dependencies along with associated artifacts, which are the things you actually download and install in the end...


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:Need help building the eclipse platform runtime (platform.ui, .ua)
Next Topic:No property tester contributes a property org.eclipse.emf.ecp.core.project.open
Goto Forum:
  


Current Time: Wed Apr 24 23:58:38 GMT 2024

Powered by FUDForum. Page generated in 0.02725 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top