Separate Spoofax meta components from Spoofax runtime components
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
Issue Log
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.
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.
This is no longer necessary. See https://github.com/metaborg/spoofax-deploy/pull/1
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