The majority of the handling of the configuration files is done from the 
LazyManipulator class in the eclipse touchpoint, which is a facade for classes 
in equinox.fwkadmin.equinox bundles.

Pascal

On 2013-02-18, at 6:34 AM, Dileepa Jayakody wrote:

> Hi All,
> 
> Can I please know how P2 ProvisioningAgent updates the configuration files 
> after a feature installation? 
> 
> At the moment in my new multi-profile target enviorment with a shared p2-data 
> area, after a feature installation only the P2-Profile is updated with the 
> newly installed features.
> I also see that the new feature and plugins are properly extracted to 
> ${install.area}/features and {install.area}/plugins directories but the 
> relevant configuraton files 
> (configuration/org.eclipse.equinox.simpleconfigurator/bundles.info and 
> configuration/org.eclipse.update/platform.xml) are not updated with the new 
> features and pluging entries.
> 
> Are these files located by the P2-Agent relative to the URI given when we 
> create the provisioningAgent? (provisioningAgent = 
> provisioningAgentProvider.createAgent(agentURI);)
> What could be the possible reasons for the provisioning agent properly 
> updating the Profile and not the configuration files after a feature 
> installation?
> 
> Thanks,
> Dileepa
> 
> How does the ProvisioningAgent update these files during a feature 
> installation?
> 
> On Sun, Feb 17, 2013 at 2:09 AM, Dileepa Jayakody <[email protected]> wrote:
> Hi All,
> 
> We use a P2 ProvisioningAgent to perform provisioning operations in our 
> runtime. Our initial product distribution structure was similar to a generic 
> Eclipse installation with (dropins, plugins, features, configuration and p2 
> directories).
> Now we are looking at shipping multiple-profile installations in a single 
> distribution using a shared p2 data area along with different configuration 
> directories for each Profile, see the new layout at [1]. So now default the 
> configuration directory is changed to have separate configuration directory 
> per Profile.
> 
> AFAIU during the provisioning action, the P2 Agent updates the relevant 
> Profile and also adds the newly installed bundles to the 
> configuration/org.eclipse.equinox.simpleconfigurator/bundles.info 
> But with the new directory layout to support multiple-profile installations, 
> after performing a provisioning action, only the Profile is updated with the 
> newly installed IUs. The bundles.info in the relavant configuration directory 
> is not updated. 
> 
> Is there a way to provide the osgi.configuration.area argument to the P2 
> Agent so that it can find the bundles.info file to update after a 
> provisioning action? 
> I have also added the code-segment here on how we are performing P2 
> provisioning actions using P2 API [2].
> Any help/pointers on this is a life-saver!
> 
> Thanks,
> Dileepa
> 
> [1] new layout;
> 
> repository/components/
> |--ProfileA
> |    /configuration
> |       |--config.ini
> |       |--org.eclipse.equinox.
> simpleconfigurator/bundles.info
> |
> |--ProfileB
> |    /configuration
> |       |--config.ini
> |       |--org.eclipse.equinox.simpleconfigurator/bundles.info  
> 
> repository/components/p2 {shared p2 data directory for created profiles}
> |--org.eclipse.equinox.p2.engine
> |          |--profileRegistry
> |                |---ProfileA.profile
> |                |---ProfileB.profile 
> 
> 
> [2] The Provisioning code segment;
> 
>            String P2_AGENT_LOCATION = System.getProperty("carbon.home") + 
> File.separator + "repository" + File.separator +"components" + File.separator 
> + "p2";
>            URI agentURI = getAgentURI(P2_AGENT_LOCATION);
>            provisioningAgent = 
> provisioningAgentProvider.createAgent(agentURI);
>             IPlanner planner = 
> (IPlanner)provisioningAgent.getService(IPlanner.SERVICE_NAME);
>             setPlanner(planner);
>             IMetadataRepositoryManager metadataRepositoryManager =
>                     
> (IMetadataRepositoryManager)provisioningAgent.getService(IMetadataRepositoryManager.SERVICE_NAME);
>             setMetadataRepositoryManager(metadataRepositoryManager);
>             IArtifactRepositoryManager artifactRepositoryManager =
>                     
> (IArtifactRepositoryManager)provisioningAgent.getService(IArtifactRepositoryManager.SERVICE_NAME);
>             setArtifactRepositoryManager(artifactRepositoryManager);
>             IProfileRegistry profileRegistry = 
> (IProfileRegistry)provisioningAgent.getService(IProfileRegistry.SERVICE_NAME);
>             setProfileRegistry(profileRegistry);
>             IEngine engine = 
> (IEngine)provisioningAgent.getService(IEngine.SERVICE_NAME);
>             setP2Engine(engine);
>             setProvisioningContext(new 
> ProvisioningContext(provisioningAgent));
>              
>              
> provisioningAgent.registerService(IProvisioningAgent.INSTALLER_AGENT, 
> provisioningAgentProvider.createAgent(null));  
>              ProvisioningContext context = 
> ServiceHolder.getProvisioningContext();
>              IEngine engine = ServiceHolder.getP2Engine();
>              
> context.setMetadataRepositories(ServiceHolder.getMetadataRepositoryManager().getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL));
>              
> context.setArtifactRepositories(ServiceHolder.getArtifactRepositoryManager().getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL));
>              IStatus status = 
> PlanExecutionHelper.executePlan(provisioningPlan, engine, context, new 
> NullProgressMonitor());
> -- 
> Dileepa Jayakody,
> Software Engineer, WSO2 Inc.
> Lean . Enterprise . Middleware
> 
> Mobile : +94777-857616
> 
> 
> 
> -- 
> Dileepa Jayakody,
> Software Engineer, WSO2 Inc.
> Lean . Enterprise . Middleware
> 
> Mobile : +94777-857616
> _______________________________________________
> 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