-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use external dependencies from Maven #694
base: dev
Are you sure you want to change the base?
Conversation
|
It is slightly smaller, e.g. 117MB instead of 119MB for the Debug-E4
Yes, it does work, see 171987b. |
41c7684
to
74217b1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 thanks for taking care of this.
I agree we should keep pushing on this in further PRs for the other JARs, and perhaps we can also adapt some code such that we do not need a patched version e.g. of ApacheCommonsCLI
?
For ApacheCommonsCLI rather not. We have many modifications to that part of Apache Commons, which we use for our command line interface. Even moving it to a separate repo would be counter-productive, as changing and testing that when, e.g., we add a new option type, would be much more tedious. |
I agree, this PR was just meant as a start, where I tried to simply use unmodified Maven dependencies where possible, without changing any code. There are still some dependencies left, where this is not possible, because they are not on maven (petruchio.jar, czt_1_5_0_bin.jar, |
It looks like, we adapted |
For CZT, we should talk to the ReqAnalyzer people -- when asking @Langenfeld, he was not sure whether it is still needed. |
My rule of thumb would be:
For |
CZT is only needed for Library-PEA, and there for the Z support. I am pretty sure that they dont use that, but they would need to remove it from Library-PEA. Question is: do they want to do that soonish, or would it be ok if someone else does it? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @schuessf for starting this work to beautify the code base and its dependencies. I particularly like that we can now integrate libraries like Trove cleanly.
That was also the statement of @jhoenicke that he only needed this back then, before the PEA-to-Boogie translation was available. Nowadays it is no longer used and it seems as if the CZT project is dead. |
On Maven, only Eldarica 2.1 is available, where a few packages where moved and the API slightly changed. The previously used JAR contains Eldarica, Princess and Scala, therefore we need these three Maven dependencies.
74217b1
to
7e5e361
Compare
Currently, there are many different ways how external dependencies are used in Ultimate:
org.yaml.snakeyaml
Library-ApacheCommonsLang
)trove-3.0.3.jar
inLibrary-Automata
)However, I presume the first solution is the most optimal one, as one can simply add external dependencies without any changes on some servers (like the second solution) or without copying any files into the source files of Ultimate that can be also easily updated (just change the version number in the target file). Therefore I attempted to only use Maven dependencies, where possible, there are currently some exceptions:
Library-Jung
andLibrary-ApacheCommonsCLI
were patched to our needs (e.g. 8b6c0bf), so we cannot replace them with external dependencies without.Library-CHC/Eldarica-assembly-2.0.8.jar
contains actually more dependencies.BA_SharedJARs
contains multiple JARs, but I am not sure, if they can be replaced with Maven dependencies or where these JARs are actually needed.There is still one open issue with this PR: Building works totally fine for me using(This was fixed by adding the dependencies toUltimate_E4.32_Java21.target
as a target file, however if I useUltimate_E4.32_Java21_Win32.target
the external dependenices cannot be resolved (e.g.org.apache.commons.lang3
), even thoughUltimate_E4.32_Java21.target
is included in the target file.includeBundles
)