stainless
stainless copied to clipboard
Move Inox as a submodule instead of an http dependency
For the future or in case things go wrong: @samuelchassot , can you summarize the advantages of this over the current approach with hash commit?
@sankalpgambhir @drganam just making sure you are up to date with this change as well, since you are working on adding functionality at the Inox level. Let @samuelchassot know if you agree with this new way of managing inox as a dependency.
I think it's a good change! It would simplify testing Stainless and Inox together. With the current dependency setup, you often end up with sbt recompiling Inox entirely on any changes. I expect that having it as a subproject works better wrt these issues.
Sounds great, I agree with this change!
The main point is to add Inox as a submodule of the Stainless repository so that Inox's source is part of the Stainless repository.
Pros: Given how tightly coupled Inox is with Stainless, Inox is not modularised from the Stainless perspective. Therefore, it makes sense for Inox to be part of the Stainless source.
- Inox still exists on its own, in its repo.
- No need for local build.sbt modification to work on Stainless and Inox anymore: Inox is part of the source; therefore, it always lives locally when building Stainless and can be modified without cloning manually another repo and using it to build Stainless.
- No need to explicitly release Inox anymore to use the latest commit with Stainless
Cons:
- git submodule machinery can be unsupported by some tools, such as some git UI. Understanding how git submodules work: A submodule points to a particular commit of the target repo. This means that when pushing to Inox, the changes would be "visible" on the Stainless repo only after explicitly pulling the submodule and committing (on the Stainless repo) the submodule file modified with the latest hash (easy to do; the process is the same as committing a file diff).
- One should be careful to initialise the submodules when cloning the Stainless repo
@samuelchassot please just rebase and we can merge
The conflict came from the new warning added to say we don't support Scala 2 anymore, which happened to be in the same spot as the warning about the git submodule.