Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 320082

Summary: Build MAT (plugins, features and RCPs) with Maven Tycho
Product: [Tools] MAT Reporter: Erwin Margewitsch <erwin.margewitsch>
Component: CoreAssignee: Krum Tsvetkov <krum.tsvetkov>
Status: RESOLVED FIXED QA Contact:
Severity: critical    
Priority: P3 CC: andrew_johnson, krum.tsvetkov
Version: 1.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Bug Depends on: 342704    
Bug Blocks:    

Description Erwin Margewitsch CLA 2010-07-16 04:29:12 EDT
So far we build only the plugins and features with our maven/tycho build job [1]. Since mostly the RCPs are downloaded from our download area, it would be good to build the RCPs with our build job too.

[1] https://build.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/
Comment 1 Erwin Margewitsch CLA 2010-07-19 03:13:50 EDT
The RCP are built now and can be accessed via [RCP]. Feedback is appreciated.
Currently not all rootfiles are added to the RCPs, therfore I'm in contact with a Tycho developer...



[RCP] <<https://build.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/ws/trunk/product/target/>>
Comment 2 Andrew Johnson CLA 2010-07-19 11:29:01 EDT
I've yet to test a build but this looks useful.

Are the files in org.eclipse.mat.product similar to some of the files in org.eclipse.mat.ui.rcp ?

Will we be able to avoid duplication of the files in the future? E.g. all the product definitions go in org.eclipse.mat.product and org.eclipse.mat.ui.rcp is just a plugin project without .product files and icons ?
Comment 3 Krum Tsvetkov CLA 2010-07-20 11:04:47 EDT
I tried the build product for Win64.
Here some findings:

1) The folder in which the product is contained is "eclipse". This is standard, but so far for our RCPs the containing folder was "mat"

2) There are files missing in the root folder, namely
- MemoryAnalyzer.ini
- the ParseHeapDump script
- epl-v10.html and notice.html
We have to figure out how to bring this files on the proper place

3) The build javadoc is missing, i.e. the topic "API Reference" is present in the help contents, but the content is missing

4) The plugin org.eclipse.mat.ibmdumps is missing -> no acquire dump functionality from IBM JVMs

5) "Window" -> "Preferences" opens an empty window. The page for proxy configuration is missing.

