When installing a deployed Spoofax plugin, it also installs all the meta plugins, like editors for meta languages. This is either because there are dependencies between plugins that shouldn’t be there, or because there are plugins that provide runtime and tooling support at the same time. Neither should be the case.

Submitted by Oskar van Rest on 2 April 2014 at 18:53

On 2 April 2014 at 19:11 Oskar van Rest commented:

Actually I think the problem is that there is only one Eclipse feature named org.strategoxt.imp which includes all the meta and runtime plugins. Splitting this into two features may already solve the problem. Possibly we want to split it in more than two features to give users more control over what to install and what not.


On 3 April 2014 at 10:36 Gabriël Konat commented:

You are correct, there should be Spoofax runtime feature that only contains the projects needed to load and run Spoofax languages. The rest should go into a Spoofax meta-runtime feature which contain all projects needed to develop languages, which would include our meta-languages.


On 22 November 2014 at 02:03 Oskar van Rest commented:

This is no longer necessary. See https://github.com/metaborg/spoofax-deploy/pull/1


On 22 November 2014 at 02:03 Oskar van Rest closed this issue.

On 24 November 2014 at 18:52 Oskar van Rest reopened this issue.

On 26 November 2014 at 10:52 Gabriël Konat commented:

We’ve pulled in Oskar’s changes which puts most of the metatooling into its own feature, what is still left:

19M org.spoofax.interpreter.externaldeps_1.3.0.20141124-151718.jar
16M org.strategoxt.strj_1.3.0.20141124-151718.jar
5.4M org.strategoxt.imp.generator_1.3.0.20141124-151718.jar
4.9M org.strategoxt.imp.nativebundle_1.3.0.20141124-151718.jar
2.1M org.strategoxt.imp.debug.stratego.transformer_1.3.0.20141124-151718.jar
708K org.eclipse.imp.runtime_1.3.0.20141124-151718.jar
568K org.strategoxt.imp.debug.stratego.core_1.3.0.20141124-151718.jar
544K org.strategoxt.imp.runtime_1.3.0.20141124-151718.jar
300K org.spoofax.jsglr_1.3.0.20141124-151718.jar
244K org.spoofax.interpreter.adapter.ecj_1.3.0.20141124-151718.jar
236K org.spoofax.interpreter.core_1.3.0.20141124-151718.jar
128K org.spoofax.terms_1.3.0.20141124-151718.jar
120K org.metaborg.runtime.task_1.3.0.20141124-151718.jar
108K org.spoofax.interpreter.library.jsglr_1.3.0.20141124-151718.jar
104K org.strategoxt.imp.debug.stratego.runtime_1.3.0.20141124-151718.jar
100K lpg.runtime_1.3.0.20141124-151718.jar
60K org.spoofax.interpreter.library.index_1.3.0.20141124-151718.jar
52K org.strategoxt.imp.debug.core_1.3.0.20141124-151718.jar
24K org.spoofax.interpreter.library.java_1.3.0.20141124-151718.jar
16K org.spoofax.interpreter.library.xml_1.3.0.20141124-151718.jar
16K org.spoofax.interpreter_1.3.0.20141124-151718.jar
12K org.spoofax.interpreter.ui_1.3.0.20141124-151718.jar
12K org.spoofax.interpreter.library.jline_1.3.0.20141124-151718.jar
12K org.spoofax.interpreter.library.interpreter_1.3.0.20141124-151718.jar
8.0K org.strategoxt.jarprovider_1.3.0.20141124-151718.jar
8.0K org.spoofax.interpreter.library.eclipse_1.3.0.20141124-151718.jar
4.0K org.strategoxt.imp.runtime.sidebyside.main_1.3.0.20141124-151718.jar
4.0K org.strategoxt.imp.runtime.sidebyside.latest_1.3.0.20141124-151718.jar

which are not so trivial to get rid of. Some of these projects contribute a lot of size because:

  • STRJ
    • Contributes the strategoxt.jar.
    • Languages depend on it because of the Strategy class and other related Stratego compiler classes.
  • externaldeps
    • Contributes a JAR files from external dependencies, but also internal dependencies such as make-permissive.
    • Languages depend on it because of make-permissive.
  • Generator
    • Contributes several aterm/ctree files.
    • Dependency through the Spoofax runtime
  • nativebundle
    • Contributes binary executables
    • Dependency through the Spoofax runtime
  • Debugger
    • Dependency through the Spoofax runtime

Languages don’t actually need most of these things, but have a dependency because of the course-grainedness. The projects need to be more fine-grained to get rid of the unnecessary dependencies.

Log in to post comments