SlideShare una empresa de Scribd logo
1 de 126
Descargar para leer sin conexión
Using p2 for fun and profit Pascal Rapicault*  Ian Bull** Andrew Niefer* Jeff McAffer** * IBM Rational ** EclipseSource
Provision what  –  where Engineers Users Test Automated  Builds Test source code open source licensed software in-house built applications tools runtimes
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Wide range of requirements
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p2 is about installing!
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Trends in Eclipse
How does p2 help? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
From Install to Service ,[object Object],[object Object],[object Object],[object Object],p2 offers a  continuum   from initial installation to serviceability
p2 in wild ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is RCP? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is a Product? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object]
Creating a feature for our plug-in ,[object Object],[object Object]
A feature for the p2 parts ,[object Object],[object Object]
Creating the product file ,[object Object],[object Object],[object Object],[object Object]
Launching the product (from within eclipse)
The running product In self-hosting mode, the application being launched is not p2-enabled, as such the p2 dialogs can not be brought up. We can only update if we have a  profile. This problem will unlikely be addressed in 3.5.
Publishing the application to a repository
The result of the export ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
One construct to rule them all Decouple decision making from the actual content Everything is an IU Everything is installable It is also referred to as “metadata” IU (id, ver)
Anatomy of an IU Provided Capabilities Required Capabilities Properties Artifact  reference Actions Class:  IInstallableUnit IU (id, ver)
Anatomy of an IU, more ,[object Object],[object Object],[object Object],[object Object]
Anatomy of an IU, requirements / capabilities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Separation of concerns ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Metadata Artifacts
Artifacts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Metadata Repository ,[object Object],[object Object],[object Object],[object Object],[object Object]
Built-in metadata repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Artifact Repository ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Artifact Repository ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Id + version == unique content ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] Andrew’s short talk.
Built-in artifact repositories ,[object Object],[object Object],[object Object]
p2 Architecture Metadata Artifacts Runtimes Profiles OS Eclipse Engine Eclipse Classic Eclipse for C++ Other Director Repositories Touchpoints
The Director Application ,[object Object],[object Object],[object Object],[object Object],http://wiki.eclipse.org/Equinox_p2_director_application
Running the director ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
p2 in Action Transports Http/Https File system Volume Director Profiles Runtimes Provisioning operation requested Metadata fetched and constraints analyzed IU install, uninstall, update operations Artifact availability and mirroring Mirroring Data transfer IUs configured into runtimes Profile updated Repositories p2 Update Site Engine Eclipse/OSGi Native/OS
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A p2-enabled application ,[object Object],[object Object]
What is being run ,[object Object]
Layout of an installation Configuration area p2 data area Artifact repository index. This allows the plug-ins to be served to other instances.
Configuration data detailed ,[object Object],[object Object],[object Object],Configuration area Simple configurator data
p2 data area Download cache, where non-eclipse pieces are mirrored before being installed. Profile registry Storage for the profile Lock file created when the profile is being modified Current and previous state of the system MailApp.profile
Profile and profile registry ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Management modes and profile registry ,[object Object],[object Object],[object Object],[object Object],[object Object]
Changing a profile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating an update ,[object Object]
Version Numbers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installing the update
Installing the update ,[object Object],[object Object]
After the update and restart
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a new plug-in to install ,[object Object]
Create a feature to deliver our plug-ins ,[object Object]
Exporting the feature ,[object Object],[object Object]
The publisher ,[object Object],[object Object],[object Object],[object Object],[object Object]
Features and Bundles Publisher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],This will generate metadata for the plug-ins and features found in source. Note that PDE has an option to do it automatically.
Installing the newly created extension
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Example: Building with p2
Slicing repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<p2.mirror   source= &quot;${Eclipse.Repo-3.5M6}&quot;   destination= &quot;${p2Repo}&quot; > <slicingOptions   followStrict= &quot;true&quot;   /> <iu   id= &quot;org.eclipse.equinox.p2.user.ui.feature.group&quot;   /> <iu   id= &quot;org.eclipse.ecf&quot; /> <iu   id= &quot;org.eclipse.ecf.filetransfer&quot; /> .... <iu   id= &quot;org.apache.ant&quot; /> <iu   id= &quot;org.eclipse.core.runtime.compatibility.registry&quot; /> </p2.mirror> ,[object Object],[org.eclipse.pde.build.examples.rcp.cloud.releng/buildProduct.xml createP2Repo]
Transforming repositories ,[object Object],[object Object],[object Object],[object Object],<p2.repo2runnable   destination= &quot;${transformedRepoLocation}&quot; > <source   dir= &quot;${repoBaseLocation}/&quot;   includes= &quot;*&quot; /> </p2.repo2runnable> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[org.eclipse.pde.build/scripts/genericTargets.xml transformRepos]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Publishing metadata ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[org.eclipse.pde.build.examples.rcp.cloud.releng/buildDirectory/assemble.org.eclipse.pde.build.container.feature.win32.win32.x86.xml]
Publishing Products ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Running the Director ,[object Object],[object Object],<java   jar= &quot;${equinoxLauncherJar}&quot;   fork= &quot;true&quot;   failonerror= &quot;true&quot; > <arg   line= &quot;-application org.eclipse.equinox.p2.director.app.application&quot;   /> <arg   line= &quot;-nosplash&quot;   /> <arg   line= &quot;--launcher.suppressErrors&quot;   /> <arg   line= &quot;-consoleLog&quot;   /> <arg   line= &quot;-flavor ${p2.flavor}&quot;   /> <arg   line= &quot;-installIU ${p2.director.iu}&quot;   /> <arg   line= &quot;-version ${p2.director.version}&quot;   /> <arg   line= &quot;-p2.os ${os}&quot;   /> <arg   line= &quot;-p2.ws ${ws}&quot;   /> <arg   line= &quot;-p2.arch ${arch}&quot;   /> <arg   line= &quot;-roaming&quot;   /> <arg   line= &quot;-profile ${p2.director.profile}&quot;   /> <arg   line= &quot;${p2.director.extraArgs}&quot;   /> <arg   line= &quot;-metadataRepository&quot; /> <arg   value= &quot;${p2.repo}&quot;   /> <arg   line= &quot;-artifactRepository&quot; /> <arg   value= &quot;${p2.repo}&quot;   /> <arg   line= &quot;-destination&quot; /> <arg   value= &quot;${p2.director.installPath}&quot;   /> <arg   line= &quot;-bundlepool&quot; /> <arg   value= &quot;${p2.director.bundlepool}&quot;   /> <jvmarg   value= &quot;-Declipse.p2.data.area=${p2.director.dataArea}&quot;   /> <jvmarg   line= &quot;${p2.director.extraVMArgs}&quot;   /> </java> [org.eclipse.pde.build/scripts/genericTargets.xml runDirector]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Categorizing repository content ,[object Object]
Creating the category
Categorizing our feature
 
