Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] .target File - includeConfigurePhase, includeMode, ...

Gilles,

I fear the expertise to answer this is not available and it's hard to find any documentation on these details.

No doubt you found this, but that tells you nothing about these details:

  https://wiki.eclipse.org/PDE/Target_Definitions

This doesn't provide such detail either:

https://help.eclipse.org/2019-09/index.jsp?topic=/org.eclipse.pde.doc.user/concepts/target.htm

If I understand correctly how these function, the planner includeMode will resolve all transitive dependencies and will fail if all dependencies can't be resolved or if there are conflicts (i.e., multiple singletons are required), while slicer model resolves as much as is possible but doesn't fail if dependencies are missing (or if there are multiple singletons).

I believe the includeConfigurePhase determines whether touchpoint logic (touchpoints as specified in the artifact metadata) is applied to the downloaded artifact; but I'm not sure about the exact details of which touchpoints might not function properly. Generally I have this true everywhere and it doesn't cause problems so I don't worry about it.  Touchpoints are extensible and there is a concept of meta-requirements that can require the touchpoint processor's bundle to be installed in order to be able to invoke the touchpoint logic and I suppose that could be problematic such that you'd want to disable the touchpoints.  It's just my theory...

The includeAllPlatforms determines how fragments are resolved, i.e., just the ones for the current OS/WS/Arch or all available ones.  When building Oomph, we include fragments in our own features so we need all fragments to be available to avoid warnings about missing references in our feature.xmls.  But of course at development time, we only need to launch with the fragments appropriate for our current environment...

The includeSource determines whether the corresponding source features/bundles will be resolved into the target platform. Generally this is only important at development time where it's great to have source code available for debugging purposes.

PDE is extensible and supports different types of locations. E.g., Oomph uses this to contribute Targlets:

  https://wiki.eclipse.org/Oomph_Targlets

It actually implements that shared bundle pool concept described here:

https://wiki.eclipse.org/PDE/Target_Definitions#Redownloading_of_Bundles

<rant>The Target Definition Editor in my opinion is a nightmare.  I don't understand why the editor insists on downloading all artifacts just to edit the .target file.   And in the end, it's painful and embarrassing that each resolve spends so much time downloading the same artifacts (typically yet again) and creates a gigantic copy of things I've downloaded already in another workspace or that already exist in the IDE itself.  Why oh why is something so fundamentally important like this?</rant>

End the end, I'm not sure that Tycho actually respects any of these settings. It's not so clear which attributes are considered and respected by Tycho looking at:

  https://wiki.eclipse.org/Tycho/Target_Platform#Target_files

Certainly it's clear that it doesn't support many location types, so it doesn't support Oomph Targlets directly.  As such Oomph supports generating a *.target file from the Targlet locations and we use that to avoid ever editing a *.target file.

Because I want to know everything, I typically maintain a workspace with "everything" in it:

  https://wiki.eclipse.org/Eclipse_Platform_SDK_Provisioning

Then I can always dive deep to see how things are implemented in excruciating detail...

Regards,
Ed


On 30.10.2019 18:45, Gilles Iachelini wrote:
dear fellow readers,

I am currently working with target platform files and we are trying to strip down our dependencies of our RCP application, server components using osgi and many other projects using a target platform.

I am looking for explanations what actually happens when the keywords within the location tag of a .target file like

- includeConfigurePhase
- includeMode
- includeAllPlatforms
- includeSource
- type

are used. I know, that using includeMode=“slicer” helps to reference, for instance, language fragments, which by nature have a reference to a host bundle, which is not necessarily part of the target platform, but must be available at build/package time. Why does every location must use the “slicer” mode, when one location is using it?

We are using the target platform file in the maven/tycho context to build our applications. There is a self explanatory charm to those attributes, but I have a hard time finding the definitions. Those explanations in the Eclipse Help aren’t very helpful, because they leave out the details.

For example to the “configurePhase” it says:
"Include configure phase is an advanced option to control whether the configure phase of the download operation will be run. The configure phase allows downloaded software to run additional operations. If this causes problems for your software site, this option can be turned off.”

I absolutely don’t want to blame anyone, but “advanced option” and “turn it of( if this causes trouble” isn’t really what I was looking for. I won’t mind a reference to source code. What are these operations and who has it?

All kind of comments are highly appreciated and I promise to collect all these comments and end the mystery of those keywords.


kind regards
Gilles

_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/p2-dev


Back to the top