I still have the problems described below. What I want to achieve is upgrading/downgrading a product (with one feature and one bundle) interchangeably.
Assuming that the following product versions are available in different P2-repos: product v1.0.0_RC1 -> feature v1.0.0_RC1 -> bundle v1.0.0_RC1 product v1.0.0_RC2 -> feature v1.0.0_RC2 -> bundle v1.0.0_RC2 I want to be able to upgrade the product from v1.0.0_RC1 to v1.0.0_RC2 and then back to v1.0.0_RC1 again using SynchronizeOperation and two different P2-repos. The feature seems to be correct in the end, but the ACTIVE bundle is still v1.0.0_RC2 and not v1.0.0_RC1. I have forked https://github.com/pieceoftheloaf/SynchronizeOperation<https://github.com/pieceoftheloaf/SynchronizeOperation/blob/master/webapps/root/test.app/src/test/app/Application.java> and created a test case which I believe shows this problem. This is available at https://github.com/wallmarc/SynchronizeOperation. Is there a problem in my testcase or is it a known behavior of P2 to not be able to downgrade a bundle? Thank you for any help! Br Marcus 2012/2/2 Marcus Wallin <[email protected]> > I have problems "downgrading" a bundle within an RCP product using > P2/SynchronizeOperation. > > I'm using tycho-demo/itp04-rcp [1] as a base but with the following > modifications: > - addition of headless update using SynchronizeOperation (inspired by > Dave Orme [2]) > - updated target platform using eclipse-platform-SDK-M20120118-0800-win32 > [3] to create local P2 repository (reason was to get the fix for bug 345284 > [4]) > > [1] https://github.com/eclipse/tycho/tree/master/tycho-demo/itp04-rcp > [2] > https://github.com/pieceoftheloaf/SynchronizeOperation/blob/master/webapps/root/test.app/src/test/app/Application.java > [3] > http://download.eclipse.org/eclipse/downloads/drops/M20120118-0800/index.php > [4] https://bugs.eclipse.org/bugs/show_bug.cgi?id=345284 > > > * Use Case (I'm stating it here because I haven't seen this kind of usage > discussed anywhere) > The RCP product is a client to a server running in multiple environments > (e.g. dev, qa, prod). > Each environment can of course run different versions of the server > application, which in turn may require different client versions. > By means of a settings page in the client, the user can change environment > and restart to apply. > When the client is starting, it should make sure it is running the version > that the server environment it is connecting to requires (by means of e.g. > a P2-repo hosted at each server application). > > I should say that this setup is working fine using the pre-p2 update > functionality. > > > Build steps performed: > - C:\itp04-rcp>mvn clean install > - Copy C:\itp04-rcp\eclipse-repository\target\repository to <local > webroot>\www1 > - Unzip > C:\itp04-rcp\eclipse-repository\target\products\example.product.id-win32.win32.x86.zip > to C:\temp\example.product.id-win32.win32.x86 > - C:\itp04-rcp>mvn clean install (to build next version) > - Copy C:\itp04-rcp\eclipse-repository\target\repository to <local > webroot>\www2 > > > Contents of WWW1-repo (http://localhost/www1) > C:\temp\example.product.id-win32.win32.x86>eclipsec.exe -application > org.eclipse.equinox.p2.director -repository http://localhost/www1 -list > > osgi> 201202012232.example_category_id=1.0.0.01-dXLh--7735737357797 > 201202012232.install_feature2_category=1.0.0.03-ddHh--7735737357797 > example-bundle=0.1.0.201202012232 > example-feature-2.feature.group=0.2.0.201202012232 > example-feature-2.feature.jar=0.2.0.201202012232 > example-feature.feature.group=0.1.0.201202012232 > example-feature.feature.jar=0.1.0.201202012232 > example-feature_root=0.1.0.201202012232 > example-feature_root.win32.win32.x86=0.1.0.201202012232 > example.product.id=0.1.0.201202012232 > example.product.id.executable.win32.win32.x86=0.1.0.201202012232 > example.product.id.executable.win32.win32.x86.eclipse=0.1.0.201202012232 > + lots of org.eclipse.* bundles > > Contents of WWW2-repo (http://localhost/www2) > C:\temp\example.product.id-win32.win32.x86>eclipsec.exe -application > org.eclipse.equinox.p2.director -repository http://localhost/www2 -list > > osgi> 201202012235.example_category_id=1.0.0.01-dXLh--773573735779C > 201202012235.install_feature2_category=1.0.0.03-ddHh--773573735779C > example-bundle=0.1.0.201202012235 > example-feature-2.feature.group=0.2.0.201202012235 > example-feature-2.feature.jar=0.2.0.201202012235 > example-feature.feature.group=0.1.0.201202012235 > example-feature.feature.jar=0.1.0.201202012235 > example-feature_root=0.1.0.201202012235 > example-feature_root.win32.win32.x86=0.1.0.201202012235 > example.product.id=0.1.0.201202012235 > example.product.id.executable.win32.win32.x86=0.1.0.201202012235 > example.product.id.executable.win32.win32.x86.eclipse=0.1.0.201202012235 > + lots of org.eclipse.* bundles > > > > Initially, the RCP product has the same versions of example-*IUs found in > WWW1-repo (i.e. ending with qualifier .201202012232) > The "Installed Software"-tab contains: > Add-on Function for p2 1.0.1.v20110906-1605-7A4FD4DiVOMap8cHSc6vPuny4gqO > org.eclipse.equinox.p2.extras.feature.feature.group Eclipse.org - Equinox > Eclipse RCP 3.7.1.r37x_v20110729-9DB5FmlFq5JCf0w948R-kz0S0272 > org.eclipse.rcp.feature.group Eclipse.org > Equinox p2 Core Function > 1.0.1.v20110906-1605-8290FZ9FVKHVRKtmx3fpNuo02129 > org.eclipse.equinox.p2.core.feature.feature.group Eclipse.org - Equinox > Equinox p2 Provisioning for IDEs. > 2.1.2.R37x_v20110815-1155-6-Bk8pYWZz0qUTX5I15GZWwbXkrl > org.eclipse.equinox.p2.user.ui.feature.group Eclipse.org - Equinox > Equinox p2 RCP Management Facilities > 1.0.1.v20110906-1605-782EqBqNKGVkiV-PUsgz-uny4gqO > org.eclipse.equinox.p2.rcp.feature.feature.group Eclipse.org - Equinox > Example Feature 0.1.0.201202012232 example-feature.feature.group > Eclipse.org > Example Feature 2 0.2.0.201202012232 example-feature-2.feature.group > Eclipse.org > Example Product 0.1.0.201202012232 example.product.id null > "Plugins"-tab containts example-bundle 0.1.0.201202012232 > > When starting the RCP product pointing it to WWW2-repo, it installs the > example-UIs found in WWW2-repo (ending with qualifier .201202012235) > The "Installed Software"-tab contains: > Add-on Function for p2 1.0.1.v20110906-1605-7A4FD4DiVOMap8cHSc6vPuny4gqO > org.eclipse.equinox.p2.extras.feature.feature.group Eclipse.org - Equinox > Eclipse RCP 3.7.1.r37x_v20110729-9DB5FmlFq5JCf0w948R-kz0S0272 > org.eclipse.rcp.feature.group Eclipse.org > Equinox p2 Core Function > 1.0.1.v20110906-1605-8290FZ9FVKHVRKtmx3fpNuo02129 > org.eclipse.equinox.p2.core.feature.feature.group Eclipse.org - Equinox > Equinox p2 Provisioning for IDEs. > 2.1.2.R37x_v20110815-1155-6-Bk8pYWZz0qUTX5I15GZWwbXkrl > org.eclipse.equinox.p2.user.ui.feature.group Eclipse.org - Equinox > Equinox p2 RCP Management Facilities > 1.0.1.v20110906-1605-782EqBqNKGVkiV-PUsgz-uny4gqO > org.eclipse.equinox.p2.rcp.feature.feature.group Eclipse.org - Equinox > Example Feature 0.1.0.201202012235 example-feature.feature.group > Eclipse.org > Example Feature 2 0.2.0.201202012235 example-feature-2.feature.group > Eclipse.org > Example Product 0.1.0.201202012235 example.product.id null > "Plugins"-tab containts example-bundle 0.1.0.201202012235 > > So far, the upgrade has worked from versions .201202012232 -> .201202012235 > > Now, to simulate a user switching his client to an older server > environment, I try to sync the client to WWW1-repo again, i.e. > "downgrading" from .201202012235 -> .201202012232 > After this, the "Installed Software"-tab contains: > Add-on Function for p2 1.0.1.v20110906-1605-7A4FD4DiVOMap8cHSc6vPuny4gqO > org.eclipse.equinox.p2.extras.feature.feature.group Eclipse.org - Equinox > Eclipse RCP 3.7.1.r37x_v20110729-9DB5FmlFq5JCf0w948R-kz0S0272 > org.eclipse.rcp.feature.group Eclipse.org > Equinox p2 Core Function > 1.0.1.v20110906-1605-8290FZ9FVKHVRKtmx3fpNuo02129 > org.eclipse.equinox.p2.core.feature.feature.group Eclipse.org - Equinox > Equinox p2 Provisioning for IDEs. > 2.1.2.R37x_v20110815-1155-6-Bk8pYWZz0qUTX5I15GZWwbXkrl > org.eclipse.equinox.p2.user.ui.feature.group Eclipse.org - Equinox > Equinox p2 RCP Management Facilities > 1.0.1.v20110906-1605-782EqBqNKGVkiV-PUsgz-uny4gqO > org.eclipse.equinox.p2.rcp.feature.feature.group Eclipse.org - Equinox > Example Feature 0.1.0.201202012232 example-feature.feature.group > Eclipse.org > Example Feature 2 0.2.0.201202012232 example-feature-2.feature.group > Eclipse.org > Example Product 0.1.0.201202012232 example.product.id null > > This tells me that the the downgrade of product and features worked as > expected. > The issue I have though is that the "Plugins"-tab still shows > example-bundle 0.1.0.201202012235, i.e. the plugin was not downgraded so > now there's an inconsistency between the running example-feature and the > running example-bundle. > > Doing "ss" in the OSGI-console gives me: > 82 ACTIVE example-bundle_0.1.0.201202012235 > 83 INSTALLED example-bundle_0.1.0.201202012232 > > Looking in C:\temp\example.product.id-win32.win32.x86\plugins I find both > versions of the example-bundle: > - example-bundle_0.1.0.201202012232.jar > - example-bundle_0.1.0.201202012235.jar > Stopping the client, deleting example-bundle_0.1.0.201202012235.jar from > the file system and starting again gives me the correct ACTIVE bundle: > 83 ACTIVE example-bundle_0.1.0.201202012232 > > > The feature.xml contains <plugin id="example-bundle" version="0.0.0" /> > which I thought meant "latest version of example-bundle during build-time" > as opposed to "during runtime" in P2. > > To my knowledge, the content.xml seems ok: > - WWW1-repo (http://pastebin.com/ekVqXhFv) > - WWW2-repo (http://pastebin.com/ipR5MTRQ) > > Could anyone help me debug this further or explain why this is happening? > Perhaps I'm under the wrong assumption that the example-feature allows > one-and-only-one version of the example-bundle? > > Many Thanks > Marcus Wallin > > > > >
_______________________________________________ p2-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/p2-dev