UpdateSite Publisher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],When using the category.xml, use the org.eclipse.equinox.p2.publisher.CategoryPublisher
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installable Unit Fragments ,[object Object],[object Object],[object Object],[object Object],[object Object],Class: IInstallableUnitFragment
Installable Unit Patches ,[object Object],[object Object],[object Object],[object Object],[object Object],Note: In 3.5 the feature patch editor only exposes some of those capabilities. See also http://aniefer.blogspot.com/2009/06/patching-features-with-p2.html
Installable Units ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Understanding the metadata generated ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<provided namespace='osgi.bundle' name='org.apache.commons.codec' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.binary' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.digest' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.language' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.net' version='1.3.0'/> <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
Understanding the metadata generated ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<provided namespace='osgi.fragment' name='org.eclipse.swt' version='3.5.0.v3536b'/> <provided namespace='osgi.bundle' name='org.eclipse.swt.win32.win32.x86' version='3.5.0.v3536b'/> It is important to remember that this is only the metadata generated by the applications provided as part of the publisher, but the metadata is generic and is yours to extend.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Plug-ins map ECF Eclipse  touchpoint Native  touchpoint Tooling OSGi Update site  repository engine Metadata Director Repository UI … …
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Core plug-ins ( 1 /2)
Core plug-ins (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] - Ant task - http://wiki.eclipse.org/Equinox/p2_Ant_Tasks
Transport related plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Eclipse management ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] – Actions defined by eclipse touchpoint - http://wiki.eclipse.org/Equinox/p2/Engine/Touchpoint_Instructions
Native support ,[object Object],[object Object],[1] – Actions defined by native touchpoint - http://wiki.eclipse.org/Equinox/p2/Engine/Touchpoint_Instructions
UI plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Repositories implementation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Misc management bundles ,[object Object],[object Object],[object Object],[object Object],[object Object],[1] – Director application doc - http://wiki.eclipse.org/Equinox_p2_director_application
Tooling plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] - Ant task - http://wiki.eclipse.org/Equinox/p2_Ant_Tasks
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tweaking the p2 UI for your audience ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Add a p2 Preference Page ,[object Object],[object Object],[object Object],[object Object]
Adding Automated Updates and other p2 Preferences ,[object Object]
Remove automatic updates ,[object Object],[object Object],[object Object],[object Object]
Customizing the UI ,[object Object],[object Object],[object Object],[object Object],[object Object]
Example – Control the Update ,[object Object],[object Object],[object Object],[object Object]
Example – Control the Update
The controlled mode ,[object Object],[object Object]
Granularity of what is visible ,[object Object],[object Object],[object Object],[object Object],[object Object]
Granularity of what is visible
Updating on Startup ,[object Object]
UI code snippets ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Queryable / Query ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Profile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Planning a profile change ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine flowchart
Touchpoint / actions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine and actions put together
Artifact processor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Canonical JBDiff Artifact  Repository Pack200 Pack200 Processor Artifact processor, illustrated
References ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thank you
F.A.Q.
Bundle Pooling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installing just a plug-in ,[object Object],[object Object],[object Object]
Boot sequence ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Missing requirements ,[object Object],[object Object],[object Object],[object Object]

