Stratego bootstrap build doesn't bootstrap
The Stratego compiler is bootstrapped in three steps from a Java version of Stratego from 2014 as the base. However, currently that build uses the base in each step to compile. Therefore it doesn’t actually bootstrap. I think changes are need both in the Maven modules that encode the three steps and the Ant build that’s called to actually build Stratego.
To check that the build doesn’t bootstrap, you can do the following: (1) Add a
Submitted by Jeff Smits on 7 April 2018 at 20:38with(fail)
in the definition of thestrj
strategy. (2) Check that a single build indeed gives a broken strj. (3) Try the bootstrap build. If it really bootstraps it should fail at the second step, but instead it currently builds successfully. You can inspect the results of each step, each of those compilers will fail due to thewith(fail)
.
Issue Log
Today I looked at this problem with Gabriel, and found that the issue is in the Maven build. The bootstrap-pom.xml combined bootstrap modules and only expands variables once instead of separately for every module. Therefore the baseline for the bootstrap builds stays the same, and so nothing bootstraps. Doing the maven builds from the different modules separately will fix this.
However, due to changes in the command line tools and the strategoxt-antlib the current code does not bootstrap. I’m working on that right now.
After some changes in the strategoxt and jsglr repos, the bootstrap build now works locally with a manual string of maven commands. The tests succeed, and when an explicit
with(fail)
is added the second step fails as expected.
Now the maven commands just need to be integrated into the build script.
I’ve changed the Python build script for bootstrapping to do the separate maven commands, and had to revert an improvement that apparently interferes with optimisations. But everything bootstraps now.
Log in to post comments