Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] P2 touchpoint instructions doc

Hm, I think may able to answer this myself. The format is actually documented :)

The touchpoint data has a map, the keys in this map are the phases like "install", and the value is the format described on the wiki page - i.e. a string that needs to be parsed
to understand the actions and parameters i.e "action1(paramname1:value, paramname2:value, paramname3:value);action2(...); ..."

Can someone confirm - or have I got it wrong yet one more time :) ?


On 23 jun 2008, at 17.25, Henrik Lindberg wrote:

Thanks Simon,
Hm, seems that my understanding of this is still unclear. I understand touchpoint type - one IU can affect one touchpoint only, but I have trouble with Touchpoint Data.
The IU has a list of Touchpoint Data. What exactly is one such Touchpoint Data instance describing? I thought it was one instruction like "chmod", but now I am uncertain. From your response it seems like one Touchpoint Data instance describes a set of instructions for a phase like "install" - or is it even capable of describing multiple sets of instructions for different phases?

Is the following correct touchpoint data?

touchpoint data = a Map {
{ key = "install", value= a Map { 
{key=setXXX, value= aMap { {key=param1, value="" } {key=param2, value=""}},
{key=chmod, value= aMap { {key=param1, value="" } {key=param2, value=""}} }
{ key = uninstall, value= a Map { 
// instructions for uninstall...
} }
}

If that is true, then I will update the wiki page to make it clear - an "instruction" is the top level thing (i.e. "install", "uninstall"), and in such an instruction it is possible to specify actions (but only one action instance per type of action).


On 23 jun 2008, at 16.27, Simon Kaegi wrote:


> A couple of notes and questions:

> - With the current encoding (a map of instructions), it is not
> possible to use the same instruction type more than once. Is this
> intentional? What if the author needs to create two directories etc?
> (I am asking because if this will be changed in the future I want to
> allow the user to add more than one of the same instruction type).


At runtime the intent is to allow a "resolved" IU to provide multiple instructions with the same key. e.g. multiple "install" instructions is fair game.
I use "runtime" and "resolved" because one of the important uses of multiple instructions is to allow IUFragments to provide additional instructions with the same key.
e.g. an IU when resolved with IUFragments might provide multiple "install" instructions.

At dev time I would suggest only using one instruction for each key although I don't believe there is a formal restriction here.

> I think I may have understood the format wrong. Does an instance of
> TouchpointData describe one instruction?


Multiple instructions are fine... e.g. an IU's touchpoint data section can provide an "install", "uninstall", "configure", etc. set of instructions.

> - Why the special use of "@artifact" instead of an injected
> parameter like "artifactDir" that can be included with $
> {artifactDir} ? (I am asking because I am thinking about what kind
> of editing support to offer - perhaps browse/select from available
> parameters, and the @artifact is different than the other parameters).


Yes this is something we can cleanup. Originally we didn't have a place to initialize parameters that would get set by an action from an earlier phase.
There are a few other changes that need to be done here also to allow referencing more than just the first artifact of an IU. As a result I was reluctant to do a change here late in the cycle.

> - How are actions executed during the phases? (I have not studied
> the code), but it seems logical that what is specified in the IU's
> touchpoint data gets executed during install and uninstall - and
> that the install phase  executes the Action's "execute" the
> uninstall executes the Action's "undo" - is this correct?


Undo is used "only" when rolling back a failed set of operations.
e.g. during the uninstall phase we use explicit uninstallbundle actions.
The reason this is the case is that an action/undo pair is not always perfectly symmetric e.g. an action can be destructive (for example over-writing a program argument). In these cases the actions "undo" can restore from a saved memento.

-Simon

>
> Henrik Lindberg

> henrik.lindberg@xxxxxxxxxxxxxx
>
> On 20 jun 2008, at 04.56, Simon Kaegi wrote:

>
> > I have now written a wiki page: http://wiki.eclipse.org/
> > Equinox_p2_Touchpoint_Instructions describing the touchpoint
> > instructions for the native and eclipse touchpoints, their
> > parameters, and how I think it works after reading the code. There
> > are places where I need help (indicated by blue comment boxes), but
> > I may have gotten other things wrong as well.
> >
> > It is probably of value to also describe the parameters inserted by
> > the engine as these can be used in parameter substitution. I don't
> > know if it is intended, but it seems very powerful to be able to
> > reference the "previous value". Shall I just make a list of what I
> > find, and include it?
> >
> > So, I hope someone has time to review and comment on the
> > documentation on the wiki page.
>
> Great job.
> I'll go through and review tomorrow.
> While reading through I recognized there is some overlap with an
> earlier page -- http://wiki.eclipse.org/Equinox_p2_Engine
> Your presentation is vastly better and easier to understand so I'll
> go through and do some merging/updating/re-organizing of that content.
>
> Thanks.
> -Simon
>
> >
> > Regards
> >
> > Henrik Lindberg
> > henrik.lindberg@xxxxxxxxxxxxxx
> >
> > On 18 jun 2008, at 19.13, Simon Kaegi wrote:
> >
> > > - How can I learn what the input to the actions are? Some parameters  
> > > look like they are provided by the runtime (i.e. not specified in the  
> > > iu touchpoint data). If there is no documentation, I can write up a  
> > > list of what I think the parameter are and ask for someone to review.
> >
> > That would be incredibly appreciated.
> > _______________________________________________
> > equinox-dev mailing list
> > equinox-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/equinox-dev

> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev


Back to the top