Más contenido relacionado

Similar a Understanding and extending p2 for fun and profit

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2Pascal Rapicault
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsDragos_Mihailescu
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Installsusanfmccourt
 
Automating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal useAutomating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal usePascal Rapicault
 
p2, modular provisioning for OSGi
p2, modular provisioning for OSGip2, modular provisioning for OSGi
p2, modular provisioning for OSGiPascal Rapicault
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCPwhbath
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insTonny Madsen
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019 Allan De Castro
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Sentinel Solutions Ltd
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Android application structure
Android application structureAndroid application structure
Android application structureAlexey Ustenko
 

Similar a Understanding and extending p2 for fun and profit (20)

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Install
 
Automating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal useAutomating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal use
 
p2, modular provisioning for OSGi
p2, modular provisioning for OSGip2, modular provisioning for OSGi
p2, modular provisioning for OSGi
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Alfresco Architecture
Alfresco ArchitectureAlfresco Architecture
Alfresco Architecture
 
Android application structure
Android application structureAndroid application structure
Android application structure
 
Eclipse IDE
Eclipse IDEEclipse IDE
Eclipse IDE
 
Eclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three RuntimesEclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three Runtimes
 

Último

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 

Último (20)

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 

Understanding and extending p2 for fun and profit

  • 1. Using p2 for fun and profit Pascal Rapicault* Ian Bull** Andrew Niefer* Jeff McAffer** * IBM Rational ** EclipseSource
  • 2. Provision what – where Engineers Users Test Automated Builds Test source code open source licensed software in-house built applications tools runtimes
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Launching the product (from within eclipse)
  • 20. The running product In self-hosting mode, the application being launched is not p2-enabled, as such the p2 dialogs can not be brought up. We can only update if we have a profile. This problem will unlikely be addressed in 3.5.
  • 21. Publishing the application to a repository
  • 22.
  • 23.
  • 24. One construct to rule them all Decouple decision making from the actual content Everything is an IU Everything is installable It is also referred to as “metadata” IU (id, ver)
  • 25. Anatomy of an IU Provided Capabilities Required Capabilities Properties Artifact reference Actions Class: IInstallableUnit IU (id, ver)
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. p2 Architecture Metadata Artifacts Runtimes Profiles OS Eclipse Engine Eclipse Classic Eclipse for C++ Other Director Repositories Touchpoints
  • 38.
  • 39.
  • 40. p2 in Action Transports Http/Https File system Volume Director Profiles Runtimes Provisioning operation requested Metadata fetched and constraints analyzed IU install, uninstall, update operations Artifact availability and mirroring Mirroring Data transfer IUs configured into runtimes Profile updated Repositories p2 Update Site Engine Eclipse/OSGi Native/OS
  • 41.
  • 42.
  • 43.
  • 44. Layout of an installation Configuration area p2 data area Artifact repository index. This allows the plug-ins to be served to other instances.
  • 45.
  • 46. p2 data area Download cache, where non-eclipse pieces are mirrored before being installed. Profile registry Storage for the profile Lock file created when the profile is being modified Current and previous state of the system MailApp.profile
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 54.
  • 55. After the update and restart
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62. Installing the newly created extension
  • 63.  
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 76.  
  • 77.
  • 78.  
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87. Plug-ins map ECF Eclipse touchpoint Native touchpoint Tooling OSGi Update site repository engine Metadata Director Repository UI … …
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104. Example – Control the Update
  • 105.
  • 106.
  • 107. Granularity of what is visible
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 116.
  • 117. Engine and actions put together
  • 118.
  • 119. Canonical JBDiff Artifact Repository Pack200 Pack200 Processor Artifact processor, illustrated
  • 120.
  • 122. F.A.Q.
  • 123.
  • 124.
  • 125.
  • 126.

Notas del editor

  1. HENRIK What does it mean to “provision Eclipse in the Entrprise” – it could mean anything from provisioning source code and pre-built components to developers to automatic and policy driven installation of in-house built applications based to servers, desktop machines and small handheld device.
  2. HENRIK Eclipse and Equinox is used for many purposes – and users has expressed a wide variety of requirements – requirements that often are direct conflict.
  3. JEFF
  4. JEFF
  5. JEFF
  6. `