SlideShare une entreprise Scribd logo
1  sur  24
p2, your savior or your Achilles heel? Everything an Eclipse team needs to know about p2! R. Ian Bull Pascal Rapicault
Alternate Titles 10 reasons we closed your p2 bugs as INVALID? 10 ways to get booted from the p2 mailing list! 10 excuses why we didn’t buy you a beer  p2, 10 common pitfalls and how to avoid them. 3/21/2011 2
#1Move / remove files on disk Leading cause of p2 failures: developers tampering with plugins/ folder If you no longer need a pluginDO NOT REMOVE IT BY HAND Do not move, unzip or change a plug-in in your plugins/ directory 3/21/2011 3
Instead:Let p2 manage your install Other plug-ins may depend on it If a plug-in is no longer needed, p2 will remove it Run the Garbage Collector manually if you want # ./eclipse  –application org.eclipse.equinox.p2.garbagecollector.application 3/21/2011 4
#2 Unzip your plug-ins over Eclipse Do you provide a zip file for your plugins? Do you instruct your users to unzip over eclipse We don’t like you! (And we will sabotage your wiki page  ) 3/21/2011 5
Instead:Provide a repository Repositories can be zipped and downloaded! Users can simply point to the compressed repository to properly install your plug-in Avoid the use of drop-ins too 3/21/2011 6
#3Replace published content Never publish different content with the same version number! Do not make a change and use the same version number Do not build plug-ins as Foo v1.0.0.HEAD You’ll never know what your user runs. 3/21/2011 7
Remember: Version / ID pairs are immutable If the Version / ID has not changed, the content hasn’t changed! Always publish new metadata and artifacts for each code change Use .qualifiers for all bundles / plug-ins and features If you can’t rebuild everything, provide patches to deliver surgical updates 3/21/2011 8
Reuse:Tips and Tricks Context repositories Qualifier replacement / bundle reuse forceContextQualifier: Replaces the qualifier of all your bundles (use build timestamp) Feature patches: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/project_wizards/new_feature_patch.htm (or google: eclipse p2 feature patch)  3/21/2011 9 build.properties:repoBaseLocation=${buildDirectory}/inputRepositoriestransformedRepoLocation=${buildDirectory}/transformedRepo
#4 Alter a released repository “Release” repositories are serious stuffs! People will refer to them from their repo to avoid duplicating your content People will refer to them from their build Removing content from a “release” repo is a felony! 3/21/2011 10
Instead:Be mindful of your users / repos Preserve content at the same URL If you put out bad bytes, publish a new version. Don’t remove the old one !  Append new version to existing repo. Disk is cheap, users not patient (and they’ll blame p2). For this, use p2 composite repositories. Define clear retention policies For example, the policies for the SDKhttp://wiki.eclipse.org/Eclipse_Project_Update_Sites 3/21/2011 11
#5Don’t categorize things p2 only shows what’s been categorized Repository designers are responsible for designing their categories Classic consumer / producer problem 3/21/2011 12
Remember:Category tricks Use categories ! The category publisher is here to help Use composite repositories where one of the repo carry the categories Use meaningful name, and use the description. The feature name is shorter than a tweet. 3/21/2011 13
#6Ignore your version ranges Specify a strict dependency on 3.6.1 and wonder why your users can’t install on 3.6.2? Most illegible p2 error messages are a result of poorly set version ranges 3/21/2011 14
Instead:Consider your version ranges  Version your packages, bundles and features Use version ranges for dependencies: Up-to by not including [3.6.0, 3.7.0)  Unbounded lower [0.0.0, 3.7.0) Unbounded higher 2.0 Strict Versions [3.6.1, 3.6.1] You need to know what the producer does.  3/21/2011 15
#7Don’t USE API If you find yourself reaching into internals, ask yourself why? If you manually write to the bundles.info file, ask yourself why? If you edit content.xml / artifacts.xml by hand, ask yourself why? Two problems when you don’t use API: We could break you You could break you 3/21/2011 16
Instead:Be mindful of what you use Look for provisional API (if real API doesn’t exist) Ask on the p2-mailing list 3/21/2011 17
#8Use the Metadata generator If you are using the Metadata generator… sorry  	(org.eclipse.equinox.p2.metadata.generator) Deprecated two years ago Removed for Indigo 3/21/2011 18
Instead:Use the Publisher Publisher Applications & Ant Tasks Publish from an Update Site Publish from Features / Bundles Publish from a Product Publish categories # ./eclipse -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher -metadataRepositoryfile:///repo -artifactRepository  file:///repo-source http://foo/site.xml-compress-publishArtifacts 3/21/2011 19
#9Use legacy update sites Legacy update sites don’t include complete metadata Features are downloaded before any dependency resolution can occur Big lag at install time. We will blame you for all p2’s performance problems  3/21/2011 20
Instead:Use a real build tool  PDE Build, Tycho and derivatives (Athena, Buckminster, etc.) all provide facilities to build p2 repositories. If you can’t change your build technology, at lease use the Update Site Publisher. 3/21/2011 21
#10Spell it P2  I don’t call your project Mylin, έMF, or BERT 3/21/2011 22
Remember:The project is: p2 3/21/2011 23
Useful links http://wiki.eclipse.org/Equinox_p2 http://wiki.eclipse.org/Equinox/p2/Getting_Started http://wiki.eclipse.org/Equinox/p2/Publisher http://aniefer.blogspot.com/2008/06/example-headless-build-for-rcp-product.html 3/21/2011 24

