diff --git a/.gitignore b/.gitignore index bf0944b92e..fe45ba58b1 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,8 @@ prism/\.project # Eclipse project custom settings \.settings/ prism/\.settings/ + +# Dependency management via Gradle +prism/etc/jars/.gradle/ +prism/etc/jars/build/ +prism/etc/jars/local-libs/ diff --git a/prism/etc/jars/README.md b/prism/etc/jars/README.md new file mode 100644 index 0000000000..b2bc93ea3c --- /dev/null +++ b/prism/etc/jars/README.md @@ -0,0 +1,18 @@ +Local (Gradle-based) management of dependent jars, kept in `lib` + +To find dependencies and copy into `lib`: + +* `gradle -p etc/jars syncLibs` + +To see what changed: + +* `git diff lib` + +To remove files in `lib` in order to re-run: + +* `gradle -p etc/jars cleanLibs` + +To print dependency tree: + +* `gradle -p etc/jars dependencies --configuration runtimeClasspath` + diff --git a/prism/etc/jars/build.gradle b/prism/etc/jars/build.gradle new file mode 100644 index 0000000000..db728d27af --- /dev/null +++ b/prism/etc/jars/build.gradle @@ -0,0 +1,109 @@ +// Gradle-based download of dependency jars + +plugins { + id 'java' +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_9 + targetCompatibility = JavaVersion.VERSION_1_9 +} + +repositories { + mavenCentral() +} + +configurations { + // Bucket for the JUnit standalone runner + testRunner +} + +// Libraries not on Maven Central +// Get from prismmodelchecker.org and cache in local-libs + +def prismJarBaseUrl = "https://www.prismmodelchecker.org/other/" +def prismJarStashDir = file("local-libs") + +def customJars = [ + "jhoafparser-1.1.1.jar", + "epsgraphics-1.0.0.jar", + "nailgun-server-0.9.2-SNAPSHOT.jar", + "pepa.jar" +] + +tasks.register('downloadPrismJars') { + group = "PRISM" + description = "Downloads non-Maven jars from the PRISM website." + + doLast { + if (!prismJarStashDir.exists()) prismJarStashDir.mkdirs() + + customJars.each { jarName -> + def destFile = new File(prismJarStashDir, jarName) + if (!destFile.exists()) { + println "Downloading ${jarName}..." + ant.get(src: "${prismJarBaseUrl}${jarName}", dest: destFile) + } + } + } +} + +// Main dependencies + +dependencies { + + implementation 'colt:colt:1.2.0' + implementation("de.uni-mannheim.rz.krum:jas:2.7.90") + implementation 'org.jfree:jfreechart:1.0.14' + implementation 'org.jfree:jcommon:1.0.17' + //implementation("com.martiansoftware:nailgun-server:0.9.1") + implementation 'it.unimi.dsi:fastutil:8.5.15' + implementation 'org.apache.commons:commons-compress:1.24.0' + implementation 'org.tukaani:xz:1.10' + implementation 'com.google.code.gson:gson:2.11.0' + implementation 'org.apache.logging.log4j:log4j-api:2.17.1' + implementation 'org.apache.logging.log4j:log4j-core:2.17.1' + + // JUnit: for simplicity, don't put in separate test group for now + implementation 'org.junit.platform:junit-platform-console-standalone:1.7.2' + //testRunner 'org.junit.platform:junit-platform-console-standalone:1.9.3' + + // Grab anything we can't find online from our local stash + implementation fileTree(dir: 'local-libs', include: ['*.jar']) +} + +tasks.register('syncLibs', Copy) { + group = "PRISM" + description = "Downloads and copies JAR dependencies into the lib/ folder." + + dependsOn 'downloadPrismJars' + + // 1. Production Libs + from(configurations.runtimeClasspath) { + into "lib" + } + + // 2. Test Libs + from(configurations.testRunner) { + into "lib/test" + } + + // 3. Clean up version numbers (Optional) + // If your Makefile expects 'gson.jar' instead of 'gson-2.11.0.jar', + // uncomment the line below: + // rename { it.replaceAll(/-\d+\..*jar$/, ".jar") } + + // Anchor this task to the parent parent directory (prism/) + destinationDir = file("../..") + + // Optional: This ensures the task always runs if you call it, + // preventing Gradle from saying "Up-to-Date" if you've manually deleted a JAR. + outputs.upToDateWhen { false } +} + +tasks.register('cleanLibs', Delete) { + group = "PRISM" + description = "Deletes all JARs in the lib/ and lib/test/ folders." + delete fileTree("../../lib") { include "*.jar" } + delete "../../lib/test" +} diff --git a/prism/etc/jars/settings.gradle b/prism/etc/jars/settings.gradle new file mode 100644 index 0000000000..55eb04fbc6 --- /dev/null +++ b/prism/etc/jars/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'prism-dependency-manager' diff --git a/prism/lib/README.md b/prism/lib/README.md index c07c684f08..f7b891d1ad 100644 --- a/prism/lib/README.md +++ b/prism/lib/README.md @@ -1,19 +1,27 @@ -To simplify maintenance of scripts and config files, we mostly omit version numbers in the filenames of the various libraries included here. For reference, they are: +This folder contains the following libraries: -* colt.jar - Colt version 1.2.0 -* commons-compress.jar - Apache Commons Compress version 1.24.0 -* epsgraphics.jar - EPS Graphics version 1.0.0 -* fastutil.jar - fastutil version 8.5.15 -* gson.jar - Gson version 2.11.0 -* jas.jar - Java Algebra System (JAS) version 2.7.90 -* log4j-core.jar, log4j-api.jar - Apache Log4j version 2.16.0 (dependency of JAS) -* jcommon.jar - JCommon, version 1.0.16 -* jfreechart.jar - JFreeChart, version 1.0.13 -* jhoafparser.jar - jhoafparser, version 1.1.1 -* junit-platform-console-standalone.jar - JUnit 5 executable & dependencies, version 1.7.2 -* nailgun-server.jar - Nailgun, version 0.9.2-SNAPSHOT -* pepa.zip - PEPA-to-PRISM Compiler version 0.03.2 -* xz.jar - XZ for Java version 1.10 +``` ++--- colt:colt:1.2.0 +| \--- concurrent:concurrent:1.3.4 ++--- de.uni-mannheim.rz.krum:jas:2.7.90 +| \--- org.apache.logging.log4j:log4j-api:2.13.2 -> 2.17.1 ++--- org.jfree:jfreechart:1.0.14 +| +--- org.jfree:jcommon:1.0.17 +| +--- xml-apis:xml-apis:1.3.04 +| \--- com.lowagie:itext:2.1.5 +| +--- bouncycastle:bcmail-jdk14:138 +| \--- bouncycastle:bcprov-jdk14:138 ++--- org.jfree:jcommon:1.0.17 ++--- it.unimi.dsi:fastutil:8.5.15 ++--- org.apache.commons:commons-compress:1.24.0 ++--- org.tukaani:xz:1.10 ++--- com.google.code.gson:gson:2.11.0 +| \--- com.google.errorprone:error_prone_annotations:2.27.0 ++--- org.apache.logging.log4j:log4j-api:2.17.1 ++--- org.apache.logging.log4j:log4j-core:2.17.1 +| \--- org.apache.logging.log4j:log4j-api:2.17.1 +\--- org.junit.platform:junit-platform-console-standalone:1.7.2 +``` See here for more details and links: diff --git a/prism/lib/bcmail-jdk14-138.jar b/prism/lib/bcmail-jdk14-138.jar new file mode 100644 index 0000000000..ab606b5fea Binary files /dev/null and b/prism/lib/bcmail-jdk14-138.jar differ diff --git a/prism/lib/bcprov-jdk14-138.jar b/prism/lib/bcprov-jdk14-138.jar new file mode 100644 index 0000000000..d1befb7f06 Binary files /dev/null and b/prism/lib/bcprov-jdk14-138.jar differ diff --git a/prism/lib/colt.jar b/prism/lib/colt-1.2.0.jar similarity index 82% rename from prism/lib/colt.jar rename to prism/lib/colt-1.2.0.jar index be10fba78b..a7192f68b3 100644 Binary files a/prism/lib/colt.jar and b/prism/lib/colt-1.2.0.jar differ diff --git a/prism/lib/commons-compress.jar b/prism/lib/commons-compress-1.24.0.jar similarity index 100% rename from prism/lib/commons-compress.jar rename to prism/lib/commons-compress-1.24.0.jar diff --git a/prism/lib/concurrent-1.3.4.jar b/prism/lib/concurrent-1.3.4.jar new file mode 100644 index 0000000000..551f347142 Binary files /dev/null and b/prism/lib/concurrent-1.3.4.jar differ diff --git a/prism/lib/epsgraphics.jar b/prism/lib/epsgraphics-1.0.0.jar similarity index 100% rename from prism/lib/epsgraphics.jar rename to prism/lib/epsgraphics-1.0.0.jar diff --git a/prism/lib/error_prone_annotations-2.27.0.jar b/prism/lib/error_prone_annotations-2.27.0.jar new file mode 100644 index 0000000000..4ea471fc31 Binary files /dev/null and b/prism/lib/error_prone_annotations-2.27.0.jar differ diff --git a/prism/lib/fastutil.jar b/prism/lib/fastutil-8.5.15.jar similarity index 100% rename from prism/lib/fastutil.jar rename to prism/lib/fastutil-8.5.15.jar diff --git a/prism/lib/gson.jar b/prism/lib/gson-2.11.0.jar similarity index 100% rename from prism/lib/gson.jar rename to prism/lib/gson-2.11.0.jar diff --git a/prism/lib/itext-2.1.5.jar b/prism/lib/itext-2.1.5.jar new file mode 100644 index 0000000000..f28be38e38 Binary files /dev/null and b/prism/lib/itext-2.1.5.jar differ diff --git a/prism/lib/jas-2.7.90.jar b/prism/lib/jas-2.7.90.jar new file mode 100644 index 0000000000..4fe97bb23d Binary files /dev/null and b/prism/lib/jas-2.7.90.jar differ diff --git a/prism/lib/jas.jar b/prism/lib/jas.jar deleted file mode 100644 index a55a49a6fd..0000000000 Binary files a/prism/lib/jas.jar and /dev/null differ diff --git a/prism/lib/jcommon-1.0.17.jar b/prism/lib/jcommon-1.0.17.jar new file mode 100644 index 0000000000..6c5cd34e91 Binary files /dev/null and b/prism/lib/jcommon-1.0.17.jar differ diff --git a/prism/lib/jcommon.jar b/prism/lib/jcommon.jar deleted file mode 100755 index 4cd680744b..0000000000 Binary files a/prism/lib/jcommon.jar and /dev/null differ diff --git a/prism/lib/jfreechart.jar b/prism/lib/jfreechart-1.0.14.jar old mode 100755 new mode 100644 similarity index 54% rename from prism/lib/jfreechart.jar rename to prism/lib/jfreechart-1.0.14.jar index 83c6993181..0e4d020ad4 Binary files a/prism/lib/jfreechart.jar and b/prism/lib/jfreechart-1.0.14.jar differ diff --git a/prism/lib/jhoafparser.jar b/prism/lib/jhoafparser-1.1.1.jar similarity index 100% rename from prism/lib/jhoafparser.jar rename to prism/lib/jhoafparser-1.1.1.jar diff --git a/prism/lib/junit-platform-console-standalone.jar b/prism/lib/junit-platform-console-standalone-1.7.2.jar similarity index 100% rename from prism/lib/junit-platform-console-standalone.jar rename to prism/lib/junit-platform-console-standalone-1.7.2.jar diff --git a/prism/lib/log4j-api.jar b/prism/lib/log4j-api-2.17.1.jar similarity index 79% rename from prism/lib/log4j-api.jar rename to prism/lib/log4j-api-2.17.1.jar index 2cdcc4b07d..605c45d043 100644 Binary files a/prism/lib/log4j-api.jar and b/prism/lib/log4j-api-2.17.1.jar differ diff --git a/prism/lib/log4j-core.jar b/prism/lib/log4j-core-2.17.1.jar similarity index 82% rename from prism/lib/log4j-core.jar rename to prism/lib/log4j-core-2.17.1.jar index bc913bc531..bbead1267d 100644 Binary files a/prism/lib/log4j-core.jar and b/prism/lib/log4j-core-2.17.1.jar differ diff --git a/prism/lib/nailgun-server.jar b/prism/lib/nailgun-server-0.9.2-SNAPSHOT.jar similarity index 100% rename from prism/lib/nailgun-server.jar rename to prism/lib/nailgun-server-0.9.2-SNAPSHOT.jar diff --git a/prism/lib/pepa.jar b/prism/lib/pepa.jar new file mode 100644 index 0000000000..e7160c5665 Binary files /dev/null and b/prism/lib/pepa.jar differ diff --git a/prism/lib/pepa.zip b/prism/lib/pepa.zip deleted file mode 100644 index 83f83d3197..0000000000 Binary files a/prism/lib/pepa.zip and /dev/null differ diff --git a/prism/lib/xml-apis-1.3.04.jar b/prism/lib/xml-apis-1.3.04.jar new file mode 100644 index 0000000000..d42c0ea6cf Binary files /dev/null and b/prism/lib/xml-apis-1.3.04.jar differ diff --git a/prism/lib/xz.jar b/prism/lib/xz-1.10.jar similarity index 100% rename from prism/lib/xz.jar rename to prism/lib/xz-1.10.jar