Thanks again for your advice. With your help, I have successfully updated my
build process to provision all IUs at once, which is indeed significantly
faster: the full build took 26 minutes instead of over an hour.

Provisioning for the main target platform took a little below 7 minutes:
[p2.dir] Operation completed in 413085 ms.
And the test target platform took about the same time to provision:
[p2.dir] Operation completed in 402634 ms.

It strikes me as odd though that the second provisioning takes the same time
as the first, if it re-uses the first target platform as a source.

I have the following error message in my log when building the test target
platform:
[exec] [p2.dir] !MESSAGE No repository found at
file:/opt/users/hudsonbuild/.hudson/jobs/cbi-modisco-nightly/workspace/build/N200912100748/eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/.

Does it mean the first target platform couldn't be re-used as a source for
provisioning the test target platform? If so, would you have an idea why?


On Thu, Dec 10, 2009 at 6:02 AM, Nick Boldt <nickbo...@gmail.com> wrote:

> Sadly, at this point it's trial an error... wait for the build fail with a
> message like
>
> Bundle org.foo_0.0.0 failed to resolve.: Missing required plug-in
> org.bar_0.0.0.
>
> And then go looking for the plugin or feature to add to the list of IUs you
> need. Chances are good you can just add the plugin and the Galileo repo and
> you're done... but in some cases, you have to dig deeper - especially if you
> want to be able to run the build offline (eg., using repo zips).
>
> Or use PDE (or the PDE viz plugin) to show the plugins you depend on. Then
> you just need to map those plugins to their containing projects (eg. EMF,
> GEF, WebTools WST / JST, XSD)
>
> What I do is grab an update site zip, unpack it, then iterate through the
> feature jars, unpacking them. From there you can iterate through the
> unjarred features' feature.xml files looking for plugin names that match the
> one you need. For example:
>
> unzip -d wst-buildrepo-R-3.1.1-20090917225226.zip{_,}
> cd wst-buildrepo-R-3.1.1-20090917225226.zip_/features/
> for f in $(find . -maxdepth 1 -type f -name "*.jar"); do unzip -d ${f}{_,};
> done
> find.sh . feature.xml wst.sse
> find.sh . feature.xml org.eclipse.wst.ws_ui.feature
>
> Note that find.sh is a wrapper for find + grep which I wrote (WTFPL
> license), and is available here [1].)
>
> [1]http://divbyzero.com/linux/find.in.files.sh.txt
>
> I'm looking for a better, more discovery-based approach (eg., using
> Buckminster or Tycho) which would be able to crawl though the sources and
> discover what features/plugins are needed, then use that generated list as
> input to the IUsToInstall property (if not otherwise set). If you have any
> ideas, I'm open to 'em.
>
> N
>
> Nicolas Bros wrote:
>
>> Wow! That looks useful.
>> But how do you get the names of the IUs you must put in IUsToInstall?
>>
>> On Wed, Dec 9, 2009 at 8:31 PM, Nick Boldt <nickbo...@gmail.com <mailto:
>> nickbo...@gmail.com>> wrote:
>>
>>    If you list the IUsToInstall separated by "+" instead of "," they're
>>    all installed in a single step.
>>
>>    Requires Eclipse 3.5+ as the base, though, not 3.4.
>>
>>    Example from a recent build:
>>
>>        [exec]    [p2.dir] Command-line arguments:  -application
>>    org.eclipse.equinox.p2.director -consoleLog -flavor tooling -roaming
>>    -profile SDKProfile -installIU org.eclipse.sdk.feature.group
>>    -installIU org.eclipse.sdk.ide -installIU org.eclipse.core.net
>>    <http://org.eclipse.core.net> -installIU org.eclipse.equinox.common
>>
>>    -installIU org.eclipse.core.runtime -installIU
>>    org.eclipse.debug.core -installIU org.eclipse.rcp.feature.group
>>    -installIU org.eclipse.jst.server.generic.core -installIU
>>    org.eclipse.wst.ws_core.feature.feature.group -installIU
>>    org.eclipse.wst.web_ui.feature.feature.group -installIU
>>    org.eclipse.wst.ws_wsdl15.feature.feature.group -installIU
>>    org.eclipse.wst.xml_ui.feature.feature.group -installIU
>>    org.eclipse.wst.common_ui.feature.feature.group -installIU
>>    org.eclipse.wst.common_core.feature.feature.group -installIU
>>    org.eclipse.xsd.feature.group -installIU
>>    org.eclipse.gef.feature.group -installIU
>>    org.eclipse.gmf.runtime.diagram.ui -installIU
>>    org.eclipse.emf.compare.match -installIU
>>    org.eclipse.emf.compare.diff -installIU org.eclipse.emf.compare.ui
>>    -installIU org.mozilla.xpcom -installIU org.jboss.tools.vpe.resref
>>    -installIU org.jboss.tools.jst.web.ui -installIU
>>    org.jboss.ide.eclipse.as.core -installIU
>>    org.jboss.ide.eclipse.archives.webtools -installIU
>>    org.jboss.tools.jmx.feature.feature.group -destination
>>
>>  
>> /home/hudson/hudson_workspace/workspace/jbosstools-cbi-bpel/build/N-SNAPSHOT/testing/target/eclipse
>>    -bundlepool
>>
>>  
>> /home/hudson/hudson_workspace/workspace/jbosstools-cbi-bpel/build/N-SNAPSHOT/testing/target/eclipse
>>    -metadataRepository
>>
>>  
>> file:/home/hudson/hudson_workspace/workspace/jbosstools-cbi-bpel/build/N-SNAPSHOT/eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile,
>> http://download.jboss.org/jbosstools/updates/nightly/trunk/,http://download.eclipse.org/releases/galileo/,http://download.jboss.org/jbosstools/updates/nightly/trunk/,http://download.eclipse.org/releases/galileo/
>> ,
>>    -artifactRepository
>>
>>  
>> file:/home/hudson/hudson_workspace/workspace/jbosstools-cbi-bpel/build/N-SNAPSHOT/eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile,
>> http://download.jboss.org/jbosstools/updates/nightly/trunk/,http://download.eclipse.org/releases/galileo/,http://download.jboss.org/jbosstools/updates/nightly/trunk/,http://download.eclipse.org/releases/galileo/
>> ,
>>    -profileProperties org.eclipse.update.install.features=true -os
>>    linux -ws gtk -arch x86
>>
>>    As run from this releng project [1]:
>>
>>    [1]https://anonsvn.jboss.org/repos/jbosstools/trunk/bpel/releng/
>>
>>    Which simply says:
>>
>>    repositoryURLs=\
>>    http://download.jboss.org/jbosstools/updates/nightly/trunk/,\
>>    http://download.eclipse.org/releases/galileo/
>>
>>    IUsToInstall=org.eclipse.sdk.feature.group+org.eclipse.sdk.ide+
>> org.eclipse.core.net
>>    <http://org.eclipse.core.net
>> >+org.eclipse.equinox.common+org.eclipse.core.runtime+org.eclipse.debug.core+org.eclipse.rcp.feature.group+\
>>
>>    org.eclipse.jst.server.generic.core+\
>>
>>  
>> org.eclipse.wst.ws_core.feature.feature.group+org.eclipse.wst.web_ui.feature.feature.group+org.eclipse.wst.ws_wsdl15.feature.feature.group+\
>>
>>  
>> org.eclipse.wst.xml_ui.feature.feature.group+org.eclipse.wst.common_ui.feature.feature.group+org.eclipse.wst.common_core.feature.feature.group+\
>>    org.eclipse.xsd.feature.group+org.eclipse.gef.feature.group+\
>>    org.eclipse.gmf.runtime.diagram.ui+\
>>
>>  
>> org.eclipse.emf.compare.match+org.eclipse.emf.compare.diff+org.eclipse.emf.compare.ui+\
>>
>>  
>> org.mozilla.xpcom+org.jboss.tools.vpe.resref+org.jboss.tools.jst.web.ui+org.jboss.ide.eclipse.as.core+org.jboss.ide.eclipse.archives.webtools+org.jboss.tools.jmx.feature.feature.group
>>
>>    In this case, even pulling from the Galileo and JBT nightly update
>>    sites, the provisioning step only took 4 minutes (248411 ms).
>>
>>    If you source from locally cached p2 repo zips such as these [2],
>>    it's even faster.
>>
>>    [2]http://download.eclipse.org/athena/repos/
>>
>>    Nick
>>
>>
>>    David Carver wrote:
>>
>>        There are ways to do this.  And you might be able to do it in
>>        your own customTargets.xml file.  Basically you would do a two
>>        stage build, either all in one Job or in two separate jobs.  The
>>        first one would be to build and create the target platform and
>>        provision it.   The second would be to create the necessary
>>        tests, and run them based on the input from the first provisioning.
>>
>>        I've done this in the past by using a combination of the ZIP
>>        files, combining them into a working target platform, and then
>>        deploying the tests and running them.   I do agree that the P2
>>        provisioning process seems to take way longer to get setup than
>>        just a straight ZIP provisioning.
>>
>>        The main issue I see right now is that with the P2 director
>>        steps, it is done in a loop, instead of being able to provide a
>>        list of all the items to be provisioned in one provisioning
>>        step.   Each plugin or feature is provisioned separately.   If
>>        we could find a way to provide a list of items to be provisioned
>>        and have it done in one provisioning step (i.e. not executing P2
>>        director multiple times), I think that alone would go a long way
>>        to speeding up the build.
>>
>>        Also, you may want to look at an alternative cleanUp step if you
>>        have a large directory that is created during the build with
>>        many sub directories.  I've found that trying to avoid wildcard
>>        searches and deletions with FileSets greatly speeds up the
>>        deletion and cleanup process.
>>
>>        Nicolas Bros wrote:
>>
>>            In fact, I was not only thinking of re-using the build
>>            target platform for testing, but also re-using a previously
>>            snapshotted build target platform instead of provisioning a
>>            new one for each build. My idea was to be able to skip all
>>            the work done in the "postSetup" target in
>>            customTargets.xml, if nothing changed in the build
>>            configuration since the last build. Would that be doable ?
>>
>>            On Wed, Dec 9, 2009 at 3:24 AM, Nick Boldt
>>            <nickbo...@gmail.com <mailto:nickbo...@gmail.com>
>>            <mailto:nickbo...@gmail.com <mailto:nickbo...@gmail.com>>>
>>
>>            wrote:
>>
>>               The previously provisioned target used to build is reused
>>            when
>>               creating the test target - it's added to the list of
>>            repos from
>>               which IUs are installed.
>>
>>               This means (in theory) that instead of refetching from
>>            Galileo,
>>               IUs will simply be copied from the local disk. So the
>>            only thing
>>               that slows the process down is file i/o.
>>
>>               Yes, we could even go a step further to use the existing
>>            eclipse
>>               instead of creating a fresh, clean one, but that means a
>>            "dirty"
>>               test, and I don't like that approach. Having this
>>            behaviour be
>>               optional is certainly doable, but I'm sure people like
>>            Dave C will
>>               object violently to the idea of setting up tests w/ chunks
>> of
>>               leftover compilation artifacts in them, instead of a clean
>>               "provision the target, install the built runtime, install
>> the
>>               tests, and run them" process.
>>
>>               It may be slower, but it's a more valid test IMO.
>>
>>               If you want an optional override to reuse the build
>>            environment
>>               instead of creating a new one, please open a bug and
>>            propose the
>>               override property name, eg.,
>>            "useDirtyBuildEnvironmentForTesting" :)
>>
>>               Nicolas Bros wrote:
>>
>>                   Hi,
>>
>>                   I'd like my build to be faster. I have noticed that
>>            Athena
>>                   installs a whole new Eclipse with all the dependencies
>>                   specified in the build.properties twice for each
>>            build (once
>>                   for the build and a second time for tests). That
>>            obviously
>>                   takes quite some time.
>>                   Would it be possible to save the Eclipse install once
>> the
>>                   dependencies are deemed stable, and re-use it for future
>>                   builds? There could be a property in the
>>            build.properties file
>>                   that indicates the path of an existing Eclipse
>>            install to use
>>                   for the build for example.
>>                   If not, what would prevent this?
>>                   --         Nicolas Bros
>>                   R&D
>>                   tel: 06 75 09 19 88
>>                   nb...@mia-software.com
>>            <mailto:nb...@mia-software.com>
>>            <mailto:nb...@mia-software.com <mailto:nb...@mia-software.com
>> >>
>>                   <mailto:nb...@mia-software.com
>>            <mailto:nb...@mia-software.com>
>>            <mailto:nb...@mia-software.com <mailto:nb...@mia-software.com
>> >>>
>>                   nbros....@gmail.com <mailto:nbros....@gmail.com>
>>            <mailto:nbros....@gmail.com <mailto:nbros....@gmail.com>>
>>                   <mailto:nbros....@gmail.com
>>            <mailto:nbros....@gmail.com> <mailto:nbros....@gmail.com
>>            <mailto:nbros....@gmail.com>>>
>>
>>                   Mia-Software, 410 clos de la Courtine
>>                   93160 Noisy-le-Grand
>>                   http://www.mia-software.com
>>                   .: model driven agility :.
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>                   _______________________________________________
>>                   dash-dev mailing list
>>                   dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>
>>            <mailto:dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>>
>>
>>                   https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>>
>>               --     Nick Boldt :: http://nick.divbyzero.com
>>               Release Engineer :: Eclipse Modeling & Dash Athena
>>               _______________________________________________
>>               dash-dev mailing list
>>               dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>
>>            <mailto:dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>>
>>
>>               https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>>
>>
>>
>>            --            Nicolas Bros
>>            R&D
>>            tel: 06 75 09 19 88
>>            nb...@mia-software.com <mailto:nb...@mia-software.com>
>>            <mailto:nb...@mia-software.com <mailto:nb...@mia-software.com
>> >>
>>            nbros....@gmail.com <mailto:nbros....@gmail.com>
>>            <mailto:nbros....@gmail.com <mailto:nbros....@gmail.com>>
>>            Mia-Software, 410 clos de la Courtine
>>            93160 Noisy-le-Grand
>>            http://www.mia-software.com
>>            .: model driven agility :.
>>
>>  ------------------------------------------------------------------------
>>
>>            _______________________________________________
>>            dash-dev mailing list
>>            dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>
>>            https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>>
>>        _______________________________________________
>>        dash-dev mailing list
>>        dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>
>>        https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>>
>>    --    Nick Boldt :: http://nick.divbyzero.com
>>    Release Engineer :: Eclipse Modeling & Dash Athena
>>    _______________________________________________
>>    dash-dev mailing list
>>    dash-dev@eclipse.org <mailto:dash-dev@eclipse.org>
>>    https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>>
>>
>>
>> --
>> Nicolas Bros
>> R&D
>> tel: 06 75 09 19 88
>> nb...@mia-software.com <mailto:nb...@mia-software.com>
>> nbros....@gmail.com <mailto:nbros....@gmail.com>
>> Mia-Software, 410 clos de la Courtine
>> 93160 Noisy-le-Grand
>> http://www.mia-software.com
>> .: model driven agility :.
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> dash-dev mailing list
>> dash-dev@eclipse.org
>> https://dev.eclipse.org/mailman/listinfo/dash-dev
>>
>
> --
> Nick Boldt :: http://nick.divbyzero.com
> Release Engineer :: Eclipse Modeling & Dash Athena
> _______________________________________________
> dash-dev mailing list
> dash-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/dash-dev
>



-- 
Nicolas Bros
R&D
tel: 06 75 09 19 88
nb...@mia-software.com
nbros....@gmail.com
Mia-Software, 410 clos de la Courtine
93160 Noisy-le-Grand
http://www.mia-software.com
.: model driven agility :.
_______________________________________________
dash-dev mailing list
dash-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/dash-dev

Reply via email to