Contenu connexe

Tendances

Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafe
Holasz Kati
 

Tendances (20)

DNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostDNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance Boost
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafe
 
Maven
MavenMaven
Maven
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
 
Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013
 
Practice of Android Reverse Engineering
Practice of Android Reverse EngineeringPractice of Android Reverse Engineering
Practice of Android Reverse Engineering
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Maven basics
Maven basicsMaven basics
Maven basics
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Learning Maven by Example
Learning Maven by ExampleLearning Maven by Example
Learning Maven by Example
 
Maven 2 Introduction
Maven 2 IntroductionMaven 2 Introduction
Maven 2 Introduction
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin development
 
Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
 

Similaire à Do's and Do not's about p2

Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
dominion
 
Vipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentationVipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentation
Vipul Divyanshu
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
tutorialsruby
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
tutorialsruby
 
1) workbench basics
1) workbench basics1) workbench basics
1) workbench basics
techbed
 

Similaire à Do's and Do not's about p2 (20)

Digital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: InformationDigital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: Information
 
Version Control Training - First Lego League
Version Control Training - First Lego LeagueVersion Control Training - First Lego League
Version Control Training - First Lego League
 
SVN Basics
SVN BasicsSVN Basics
SVN Basics
 
Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
 
Vipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentationVipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentation
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Using svn
Using svnUsing svn
Using svn
 
05 IPT Installation Webinar - Common issues and how to get help
05 IPT Installation Webinar - Common issues and how to get help05 IPT Installation Webinar - Common issues and how to get help
05 IPT Installation Webinar - Common issues and how to get help
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
 
Mining Component Repositories for Installability Issues
Mining Component Repositories for Installability IssuesMining Component Repositories for Installability Issues
Mining Component Repositories for Installability Issues
 
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie..."How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
 
Reusable Apps
Reusable AppsReusable Apps
Reusable Apps
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
 
Django Best Practices
Django Best PracticesDjango Best Practices
Django Best Practices
 
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryDigital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
 
1) workbench basics
1) workbench basics1) workbench basics
1) workbench basics
 