6) Update manager is missing, "Help" doesn't contain "Install new software..." and "Check for updates"
Comment 4 Erwin Margewitsch CLA 2010-07-23 03:42:40 EDT
(In reply to comment #2)
> I've yet to test a build but this looks useful.
> Are the files in org.eclipse.mat.product similar to some of the files in
> org.eclipse.mat.ui.rcp ?
> Will we be able to avoid duplication of the files in the future? E.g. all the
> product definitions go in org.eclipse.mat.product and org.eclipse.mat.ui.rcp is
> just a plugin project without .product files and icons ?

Currently some files regarding the product definition are duplicated in org.eclipse.mat.product and org.eclipse.mat.ui.rcp. I had to copy/extract these files into a new project since every project/pom can have only one packaging type.

This is temporary until the RCP build with tycho is finalized. Then the product related files should be deleted from the org.eclipse.mat.ui.rcp plugin.
Comment 5 Andrew Johnson CLA 2010-08-19 10:43:01 EDT
(In reply to comment #3)
> I tried the build product for Win64.
> Here some findings:

> 4) The plugin org.eclipse.mat.ibmdumps is missing -> no acquire dump
> functionality from IBM JVMs
> 
This could be because org.eclipse.mat.ibmdumps is missing from org.eclipse.mat.feature feature.xml
Comment 6 Krum Tsvetkov CLA 2010-08-19 10:46:38 EDT
(In reply to comment #5)

> This could be because org.eclipse.mat.ibmdumps is missing from
> org.eclipse.mat.feature feature.xml
Erwin excluded it as there were some problems while compiling. But we never took the time to investigate it further. We have to try again and look into it.
Comment 7 Andrew Johnson CLA 2010-09-03 09:37:42 EDT
I've added some p2 plugins.
org.eclipse.equinox.p2.ui
org.eclipse.equinox.p2.ui.sdk
org.eclipse.equinox.p2.ui.sdk.scheduler

and also which seems to be needed to get the update window to open.

Also add declarative services to the dependency feature
org.eclipse.equinox.ds

and use a default config.ini but then add a start configuration for runtime and equinox.ds
Comment 8 Andrew Johnson CLA 2010-09-16 10:50:22 EDT
The current builds don't have charts, possibly because BIRT 2.6.1 uses org.mozilla.javascript not org.mozilla.rhino plugins.
Comment 9 Krum Tsvetkov CLA 2010-09-29 04:00:56 EDT
The version of DTFJ available on the FTP site has changed. I update the target definition accordingly.
Comment 10 Krum Tsvetkov CLA 2010-12-14 09:05:19 EST
(In reply to comment #3)
Some comments on two of the problems:

> 1) The folder in which the product is contained is "eclipse". This is standard,
> but so far for our RCPs the containing folder was "mat"

In an upcoming version of tycho this will be configurable:
https://github.com/sonatype/sonatype-tycho/commit/d7c252e926458233bc271251781aa35b7c73b087

> 
> 2) There are files missing in the root folder, namely
> - MemoryAnalyzer.ini
> - the ParseHeapDump script
> - epl-v10.html and notice.html
> We have to figure out how to bring this files on the proper place
> 
This is the corresponding tycho issue:
https://issues.sonatype.org/browse/TYCHO-465
Comment 11 Andrew Johnson CLA 2010-12-14 09:11:06 EST
I have a local PDE build based MAT with P2 listed from 
Help->About Eclipse Memory Analyzer->Installation Details 
which lists
Installed Software
Installation History
Features
Plug-ins
Configuration

The plug-ins are
com.ibm.dtfj.api_1.4.0.201011011031
com.ibm.dtfj.j9_1.4.0.201011011031
com.ibm.dtfj.sov_1.4.0.201011011031
com.ibm.icu_4.2.1.v20100412.jar
javax.servlet.jsp_2.0.0.v200806031607.jar
javax.servlet_2.5.0.v200910301333.jar
org.apache.ant_1.7.1.v20100518-1145
org.apache.commons.codec_1.3.0.v20100518-1140.jar
org.apache.commons.el_1.0.0.v201004212143.jar
org.apache.commons.httpclient_3.1.0.v201005080502.jar
org.apache.commons.logging_1.0.4.v201005080501.jar
org.apache.jasper_5.5.17.v201004212143.jar
org.apache.lucene.analysis_1.9.1.v20100518-1140.jar
org.apache.lucene_1.9.1.v20100518-1140.jar
org.eclipse.ant.core_3.2.200.v20100427.jar
org.eclipse.birt.chart.device.extension_2.6.0.v20100521.jar
org.eclipse.birt.chart.device.swt_2.6.0.v20100519.jar
org.eclipse.birt.chart.engine.extension_2.6.0.v20100601.jar
org.eclipse.birt.chart.engine_2.6.0.v20100607.jar
org.eclipse.birt.core_2.6.0.v20100526.jar
org.eclipse.compare.core_3.5.100.I20100526-0800.jar
org.eclipse.compare_3.5.100.I20100526-0800.jar
org.eclipse.core.commands_3.6.0.I20100512-1500.jar
org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar
org.eclipse.core.databinding.observable_1.3.0.I20100601-0800.jar
org.eclipse.core.databinding.property_1.3.0.I20100601-0800.jar
org.eclipse.core.databinding_1.3.100.I20100601-0800.jar
org.eclipse.core.expressions_3.4.200.v20100505.jar
org.eclipse.core.filebuffers_3.5.100.v20100520-0800.jar
org.eclipse.core.filesystem.win32.x86_1.1.201.R36x_v20100727-0745.jar
org.eclipse.core.filesystem_1.3.1.R36x_v20100727-0745.jar
org.eclipse.core.jobs_3.5.1.R36x_v20100824.jar
org.eclipse.core.net_1.2.100.I20100511-0800.jar
org.eclipse.core.resources.win32.x86_3.5.100.v20100505-1345.jar
org.eclipse.core.resources_3.6.0.R36x_v20100825-0600.jar
org.eclipse.core.runtime.compatibility.auth_3.2.200.v20100517.jar
org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520
org.eclipse.core.runtime_3.6.0.v20100505.jar
org.eclipse.core.variables_3.2.400.v20100505.jar
org.eclipse.debug.core_3.6.0.v20100519.jar
org.eclipse.debug.ui_3.6.1.v20100901_r361.jar
org.eclipse.ecf.filetransfer_4.0.0.v20100529-0735.jar
org.eclipse.ecf.identity_3.1.0.v20100529-0735.jar
org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100529-0735.jar
org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100529-0735.jar
org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100529-0735.jar
org.eclipse.ecf.provider.filetransfer_3.1.0.v20100529-0735.jar
org.eclipse.ecf.ssl_1.0.0.v20100529-0735.jar
org.eclipse.ecf_3.1.0.v20100529-0735.jar
org.eclipse.emf.common_2.6.0.v20100914-1218.jar
org.eclipse.emf.ecore.xmi_2.5.0.v20100521-1846.jar
org.eclipse.emf.ecore_2.6.1.v20100914-1218.jar
org.eclipse.equinox.app_1.3.1.R36x_v20100803.jar
org.eclipse.equinox.common_3.6.0.v20100503.jar
org.eclipse.equinox.concurrent_1.0.100.v20100503.jar
org.eclipse.equinox.ds_1.2.1.R36x_v20100803.jar
org.eclipse.equinox.frameworkadmin.equinox_1.0.200.v20100505.jar
org.eclipse.equinox.frameworkadmin_2.0.0.v20100503.jar
org.eclipse.equinox.http.jetty_2.0.0.v20100503.jar
org.eclipse.equinox.http.registry_1.1.0.v20100503.jar
org.eclipse.equinox.http.servlet_1.1.0.v20100503.jar
org.eclipse.equinox.jsp.jasper.registry_1.0.200.v20100503.jar
org.eclipse.equinox.jsp.jasper_1.0.200.v20100421.jar
org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
org.eclipse.equinox.launcher_1.1.0.v20100507.jar
org.eclipse.equinox.p2.artifact.repository_1.1.1.R36x_v20100901.jar
org.eclipse.equinox.p2.console_1.0.200.v20100601.jar
org.eclipse.equinox.p2.core_2.0.2.R36x_v20100804.jar
org.eclipse.equinox.p2.director.app_1.0.201.R36x_v20100823.jar
org.eclipse.equinox.p2.directorywatcher_1.0.202.R36x_v20100727.jar
org.eclipse.equinox.p2.director_2.0.2.R36x_v20100823.jar
org.eclipse.equinox.p2.engine_2.0.0.v20100606.jar
org.eclipse.equinox.p2.extensionlocation_1.2.0.v20100518.jar
org.eclipse.equinox.p2.garbagecollector_1.0.100.v20100503.jar
org.eclipse.equinox.p2.jarprocessor_1.0.200.v20100503a.jar
org.eclipse.equinox.p2.metadata.generator_1.0.200.v20100503a.jar
org.eclipse.equinox.p2.metadata.repository_1.1.0.v20100513.jar
org.eclipse.equinox.p2.metadata_2.0.0.v20100601.jar
org.eclipse.equinox.p2.operations_2.0.0.v20100510.jar
org.eclipse.equinox.p2.publisher_1.1.2.v20100824-2220.jar
org.eclipse.equinox.p2.ql_2.0.0.v20100503a.jar
org.eclipse.equinox.p2.reconciler.dropins_1.1.0.v20100525.jar
org.eclipse.equinox.p2.repository.tools_2.0.1.R36x_v20100823.jar
org.eclipse.equinox.p2.repository_2.0.1.R36x_v20100823.jar
org.eclipse.equinox.p2.touchpoint.eclipse_2.0.2.R36x_v20100823.jar
org.eclipse.equinox.p2.touchpoint.natives_1.0.200.v20100503a.jar
org.eclipse.equinox.p2.ui.sdk.scheduler_1.0.0.v20100507-1815.jar
org.eclipse.equinox.p2.ui.sdk_1.0.100.v20100513.jar
org.eclipse.equinox.p2.ui_2.0.0.v20100518.jar
org.eclipse.equinox.p2.updatechecker_1.1.101.R36x_v20100823.jar
org.eclipse.equinox.p2.updatesite_1.0.201.R36x_v20100823.jar
org.eclipse.equinox.preferences_3.3.0.v20100503.jar
org.eclipse.equinox.registry_3.5.0.v20100503.jar
org.eclipse.equinox.security.ui_1.0.200.v20100503.jar
org.eclipse.equinox.security.win32.x86_1.0.200.v20100503.jar
org.eclipse.equinox.security_1.0.200.v20100503.jar
org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20100503.jar
org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar
org.eclipse.equinox.util_1.0.200.v20100503.jar
org.eclipse.help.appserver_3.1.400.v20100427.jar
org.eclipse.help.base_3.5.2.v201009090800.jar
org.eclipse.help.ui_3.5.2.r36_v20100702.jar
org.eclipse.help.webapp_3.5.2.r36_r20100816.jar
org.eclipse.help_3.5.0.v20100524.jar
org.eclipse.jdt.core.manipulation_1.3.0.v20100520-0800.jar
org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar
org.eclipse.jdt.debug_3.6.1.v20100715_r361
org.eclipse.jdt.launching_3.5.100.v20100526.jar
org.eclipse.jdt.ui_3.6.1.r361_v20100825-0800.jar
org.eclipse.jface.databinding_1.4.0.I20100601-0800.jar
org.eclipse.jface.text_3.6.1.r361_v20100825-0800.jar
org.eclipse.jface_3.6.1.M20100825-0800.jar
org.eclipse.ltk.core.refactoring_3.5.100.v20100526-0800.jar
org.eclipse.ltk.ui.refactoring_3.5.0.v20100526-0800.jar
org.eclipse.mat.api_1.0.100.201011121519.jar
org.eclipse.mat.chart.ui_1.0.100.201011121519.jar
org.eclipse.mat.chart_1.0.100.201011121519.jar
org.eclipse.mat.dtfj_1.0.100.201011121519.jar
org.eclipse.mat.hprof_1.0.100.201011121519.jar
org.eclipse.mat.ibmdumps_1.0.100.201011121519.jar
org.eclipse.mat.jdt_1.0.100.201011121519.jar
org.eclipse.mat.parser_1.0.100.201011121519.jar
org.eclipse.mat.report_1.0.100.201011121519.jar
org.eclipse.mat.ui.help_1.0.100.201011121519.jar
org.eclipse.mat.ui.rcp_1.0.100.201011121519.jar
org.eclipse.mat.ui_1.0.100.201011121519.jar
org.eclipse.osgi.services_3.2.100.v20100503.jar
org.eclipse.osgi_3.6.1.R36x_v20100806.jar
org.eclipse.platform_3.6.1.v201009090800
org.eclipse.search_3.6.0.v20100520-0800.jar
org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar
org.eclipse.swt_3.6.1.v3655c.jar
org.eclipse.team.core_3.5.100.R36x_v20100825-0800.jar
org.eclipse.team.ui_3.5.101.R36x_v20100825-0800.jar
org.eclipse.text_3.5.0.v20100601-1300.jar
org.eclipse.ui.cheatsheets_3.4.0.v20100427.jar
org.eclipse.ui.console_3.5.0.v20100526.jar
org.eclipse.ui.editors_3.6.1.r361_v20100825-0800.jar
org.eclipse.ui.forms_3.5.2.r36_v20100702.jar
org.eclipse.ui.ide_3.6.1.M20100825-0800.jar
org.eclipse.ui.intro_3.4.0.v20100427.jar
org.eclipse.ui.navigator.resources_3.4.201.M20100707-0800.jar
org.eclipse.ui.navigator_3.5.0.I20100601-0800.jar
org.eclipse.ui.views.log_1.0.100.v20100423.jar
org.eclipse.ui.views.properties.tabbed_3.5.100.I20100509-0800.jar
org.eclipse.ui.views_3.5.0.I20100527-0800.jar
org.eclipse.ui.win32_3.2.200.I20100509-0800.jar
org.eclipse.ui.workbench.texteditor_3.6.1.r361_v20100714-0800.jar
org.eclipse.ui.workbench_3.6.1.M20100826-1330.jar
org.eclipse.ui_3.6.1.M20100826-1330.jar
org.hamcrest.core_1.1.0.v20090501071000.jar
org.junit4_4.8.1.v20100525
org.junit_4.8.1.v4_8_1_v20100427-1100
org.mortbay.jetty.server_6.1.23.v201004211559.jar
org.mortbay.jetty.util_6.1.23.v201004211559.jar
org.mozilla.rhino_1.7.1.v20090608
org.sat4j.core_2.2.0.v20100429.jar
org.sat4j.pb_2.2.0.v20100429.jar

The features are:
com.ibm.dtfj.feature_1.4.0.201011011031
org.eclipse.equinox.p2.user.ui_2.0.1.r361_v20100903-897HFZFFZRuSD2LMtVxyz0Vr
org.eclipse.mat.chart.feature_1.0.100.201011121519
org.eclipse.mat.dependencies.feature_1.0.100.201011121519
org.eclipse.mat.feature_1.0.100.201011121519
org.eclipse.mat.ui.rcp.feature_1.0.100.201011121519

There is a p2 directory too:
org.eclipse.equinox.p2.core
org.eclipse.equinox.p2.engine
Comment 12 Andrew Johnson CLA 2010-12-15 01:52:59 EST
This might help:

Building p2-enabled products with Tycho 
http://kaikreuzer.blogspot.com/2010/12/building-p2-enabled-products-with-tycho.html
Comment 13 Krum Tsvetkov CLA 2010-12-17 08:48:53 EST
I made two more changes and now:
1) the org.eclipse.mat.ibmdumps plugin is built fine and usable afterwards
2) the javadoc is build and included in the o.e.m.ui.help plugin. Here I just call explicitly the ant target we had in extrabuild.xml
Comment 14 Andrew Johnson CLA 2011-02-09 10:47:25 EST
There was a comment on mat-dev that downloading the Eclipse SDK every time is time consuming.

