[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.modeling.gmt] Re: [AM3][ATL] Experiences getting ATL/AM3/TCS running from CVS

Hi Richard,

Your problem seems to be similar to the issue discussed in the following thread:
http://dev.eclipse.org/newslists/news.eclipse.modeling.gmt/msg00621.html



ATL HEAD has been stabilized so as to be released with Ganymede. AM3&TCS depend on branch R2_1_0_dev of ATL.


Once the latest CVS version is stable enough, we will make a Project Set File (http://wiki.eclipse.org/PSF) available. This file will be usable to check out ATL, TCS, and parts of AM3 still used by TCS.



Note that if you only want to use ATL, you can simply use the version that is released with Ganymede.



Regards,

Frédéric Jouault



Richard Eckart a écrit :
Hello folks,

three days ago I came across ATL and wanted just to try it out. Since I could not get all necessary components (ATL, AM3 and the TCS editor) from an update site, I resolved to check everything necessary out from CVS and build it on my own.

It took me three nights to get the stuff running in a second Eclipse instance and a lot of debugging the classloader action, so I thought I should share my finds. I hope I did not forget anything in the following list which is reconstructed from memory and by looking at the diff between my workspace and the CVS:

- First I found org.eclipse.m2m.atl.dsls included an outdated version of
  the org.eclipse.gmt.tcs.extractor/injector packages still expecting
  TCSInjector while the code calling it was passing in a TCSRuntime
  I checked out AMMACore and AMMAScript to be able to use the build.xml
  provided in org.eclipse.m2m.atl.dsls to update the package to the
  latest versions of extractor/injector and update the ASMs at the same
  time.

- Thereafter I found org.eclipse.m2m.atl.engine had the same problem
  (TCSInjector instead of TCSRuntime). I ended up updating the
  respective jars there as well and had to update the ATL_Parser.jar
  there as well (took the one from org.eclipse.m2m.atl.dsls.

- Now I had problems with the outline view. I needed to update
  org.eclipse.m2m.atl.services.core/ServiceTransformationUtil.java from
  branch 1.3.4.1 to resolve TCSInjector issues.

- Last I could not use Inject KM3 to Ecore because it was unable to
  locate the org.eclipse.gmt.tcs.injector.KM3_ANTLR3* classes. This is
  because the parser/lexer classes are in the same package which also
  houses TCSRuntime, but TCSRuntime and the parser classes are exported
  by different bundles (namely org.eclipse.m2m.atl.dsls and
  org.eclipse.m2m.atl.engine).
  Equinox cannot handle merging exports of the
  same package from different bundles - no way. I tried buddy exports,
  boot loading, whatever and finally found that there is no way and it
  is good so because otherwise one may end up with a bad mix of
  different versions of class files at runtime. I resolved to put a
  copy of KM3-parser.jar into the org.eclipse.gmt.am3.dsls.km3 bundle.

Before I tried the above, I thought if might be a good idea not to have
the injector/exporter packages jarred up add all - why not simply depend on the bundles. When I tried that, it introduced a cyclic dependency! It
seems that the bundles are not cut very well here. Similar goes for the
parser/lexer classes which I believe should be moved to their own bundles so they can be used from multiple places. Furthermore I believe the parse/lexer classes should be moved to a package
org.eclipse.gmt.tcs.injector.XXX where XXX would be ATL, KM3, etc. and
should be either moved to their own bundles thereafter to be usable by
different other bundles or may be included in various other bundles but
they must not be exported by those to avoid classloader confusion at runtime.


Hope this was a helpful analysis.

I am not sure if this went to the right newsgroup. I did not want to
start cross-posting. If this is relevant to other newsgroups, please
somebody forward it or tell me to post it there.

Cheers,

Richard