Hi Chris, 

I looked at the proposal. Are you suggesting that each RPM delivering plugins 
will deliver alongside with the various jars, a bundles.info and some metadata 
(what you call profile?) and then those files would be logically merged at 
runtime, or are you suggesting that RPM appends content to the bundles.info and 
the profile file?
For this last one, I agree that it is simpler since probably no p2 code changes 
should be required. If we are talking of the first one, then I think it is very 
involving because you would have to change or create specific versions of 
simpleconfigurator, simpleconfiguratormanipulator and the profile registry.
 
Since I'm not sure here a more thorough description of ideas we discussed in 
the past: the droplet and the dynamic creation of profiles.

-=-= Droplet =-=-
I liked the idea of droplet but the fact that you were trying to modify the 
dropins and reconciler was the main pb to me. I see droplets as another 
mechanism to install software, mechanism that is complementary to the many 
other ways that we already have.
For me a droplet would look like this on disk:
   CDT/
       features/
        (features in ready to run format)
       plugins/
        (plugins in ready to run format)
       content.jar
       artifacts.jar
       toInstall.txt

Where the "toInstall.txt" file lists the IU Id of the IU(s) that must be 
installed.

The RPM installer would store the droplet (e.g. the CDT folder) in a "droplet" 
folder in the Eclipse platform.
Then at runtime, the droplet bundle would start (before the dropins) , find all 
the toInstall.txt file resolve those against the profile of "the base" (the 
read only install of the platform) and proceed with the install, which ends up 
creating a new profile (Note that since the RPMs are expected to provide all 
the necessary dependencies, then the install could not fail). After that the 
migration logic would kick in to find that things have been changed and would 
propose to reinstall what was in the user space. Btw I honestly never 
understood the 
To me this solution seems simple because it just acts as another mechanism to 
install bundles, it is relatively separate from the rest of p2 and the only 
change that I could foresee to be needed would be something in the shared 
install mechanism.
Of course implemented like this, this mechanism would only be useful for the 
case at end (where the droplets are installed by an installer against an 
existing base that is read-only) but after all this is what we need. To make it 
usable by everybody (e.g. a normal user adds things through droplets), then the 
creation of the request would have to be more complex to deal with the removal 
from droplets of items that could have been depended upon by items installed by 
the user.

-=-= dynamic profile creation =-=-
Since the "structured" nature of p2 with the bundles.info, the sources.info and 
the profile file is not playing well with RPM, we had discussed the possibility 
of having a more dynamic setup for p2 and also the discovery of bundles (which 
could solve the issue of versions of files being updated for security updates).
The first thing to change would be to replace (or extend) simpleconfigurator 
and bundles.info by a new mechanism that finds bundles in known places. For 
example simpleconfigurator could be changed to traverse folders when it 
encounters one but also be able to deal with files like it does today.
The second thing would be for the profile to never be stored but always 
recomputed when requested.  This generation of the profile would be done from 
bundles info but also other sources like feature, or whatever we want to 
provide it. In this specific case, since the base is not modifiable then the 
metadata for the things that are from the base does not need to be precise 
(e.g. no need for the touchpoint actions) since the IUs from the base will 
never be uninstalled by p2 itself. If precision was something necessary, then 
we could have a storage of 

So how does that fit together:
The platform is shipped with a bundles.info that points to places where the 
bundles can be found, and no profile.
When a new RPM is installed, it appends a line to the bundles.info file to say 
where its bundles are located (and something similar is done for features or 
more generally metadata). At runtime, when the profile is requested, a profile 
is created from this data and returned.

Though in appearance a bit more complex than Droplets seem to solve all the RPM 
related problem, but would also be generally applicable to start provisioning 
with p2 any Equinox based app w/o having to ship a profile.

Let me know what you think,

Pascal
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf 
Of Krzysztof Daniel
Sent: October-22-13 3:56 AM
To: p2-dev
Subject: [p2-dev] RPM-P2 integration - new approach

Hey,

I've described a new approach to the problem [1]. It consists mostly of advices 
I got in the past, but now it seems to make sense as a whole :-). Also, it 
looks like being much simpler to implement, and much less invasive.

Comments welcome, as always.

[1]
http://wiki.eclipse.org/Equinox/p2/Plan/3rd_party_installers_on_Linux#Solution_description_II

--
Krzysztof Daniel <[email protected]>
Red Hat

_______________________________________________
p2-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________
p2-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/p2-dev

Reply via email to