[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] Loading eclipseextension repository with artifact size = 0


On 01/24/2013 01:31 PM, Mikhail Kalkov wrote:
I don't know about other subscribers of the p2-dev mailing list, but to me your description does not make sense at all.

My scenario is as following:
1. Uninstall everything which is already installed in eclipse.
2. Reinstall all the components along with some new/updated components.
As far as I know, Eclipse GUI does not have any explicit "uninstall" option. It is possible to uninstall components by going to a previous state, but if you've got a fresh copy, there is no previous state. On the other hand, one can use p2 director to uninstall components but all components in a fresh install are usually required by a single "root" one. So, it is impossible to uninstall random components. Finally, if you use p2 director, you can mention the same component in both uninstall and install lists, and it will be updated, but the update is again limited to what is permitted by the root element, and given you description I guess you had two separate operations anyway. You don't say if you use p2 director or another tool and if you run it inside the provisioned platform or separately. Consequently, it is not possible to say what "everything" means because what you can uninstall depends on whether you have to leave the platform runtime binary intact.

Thanks Mikhail for taking a look. I apologize for not being to specific.
By "Uninstall everything", I mean following:

1. Start eclipse, Click Help -> Install New Software.
2. Click "What is already installed?" link.
3. Select All the Root IUs.
4. Click uninstall and then finish.

It would be much easier to understand you at least for me if you provided clear steps to reproduce your case. Which target Eclipse platform do you use exactly (list of root IU ids and versions or a link to download from eclipse.org)? If you run p2 director or another tool without starting the target platform, which version of Eclipse do you use exactly (see the previous question)? What are the commands you give to the director application? What is the expected outcome? What is the actual outcome?

I will try to create a simple reproducer and will update you. But so far
situation is as under:

1. I have Eclipse Version: 3.7.1 with some additional stuff(related to
our product) installed via p2 as well as dropin folder. I want to
upgrade it to new version of our product.

2. I uninstall everything which is already installed by using the
eclipse(as explained earlier) or by invoking the p2-director and
mentioning all the root IUs visible in "already installed?" dialog.
Please note result is same. GC is not invoked so plugins are still there
in eclipse/plugins directory.

3. Now I try to upgrade the eclipse folder of step 2 to newer version of
eclipse(Version: 3.8.1) and few of updates in our product. I execute
p2-director(newer version of p2-director in eclipse Version: 3.8.1 from
some other location).

Command:
java -jar
path_to/p2-director/plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar


-application org.eclipse.equinox.p2.director -repository repo_list
-installIU root_IUs_list -destination same_destination_of_step_2 -p2.os
linux -p2.ws gtk -p2.arch x86 -roaming -profileProperties
org.eclipse.update.install.features=true -roaming -profile SGXXProfile


Expectation: I expect the installation to succeed.

Actual Problem:
http://dev.eclipse.org/mhonarc/lists/p2-dev/msg04903.html

Reason of the problem:
Because of.eclipseextension repo the missing file is not downloaded.
http://dev.eclipse.org/mhonarc/lists/p2-dev/msg05025.html


Work Around: If I execute p2-director from some other location (not from the same eclipse directory to which I am going to perform uninstall operation) the garbage collector is invoked and everything is removed. Hence the installation in step 3 works perfectly fine.

Thanks,
Ali

/Mikhail


----- Original Message ----- From: "ali_anwar" <ali_anwar@xxxxxxxxxxxxxxxx> To: "P2 developer discussions" <p2-dev@xxxxxxxxxxx> Cc: "mikhail kalkov" <mikhail.kalkov@xxxxxxxxxxxxxx> Sent: Wednesday, January 23, 2013 9:21:37 PM Subject: Re: [p2-dev] Loading eclipseextension repository with artifact size = 0

On 01/22/2013 06:23 PM, ali_anwar wrote:

I have a one question is it right for eclipse to create an
.eclipseextension artifact repository on its own for the stuff in
eclipse folder, when you uninstall everything?

-Ali

On 01/22/2013 05:56 PM, ali_anwar wrote:
Hi Mikhail,

