Home » Archived » Buckminster » Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson
Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #517256] |
Fri, 26 February 2010 12:13  |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
----------------1152948806826114542
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Following up on
http://www.ralfebert.de/blog/eclipsercp/rcp_builds/
http://www.eclipse.org/forums/index.php?t=msg&th=160977& amp;start=0&
here's how you can archive and re-use a target platform in
Buckminster+Hudson builds. Thanks to Johannes Utzig for providing the
missing piece of the puzzle!
The idea is to use two jobs, one to fetch and archive the target
platform and a 2nd one that uses this pre-fetched target platform. This
has the advantage that you control when the target platform is fetched,
the online software sites are only used when you run the target job.
This is a bit faster and decouples your actual build jobs from the
software sites:
- Add a .target file to your project, referring only software sites
(see Preferences > Plug-in Development > Target Platform, esp. "Move"
button to save a existing target definition to a file)
- Create a new freestyle job for fetching the target platform.
Configure it to import your project from the VCS.
- Add a "Run Buckminster" step to configure the target platform:
importtargetdefinition -A '${WORKSPACE}/com.example.mail.build/rcp.target'
- Check "Archive and publish an Eclipse Target Platform". Specify
".metadata/.plugins/org.eclipse.pde.core/.bundle_pool" as path.
- Run the job.
- Create a 2nd freestyle build job and configure your project build.
Choose the target platform in your "Run Buckminster" steps.
Actually it would be cool if you could tell the importtargetdefinition
command to save the provisioned target platform for late re-use to some
dedicated folder, I created a bug for such a feature:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=304062
Greetings,
Ralf
--
http://www.ralfebert.de/blog/
----------------1152948806826114542
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="949.54">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px TheSansMono}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px TheSansMono; min-height: 17.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px TheSansMono; color: #808080}
span.s1 {font: 12.0px Courier}
</style>
</head>
<body>
<p class="p1">Following up on</p>
<p class="p2"><br></p>
<p class="p1">http://www.ralfebert.de/blog/eclipsercp/rcp_builds/</p>
<p class="p1">http://www.eclipse.org/forums/index.php?t=msg&th=160977&start=0&</p>
<p class="p2"><br></p>
<p class="p1">here's how you can archive and re-use a target platform in Buckminster+Hudson builds. Thanks to Johannes Utzig for providing the missing piece of the puzzle!</p>
<p class="p2"><br></p>
<p class="p1">The idea is to use two jobs, one to fetch and archive the target platform and a 2nd one that uses this pre-fetched target platform. This has the advantage that you control when the target platform is fetched, the online software sites are only used when you run the target job. This is a bit faster and decouples your actual build jobs from the software sites:</p>
<p class="p2"><br></p>
<p class="p1">- Add a .target file to your project, referring only software sites (see Preferences > Plug-in Development > Target Platform, esp. "Move" button to save a existing target definition to a file)</p>
<p class="p1">- Create a new freestyle job for fetching the target platform. Configure it to import your project from the VCS.</p>
<p class="p1">- Add a "Run Buckminster" step to configure the target platform:</p>
<p class="p2"><br></p>
<p class="p3">importtargetdefinition -A '${WORKSPACE}/com.example.mail.build/rcp.target'</p>
<p class="p2"><br></p>
<p class="p1">- Check "Archive and publish an Eclipse Target Platform". Specify ".metadata/.plugins/org.eclipse.pde.core/.bundle_pool" as path.</p>
<p class="p1">- Run the job.</p>
<p class="p1">- Create a 2nd freestyle build job and configure your project build. Choose the target platform in your "Run Buckminster" steps.</p>
<p class="p2"><br></p>
<p class="p1">Actually it would be cool if you could tell the <span class="s1">importtargetdefinition</span> command to save the provisioned target platform for late re-use to some dedicated folder, I created a bug for such a feature: https://bugs.eclipse.org/bugs/show_bug.cgi?id=304062</p>
<p class="p2"><br></p>
<p class="p1">Greetings,</p>
<p class="p2"><br></p>
<p class="p1">Ralf</p>
<p class="p2"><br></p>
<p class="p4">--<span class="Apple-converted-space">
|
|
| | | | | |
Re: Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #547967 is a reply to message #547956] |
Tue, 20 July 2010 05:44   |
Eclipse User |
|
|
|
I tried without that slash and the result is the same.
The import of the target seems to go well,
importtargetdefinition '-A' '/home/eshadeln/.hudson/jobs/bucky_fetch/workspace/org.erlide.site/sdk.target'
Doing full workspace refresh
Waiting for jobs to end
listtargetdefinitions
Using workspace at file:/home/eshadeln/.hudson/jobs/bucky_fetch/workspace/ ...
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Running Platform : linux,gtk,x86/en_US
Target Platform : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
* Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Eclipse 3.5.2 + erlide 0.8.1 : linux,gtk,x86/en_US
Doing full workspace refresh
Waiting for jobs to end
It's just that the respective features and plugins are put in another place... Could it be that it's 3.5 and not 3.6?
Thanks,
Vlad
|
|
| |
Re: Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #547981 is a reply to message #547977] |
Tue, 20 July 2010 06:35   |
Eclipse User |
|
|
|
Johannes Utzig wrote on Tue, 20 July 2010 06:06 | Am 20.07.2010 11:44, schrieb Vlad Dumitrescu:
> It's just that the respective features and plugins are put in another
> place... Could it be that it's 3.5 and not 3.6?
So the plugins and features from the target definition do appear
somewhere in your workspace but at another location?
|
Sorry, what I meant was that .bundle_pool doesn't exist, but listtargetdefinitions finds something, so I guess that the features and plugins have to be somewhere, but I don't know where... I ran "find" in every place where I could think of, without success.
Hmmm, one thought: maybe if the versions are the same as the ones in the running platform, then no .bundle_pool is created... will test that.
Thanks for the help,
Vlad
|
|
|
Re: Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #547984 is a reply to message #547981] |
Tue, 20 July 2010 06:40   |
Eclipse User |
|
|
|
Am 20.07.2010 12:35, schrieb Vlad Dumitrescu:
>
> Hmmm, one thought: maybe if the versions are the same as the ones in the
> running platform, then no .bundle_pool is created... will test that.
That's possible, I don't know, but aren't you running a simple headless
buckminster? That shouldn't contain much of anything so where is the
rest of the Target Platform?
The update sites you're using, are they using a HTTP scheme, or a file:/
scheme for the update sites in your target file?
If it's a file scheme then it might be smart enough not to download
anything.
Best regards,
Johannes
|
|
| | |
Re: Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #550086 is a reply to message #548450] |
Thu, 29 July 2010 02:12   |
Eclipse User |
|
|
|
I tried this approach, but it does not work in my case. I am building Eclipse 3.4 product using buckminster 3.5 and 3.4 target platform. When I use Ralf's approach I get errors similar to this one
INFO: setpref 'targetPlatformPath=/home/akravets2/.hudson/jobs/eclipse 3.4 targetPlatform/builds/2010-07-29_01-56-29/archive//targetPlatform'
targetPlatformPath set to the value '/home/akravets2/.hudson/jobs/eclipse 3.4 targetPlatform/builds/2010-07-29_01-56-29/archive//targetPlatform'
INFO: import '/home/akravets2/.hudson/jobs/buckminster.tp/workspace//com.iwaysoftware.integration.tools.product/pluto.cquery'
WARNING [0000] : Component request org.eclipse.core.expressions:osgi.bundle/[3.4.1.r342_v20081203-0800,3.4.1.r342_v20081203-0800] is inconflict with request org.eclipse.core.expressions:osgi.bundle/[3.4.100,4.0.0)
WARNING [0000] : Component request org.eclipse.ui:osgi.bundle/[3.4.2.M20090204-0800,3.4.2.M20090204-0800] is inconflict with request org.eclipse.ui:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.core.runtime:osgi.bundle/[3.4.0.v20080512,3.4.0.v20080512] is inconflict with request org.eclipse.core.runtime:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.ui.workbench:osgi.bundle/[3.4.2.M20090127-1700,3.4.2.M20090127-1700] is inconflict with request org.eclipse.ui.workbench:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.swt:osgi.bundle/[3.4.2.v3452b,3.4.2.v3452b] is inconflict with request org.eclipse.swt:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.jface:osgi.bundle/[3.4.2.M20090107-0800,3.4.2.M20090107-0800] is inconflict with request org.eclipse.jface:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.osgi:osgi.bundle/[3.4.3.R34x_v20081215-1030,3.4.3.R34x_v20081215-1030] is inconflict with request org.eclipse.osgi:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.equinox.common:osgi.bundle/[3.4.0.v20080421-2006,3.4.0.v20080421-2006] is inconflict with request org.eclipse.equinox.common:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.jface.databinding:osgi.bundle/[1.2.1.M20080827-0800a,1.2.1.M20080827-0800a] is inconflict with request org.eclipse.jface.databinding:osgi.bundle/[1.3.0,2.0.0)
WARNING [0000] : Component request org.eclipse.core.commands:osgi.bundle/[3.4.0.I20080509-2000,3.4.0.I20080509-2000] is inconflict with request org.eclipse.core.commands:osgi.bundle/[3.5.0,4.0.0)
WARNING [0000] : Component request org.eclipse.core.databinding:osgi.bundle/[1.1.1.M20080827-0800b,1.1.1.M20080827-0800b] is inconflict with request org.eclipse.core.databinding:osgi.bundle/[1.2.0,2.0.0)
INFO: Import complete.
INFO: perform 'com.iwaysoftware.integration.tools.product#buckminster.clean'
No component named org.eclipse.core.commands:osgi.bundle/[3.4.0.I20080509-2000,3.4.0.I20080509-2000] is known to Buckminster
Archiving artifacts
Finished: FAILURE
But when I switch to importtargetdefiniton in commands everything works fine. What could be the problem?
thanks,
Alex
|
|
|
Re: Mini-Tutorial: Fetching, archiving and re-using a target platform with Buckminster/Hudson [message #550089 is a reply to message #550086] |
Thu, 29 July 2010 02:32   |
Eclipse User |
|
|
|
Hi Alex,
I fixed a bug in this area very recently. What version of Buckminster are you running?
You seem to have a lot of conflicting dependencies in your workspace. From Buckminster's standpoint, that should be OK
and all bundles should be provisioned into the target platform regardless. A build that creates features with those
conflicts will however not be possible to install when the conflicting bundles are marked as singletons. A majority of
the Eclipse plugins are singletons since that's a requirement when using Eclipse extension points. I know for sure that
the first bundle that is reported as a WARNING, the org.eclipse.core.expressions, is a singleton.
- thomas
On 07/29/2010 08:12 AM, Alex wrote:
> I tried this approach, but it does not work in my case. I am building
> Eclipse 3.4 product using buckminster 3.5 and 3.4 target platform. When
> I use Ralf's approach I get errors similar to this one
>
> INFO: setpref 'targetPlatformPath=/home/akravets2/.hudson/jobs/eclipse
> 3.4 targetPlatform/builds/2010-07-29_01-56-29/archive//targetPla tform'
> targetPlatformPath set to the value
> '/home/akravets2/.hudson/jobs/eclipse 3.4
> targetPlatform/builds/2010-07-29_01-56-29/archive//targetPla tform'
> INFO: import
> '/home/akravets2/.hudson/jobs/buckminster.tp/workspace//com. iwaysoftware.integration.tools.product/pluto.cquery'
>
> WARNING [0000] : Component request
> org.eclipse.core.expressions:osgi.bundle/[3.4.1.r342_v200812 03-0800,3.4.1.r342_v20081203-0800]
> is inconflict with request
> org.eclipse.core.expressions:osgi.bundle/[3.4.100,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.ui:osgi.bundle/[3.4.2.M20090204-0800,3.4.2.M2009 0204-0800]
> is inconflict with request org.eclipse.ui:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.core.runtime:osgi.bundle/[3.4.0.v20080512,3.4.0. v20080512]
> is inconflict with request
> org.eclipse.core.runtime:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.ui.workbench:osgi.bundle/[3.4.2.M20090127-1700,3 .4.2.M20090127-1700]
> is inconflict with request
> org.eclipse.ui.workbench:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.swt:osgi.bundle/[3.4.2.v3452b,3.4.2.v3452b] is inconflict
> with request org.eclipse.swt:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.jface:osgi.bundle/[3.4.2.M20090107-0800,3.4.2.M2 0090107-0800] is
> inconflict with request org.eclipse.jface:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.osgi:osgi.bundle/[3.4.3.R34x_v20081215-1030,3.4. 3.R34x_v20081215-1030]
> is inconflict with request org.eclipse.osgi:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.equinox.common:osgi.bundle/[3.4.0.v20080421-2006 ,3.4.0.v20080421-2006]
> is inconflict with request
> org.eclipse.equinox.common:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.jface.databinding:osgi.bundle/[1.2.1.M20080827-0 800a,1.2.1.M20080827-0800a]
> is inconflict with request
> org.eclipse.jface.databinding:osgi.bundle/[1.3.0,2.0.0)
> WARNING [0000] : Component request
> org.eclipse.core.commands:osgi.bundle/[3.4.0.I20080509-2000, 3.4.0.I20080509-2000]
> is inconflict with request
> org.eclipse.core.commands:osgi.bundle/[3.5.0,4.0.0)
> WARNING [0000] : Component request
> org.eclipse.core.databinding:osgi.bundle/[1.1.1.M20080827-08 00b,1.1.1.M20080827-0800b]
> is inconflict with request
> org.eclipse.core.databinding:osgi.bundle/[1.2.0,2.0.0)
> INFO: Import complete.
> INFO: perform
> 'com.iwaysoftware.integration.tools.product#buckminster.clea n'
> No component named
> org.eclipse.core.commands:osgi.bundle/[3.4.0.I20080509-2000, 3.4.0.I20080509-2000]
> is known to Buckminster
> Archiving artifacts
> Finished: FAILURE
>
> But when I switch to importtargetdefiniton in commands everything works
> fine. What could be the problem?
>
> thanks,
> Alex
|
|
| | | | |
Goto Forum:
Current Time: Wed May 07 07:26:43 EDT 2025
Powered by FUDForum. Page generated in 0.07528 seconds
|