Hi Pascal,

Thanks a lot for the pointer.
I went through the code, and I saw that LazyManipulator in it's
loadDelegate() sets the configurationFolder for the running profile;
launcherData.setFwConfigLocation(Util.getConfigurationFolder(profile));

The configuration folder is selected based on
org.eclipse.equinox.p2.configFolder OR
org.eclipse.equinox.p2.installFolder/configuration.

Unfortunately the 'org.eclipse.equinox.p2.installFolder value is hard-coded
into my Profiles in ProfileRegistry during the build as below.

<profile id='WSO2CarbonProfile' timestamp='1361223701812'>
  <properties size='4'>
    <property name='*org.eclipse.equinox.p2.installFolder*' value='*
/media/Carbon_Volume/Ubuntu_Resources/carbon/multipleP2ProfileSupport/dileepa/kernel/trunk/distribution/kernel/target/WSO2Carbon/WSO2CarbonProfile
*'/>
    <property name='org.eclipse.equinox.p2.cache'
value='/media/Carbon_Volume/Ubuntu_Resources/carbon/multipleP2ProfileSupport/dileepa/kernel/trunk/distribution/kernel/target/WSO2Carbon'/>
    <property name='org.eclipse.update.install.features' value='true'/>
    <property name='org.eclipse.equinox.p2.environments' value='osgi.nl
=en_GB,osgi.ws=gtk,osgi.arch=x86,osgi.os=linux'/>
  </properties>
</profile>

I tried to override these values in launch.ini just like I can for
p2.data.area, osgi.configuration.area. But it was not detected. Can you
please suggest a way to override the hardcoded p2.installFolder value here
so that P2 will correctly update the bundles.info file upon a provisioning
action?

Thanks,
Dileepa


In my case could this be the a reason

On Mon, Feb 18, 2013 at 7:55 PM, Pascal Rapicault <[email protected]>wrote:

> 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
>
>


-- 
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

Reply via email to