We can use the usetimestamp attribute on get to avoid this.

I've also found that I had the Windows Eclipse SDK around, so it would be nice to use this instead if available in p2tool, rather than having to download the Linux one.

Also, the FeaturesAndBundlesPublisher doesn't work with encoded URLs. E.g.
file:///C:/Documents%20and%20Settings/Administrator/workspace/p2tool/

so we need an uncoded file URL.
Comment 15 Krum Tsvetkov CLA 2011-02-11 09:29:59 EST
I made some progress with the RCP build.

The RCPs now contain all root files (licenses, shell scripts, etc...). Also the folder in the zips is not any longer /eclipse, but /mat.
I managed to get the p2 UI and the proxy preferences also in.
I think with this all my points from comment 3 are solved.

Additionally, I added a small post-processing step (ant script) which copies the produced rcps and the update site to /ws/latestBuildResults on hudson. Thus we don't need to navigate to the /target folders. I also made the scipt delete the product/target folder to save some space on the hudson server.

Currently the build produces 2 RCPs -> for win 32 and linux 32. I'll try to add more of them step by step. 

There are still some open points and further improvements possible:
1) the RCPs are currently about 30mb bigger than before. I will look into this
1.1) probably as a result of the previous point there is a Search menu, which we don't need

2) It may be possible to get rid of most of the downloads (except dtfj) in prepare-dep-repos.xml. There is a mojo for doing the publishing in p2 repos: https://github.com/sonatype/tycho-extras/tree/master/tycho-p2-extras-plugin and I thinkthe deltaPack and the test framework can be found in the helios repo. If not, we can at least save the expensive download of the sdk.

