[
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