The dependency inversion principle
The dependency inversion principleThe dependency inversion principle
The dependency inversion principle
 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Do's and Do not's about p2

  • 1. p2, your savior or your Achilles heel? Everything an Eclipse team needs to know about p2! R. Ian Bull Pascal Rapicault
  • 2. Alternate Titles 10 reasons we closed your p2 bugs as INVALID? 10 ways to get booted from the p2 mailing list! 10 excuses why we didn’t buy you a beer  p2, 10 common pitfalls and how to avoid them. 3/21/2011 2
  • 3. #1Move / remove files on disk Leading cause of p2 failures: developers tampering with plugins/ folder If you no longer need a pluginDO NOT REMOVE IT BY HAND Do not move, unzip or change a plug-in in your plugins/ directory 3/21/2011 3
  • 4. Instead:Let p2 manage your install Other plug-ins may depend on it If a plug-in is no longer needed, p2 will remove it Run the Garbage Collector manually if you want # ./eclipse –application org.eclipse.equinox.p2.garbagecollector.application 3/21/2011 4
  • 5. #2 Unzip your plug-ins over Eclipse Do you provide a zip file for your plugins? Do you instruct your users to unzip over eclipse We don’t like you! (And we will sabotage your wiki page  ) 3/21/2011 5
  • 6. Instead:Provide a repository Repositories can be zipped and downloaded! Users can simply point to the compressed repository to properly install your plug-in Avoid the use of drop-ins too 3/21/2011 6
  • 7. #3Replace published content Never publish different content with the same version number! Do not make a change and use the same version number Do not build plug-ins as Foo v1.0.0.HEAD You’ll never know what your user runs. 3/21/2011 7
  • 8. Remember: Version / ID pairs are immutable If the Version / ID has not changed, the content hasn’t changed! Always publish new metadata and artifacts for each code change Use .qualifiers for all bundles / plug-ins and features If you can’t rebuild everything, provide patches to deliver surgical updates 3/21/2011 8
  • 9. Reuse:Tips and Tricks Context repositories Qualifier replacement / bundle reuse forceContextQualifier: Replaces the qualifier of all your bundles (use build timestamp) Feature patches: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/project_wizards/new_feature_patch.htm (or google: eclipse p2 feature patch)  3/21/2011 9 build.properties:repoBaseLocation=${buildDirectory}/inputRepositoriestransformedRepoLocation=${buildDirectory}/transformedRepo
  • 10. #4 Alter a released repository “Release” repositories are serious stuffs! People will refer to them from their repo to avoid duplicating your content People will refer to them from their build Removing content from a “release” repo is a felony! 3/21/2011 10
  • 11. Instead:Be mindful of your users / repos Preserve content at the same URL If you put out bad bytes, publish a new version. Don’t remove the old one ! Append new version to existing repo. Disk is cheap, users not patient (and they’ll blame p2). For this, use p2 composite repositories. Define clear retention policies For example, the policies for the SDKhttp://wiki.eclipse.org/Eclipse_Project_Update_Sites 3/21/2011 11
  • 12. #5Don’t categorize things p2 only shows what’s been categorized Repository designers are responsible for designing their categories Classic consumer / producer problem 3/21/2011 12
  • 13. Remember:Category tricks Use categories ! The category publisher is here to help Use composite repositories where one of the repo carry the categories Use meaningful name, and use the description. The feature name is shorter than a tweet. 3/21/2011 13
  • 14. #6Ignore your version ranges Specify a strict dependency on 3.6.1 and wonder why your users can’t install on 3.6.2? Most illegible p2 error messages are a result of poorly set version ranges 3/21/2011 14
  • 15. Instead:Consider your version ranges Version your packages, bundles and features Use version ranges for dependencies: Up-to by not including [3.6.0, 3.7.0) Unbounded lower [0.0.0, 3.7.0) Unbounded higher 2.0 Strict Versions [3.6.1, 3.6.1] You need to know what the producer does. 3/21/2011 15
  • 16. #7Don’t USE API If you find yourself reaching into internals, ask yourself why? If you manually write to the bundles.info file, ask yourself why? If you edit content.xml / artifacts.xml by hand, ask yourself why? Two problems when you don’t use API: We could break you You could break you 3/21/2011 16
  • 17. Instead:Be mindful of what you use Look for provisional API (if real API doesn’t exist) Ask on the p2-mailing list 3/21/2011 17
  • 18. #8Use the Metadata generator If you are using the Metadata generator… sorry  (org.eclipse.equinox.p2.metadata.generator) Deprecated two years ago Removed for Indigo 3/21/2011 18
  • 19. Instead:Use the Publisher Publisher Applications & Ant Tasks Publish from an Update Site Publish from Features / Bundles Publish from a Product Publish categories # ./eclipse -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher -metadataRepositoryfile:///repo -artifactRepository file:///repo-source http://foo/site.xml-compress-publishArtifacts 3/21/2011 19
  • 20. #9Use legacy update sites Legacy update sites don’t include complete metadata Features are downloaded before any dependency resolution can occur Big lag at install time. We will blame you for all p2’s performance problems  3/21/2011 20
  • 21. Instead:Use a real build tool PDE Build, Tycho and derivatives (Athena, Buckminster, etc.) all provide facilities to build p2 repositories. If you can’t change your build technology, at lease use the Update Site Publisher. 3/21/2011 21
  • 22. #10Spell it P2  I don’t call your project Mylin, έMF, or BERT 3/21/2011 22
  • 23. Remember:The project is: p2 3/21/2011 23
  • 24. Useful links http://wiki.eclipse.org/Equinox_p2 http://wiki.eclipse.org/Equinox/p2/Getting_Started http://wiki.eclipse.org/Equinox/p2/Publisher http://aniefer.blogspot.com/2008/06/example-headless-build-for-rcp-product.html 3/21/2011 24