3) I'm trying to figure out how to publish "nightly" results on the download servers. The mechanism the egit project uses is shell script + chron job which executes it. I got some help from a colleague here and will try to set this up also for MAT

Any other open topics?
Comment 16 Andrew Johnson CLA 2011-02-11 11:36:37 EST
Krum, thank you for your work on this.

Some other minor problems:

No icon on the Eclipse Memory Analyzer window
No icon on Windows on the task switcher (Alt-tab)
Help->About gives a blank window (with no text and no feature icon(s)
 The Installation Details -> Feature tab is empty
Cheat Sheets still has Team/CVS in it, though I'm not sure we have got all the cheat sheet changes correct with bug 318263. I think the help bundle now has a cheat sheet reference to RC, but I'll have to check.
Comment 17 Andrew Johnson CLA 2011-02-13 08:33:51 EST
I get the icons to appear if I modify config.ini to have the line
eclipse.product=org.eclipse.mat.ui.rcp.MemoryAnalyzer
instead of
eclipse.product=MemoryAnalyzer

I think this is related to the uid/id change in the mat.product file.
Comment 18 Andrew Johnson CLA 2011-02-14 03:21:36 EST
I've updated the product file to give the full name org.eclipse.mat.ui.rcp.MemoryAnalyzer

The master node seems to be out of temporary file space, so I've tried switching to hudson-slave1 and hudson-slave2
Comment 19 Andrew Johnson CLA 2011-02-14 07:26:18 EST
The dropins folder doesn't work automatically:

http://dev.eclipse.org/newslists/news.eclipse.technology.equinox/msg06640.html
says that org.eclipse.equinox.p2.reconciler.dropins needs to be started, and if I start it from the OSGi console (
-console  
 then 
start org.eclipse.equinox.p2.reconciler.dropins
) it does work.
Comment 20 Andrew Johnson CLA 2011-02-14 12:03:08 EST
We should remove 'Incubation' from the top pom and the update site. We should also let the update site update the MAT RCP - so perhaps we need two categories, for the IDE and RCP.
Comment 21 Andrew Johnson CLA 2011-03-02 12:47:25 EST
vm option 
-Dosgi.requiredJavaVersion=1.5
is a good option to have for MemoryAnalyzer.ini

This gives a pop-up window:
Version 1.4.2_18 of the JVM is not suitable for this product. Version: 1.5 or greater is required.

instead of a cryptic message in a log file.

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.pde.doc.user/tasks/pde_p2_configuringproducts.htm

also says we could add this to config.ini
<configurations>
<property name="osgi.requiredJavaVersion" value="1.5.0"/>    
</configurations>

Perhaps the latter is better.
Comment 22 Andrew Johnson CLA 2011-03-18 06:39:04 EDT
DTFJ has been updated by IBM to version 1.5

http://www.ibm.com/developerworks/java/jdk/tools/dtfj.html

The version has updated from 1.4.0.201007061358  to 1.5.0.201103111151.

I'll update the mat-site.xml to match any version,  rather than hard coding the version.
Comment 23 Krum Tsvetkov CLA 2011-11-30 02:37:40 EST
I made a correction to the build - changed the parent pom so that maven.eclipse.org plugin repository is only used when "build-server" profile is activated, i.e. when signing is performed.
Because of problems with the content in this repository I struggled for some hours yesterday until I find what is wrong with our builds.
Having the new change it would be possible to turn off using this repo without changes in the xml.
Comment 24 Krum Tsvetkov CLA 2011-12-01 09:44:19 EST
I think it's time to close this bug. We recently did the following changes:
- refactor the project/file structure, so that it is easier to checkout the projects and buld them with maven (see bug 364589).
- I made some changes to the Wiki page which documents the Tycho build: http://wiki.eclipse.org/MemoryAnalyzer/Building_MAT_With_Tycho

The build is now working and is documented. If some further problems appear, we should track them in separate messages.
I was a long task to get all working :-)