Migration to MPS 3.2

Hi,

I had a few languages implemented using JetBrains MPS 3.1.5 (build 135.1462). Then I installed MPS 3.2 EAP1. I tried executing the migration scripts, but nothing seemed to be working. The problem is that now I am not able to open the files with neither MPS 3.2, nor MPS 3.1.5. It seems like all the projects have migrated to persistence version 9 (the one in MPS 3.2.), so they cannot be opened with MPS 3.1.5 anymore. On the other hand, MPS 3.2. does not read them correctly either.

Besides trying to make the languages from version 3.1.5 work in version 3.2, I also tried to build a new project in MPS 3.2, or run the project that you have on the documentation website (MigrationTest). They all seem to report the same sort of errors. The two most common ones are:

NoClassDefFoundError: jetbrains/mps/lang/structure/constraints/ConceptsScope

and

Argument for @NotNull parameter "conceptId" of jetbrains/mps/smodel/... must not be null

Given the fact that I am not able to run any kind of migration scripts, do you have any other tips on how I could make the languages from 3.1.5 work in 3.2? What is so different in MPS 3.2 that neither new projects with a language and a concept do not compile? Are there any mandatory features that these languages need to have in order to work?

At the same time, what is the conceptID? Do I understand well, it replaces the name property?

I am looking forward for any suggestions on how I could solve these issues.

Thank you in advance,
Ana.
4 comments
Ana,

I had similar problems with 3.2EAP and decided to wait for a new EAP.
Couple things I learned that could help you:

You need to remove all generated directories from your project
(sources_gen, sources_gen.caches, classes_gen) before you open MPS 3.2 EAP.

After  you open MPS3.2EAP, disable all non-platform plugins and restart the
EAP. I found that this helped. After these steps, I was able to recompile
Editor2PDF and publish the 3.2 version of the plugin (
https://github.com/CampagneLaboratory/Editor2PDF, see branch 3.2).

If these steps do not help, and you do not have a copy of your non-migrated
3.1.5 project (a very bad idea IMHO, always backup before trying to upgrade
to an EAP), try the development version built from GitHub. It behaves much
better in my experience.

A process I would suggest before trying an EAP is to always branch your
project in source control, then test the EAP in the branch. Once the final
non EAP release of MPS is available, open another branch, do the migrations
and any changes you figured out you need in the EAP branches, and only then
merge with master.

This may seem like a lot of work, but it is a process we have used in the
past which is quite useful while you figure out what needs to change and
how migrations will affect your project.

Fabien

On Mon, Nov 24, 2014 at 6:54 AM, Ana - Meta Programming System <
jetforum@jetbrains.com> wrote:

* Meta Programming System
<http://forum.jetbrains.com/forum/Meta-Programming-System> * > *
Migration to MPS 3.2
<http://forum.jetbrains.com/thread/Meta-Programming-System-1052> * 6:54 am
Ana <http://forum.jetbrains.com/user/Ana>

Hi,

I had a few languages implemented using JetBrains MPS 3.1.5 (build
135.1462). Then I installed MPS 3.2 EAP1. I tried executing the migration
scripts, but nothing seemed to be working. The problem is that now I am not
able to open the files with neither MPS 3.2, nor MPS 3.1.5. It seems like
all the projects have migrated to persistence version 9 (the one in MPS
3.2.), so they cannot be opened with MPS 3.1.5 anymore. On the other hand,
MPS 3.2. does not read them correctly either.

Besides trying to make the languages from version 3.1.5 work in version
3.2, I also tried to build a new project in MPS 3.2, or run the project
that you have on the documentation website (MigrationTest). They all seem
to report the same sort of errors. The two most common ones are:

NoClassDefFoundError:
jetbrains/mps/lang/structure/constraints/ConceptsScope

and

Argument for @NotNull parameter "conceptId" of jetbrains/mps/smodel/...
must not be null

Given the fact that I am not able to run any kind of migration scripts, do
you have any other tips on how I could make the languages from 3.1.5 work
in 3.2? What is so different in MPS 3.2 that neither new projects with a
language and a concept do not compile? Are there any mandatory features
that these languages need to have in order to work?

At the same time, what is the conceptID? Do I understand well, it replaces
the name property?

I am looking forward for any suggestions on how I could solve these issues.

Thank you in advance,
Ana.

  JetBrains Forum | Build #176 (May/07/2014 4:41PM) | Feedback
<http://confluence.jetbrains.net/display/JETF/Feedback>




--
Fabien Campagne, PhD – http://campagnelab.org

Assistant Professor,    Dept. of Physiology and Biophysics
          Institute for Computational Biomedicine
Associate Director,      Biomedical Informatics Core,
       Clinical Translational Science Center

Weill Medical College of Cornell University
phone:  (646)-962-5613  1305 York Avenue
fax:    (646)-962-0383  Box 140
New York, NY 10021

Learn about Data Analysis in a Language Workbench.
http://workbench.campagnelab.org
0
Fabien, thank you for your quick reply! Your tips were really valuable!

I indeed have a copy of my non-migrated code, but I wanted to make my languages work with the new version of MPS, namely 3.2. I thought that the migration to version 3.2 was troublesome due to some obvious reasons that I was missing. It seems not to be the case. In the meantime, I also decided to wait for the next EAP.

Ana.
0
After a language has been published, the language authors should take special care whenever they're changing the usages of deprecated language constructions. It should be possible for the language designer to have some maintenance code run automatically on the user-side.
0
Hi,

I also have some troubles migrating from MPS 3.1.5 to 3.2. The situation is as follows:

  • I successfully migrated the LANGUAGEs and all SANDBOX solutions
  • A colleague uses my languages to build his own SOLUTION, i.e. he builds a model based on my languages
  • We use version control for propagating language changes but my colleague's model is not under version control
  • This means that all languages and sandbox solutions are already migrated to MPS 3.2 except my colleague's solution.
  • I would expect that now the Migration assistant shows up, whenever he starts MPS 3.2 in order to migrate the remaining old module. However, this does not happen.

So the question is: How can we migrate also my colleague's solution? This seems necessary because a migration script I wrote fails only in the old module.

Thank you very much in advance and kind regards,
LaAck
0

Please sign in to leave a comment.