Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-ui-dev] Cross platform build

Hi all,

 

I am trying to set-up a cross-platform Tycho build with a minimalistic set of bundles. The goal is to build the new NatTable E4 Examples application with the least necessary bundles to keep the size of the archive files as small as possible.

 

The org.eclipse.e4.rcp feature is too big, so I am trying to create a custom E4 RCP feature with only the necessary parts.

 

To elaborate what I think what can be replaced, or at least what was done in the old E3 world:

-       Remove com.ibm.icu and replace it with com.ibm.icu.base
This saves about 10MB. Sure this sounds not much today. But to reduce the download size and the necessary space on the download servers this is quite useful. BTW, this could be also useful in general for IoT use cases, but of course nothing related to the current task.
I also noticed and fixed a bundle dependency issue in Platform UI that makes this change almost impossible (well if you don’t remove the dependent bundle o.e.e4.ui.dialogs, which is also not needed in a minimalistic feature) https://bugs.eclipse.org/bugs/show_bug.cgi?id=509918

-       Remove the console bundles

-       Remove the databinding bundles. Unfortunately this seems to be not possible with E4, as Platform UI depends on databinding, at least in the bundle o.e.e4.ui.workbench.swt. And there the dependency is introduced to make use of org.eclipse.core.databinding.observable.Realm. I personally think such a dependency is not good, as this now means the SWT renderer is dependent on databinding. But I have to admit that I don’t know what Realm is. And it seems to be used for a long time there, so it seems nobody else has an issue with this, therefore I don’t want to start a discussion here.

 

I created a custom feature similar to org.eclipse.e4.rcp and replaced/removed what I wanted or at least what was possible.

I then modified the NatTable target platform according to https://wiki.eclipse.org/A_Brief_Overview_of_Building_at_Eclipse#Preferred_way_of_doing_multi-platform_builds

The first thing I noticed was that "Eclipse RCP Target Components" does not exist anymore in Neon. Is this intended?

 

But when I try to run the Tycho build now, I get the following error message at the very beginning when the target platform is resolved:

 

[ERROR] Cannot resolve target definition:

[ERROR]   Problems resolving provisioning plan.:

[ERROR]      Unable to satisfy dependency from org.eclipse.swt 3.105.2.v20161122-0613 to org.eclipse.swt.gtk.linux.aarch64 [3.105.2.v20161122-0613].

[ERROR]      Unable to satisfy dependency from org.eclipse.swt 3.105.2.v20161122-0613 to org.eclipse.swt.gtk.linux.arm [3.105.2.v20161122-0613].

 

I am not very familiar with the SWT dependency structure or the p2 stuff related to it. But a) it looks strange that there is a dependency from the host bundle to the fragments, and b) that there are fragments listed that doesn’t seem to exist. Never heard of SWT for aarch64 or arm and these fragments are also not included in the org.eclipse.e4.rcp feature.

Did anyone had this issue before (I have seen one entry in Google for some RedHat build log)?

Is there anything else to consider for a custom multi-platform build?


Greez, 

Dirk 


Back to the top