The eclipseextension repository is actually an
ExtensionLocationArtifactRepository,
"file:/home/ali/path_to/eclipse/.eclipseextension". Now the problem is
that the base Directory of this repo is actually eclipse folder
containing the plugins and features which are not yet removed by the
garbage collector. Somehow this repository gets initialized with the
stuff in the base directory (Bundle Pool Repository).


"file:/home/ali/path_to/eclipse/.eclipseextension" is in fact being treated as a CACHE_EXTENSIONS repository.


The ExtensionLocationArtifactRepository is not created by me but instead
it was automatically created when I uninstalled all the components that
were already installed.

My scenario is as following:
1. Uninstall everything which is already installed in eclipse.
2. Reinstall all the components along with some new/updated components.

Problem:
After uninstall .eclipseextension(ExtensionLocationArtifactRepository)
repo is created which during installation(step 2) is populated with the
stuff of basedirectory (Bundle Pool Repository), which is eclipse
folder. But after the GC is invoked, ExtensionLocationArtifactRepository
is not updated/reinitialized.

Thanks,
-Ali

On 01/22/2013 01:18 PM, Mikhail Kalkov wrote:
Hi Ali,

I believe that an eclipseextension
(ExtensionLocationMetadataRepository) can only contain features/ and
plugins/ directories. If you additionally have any of p2 metadata
files
({artifacts,compositeArtifacts,content,compositeContent}.{xml,jar}),
this becomes a p2 repository (StandardP2Repository). Finally, starting
with Eclipse 4.2 an error is produced if one tries to load an
eclipseextension directory with one of the aforementioned files,
unless there is a ".eclipseextension" file which silences the error
(see https://bugs.eclipse.org/bugs/show_bug.cgi?id=348990). I don't
know an answer to your question, but hope this helps.

Kind regards,
Mikhail Kalkov


----- Original Message ----- From: "ali_anwar" <ali_anwar@xxxxxxxxxxxxxxxx> To: p2-dev@xxxxxxxxxxx Sent: Monday, January 21, 2013 8:26:30 PM Subject: Re: [p2-dev] Loading eclipseextension repository with artifact size = 0

On 01/21/2013 10:37 PM, ali_anwar wrote:
Hi,

I have following contents in artifact.xml file for eclipseextension
repo:


Please note that eclipseextension repo is automatically created with below mentioned data even when you delete all the IUs from the eclipse-juno.

Version: Juno Service Release 1
Build id: 20120920-0800

<?artifactRepository version='1.1.0'?>
<repository name='/home/ali/path_to/eclipse/.eclipseextension'
type='org.eclipse.equinox.p2.artifact.repository.simpleRepository'
version='1.0.0'>
     <properties size='3'>
       <property name='p2.timestamp' value='1358545297882'/>
       <property name='org.eclipse.update.site.policy'
value='USER-EXCLUDE'/>
       <property name='org.eclipse.update.site.list' value=''/>
     </properties>
     <mappings size='3'>
       <rule filter='(&amp; (classifier=osgi.bundle))'
output='${repoUrl}/plugins/${id}_${version}.jar'/>
       <rule filter='(&amp; (classifier=binary))'
output='${repoUrl}/binary/${id}_${version}'/>
       <rule filter='(&amp; (classifier=org.eclipse.update.feature))'
output='${repoUrl}/features/${id}_${version}.jar'/>
     </mappings>
     <artifacts size='0'/>
</repository>


When p2 loads the repository it shows that the size of artifacts is 298 instead of 0. Little investigation revealed that the artifacts are those which are mentioned in eclipse/artifact.xml file:


<?artifactRepository version='1.1.0'?> <repository name='Bundle pool' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1.0.0'> <properties size='2'> <property name='p2.system' value='true'/> <property name='p2.timestamp' value='1358545325329'/> </properties> <mappings size='3'> <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/> <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/> <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/> </mappings> <artifacts size='298'> <artifact classifier='osgi.bundle' id='org.eclipse.rse.services.files.ftp' version='3.0.300.v201101042155'> <properties size='1'> <property name='download.size' value='39844'/> </properties> </artifact> ...


Is it an expected behaviour (as the mappings of both repositories is same)?

Thanks,
-Ali
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev

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