diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6d3ee52e70e84a3a2cd506b91ad3e72d8b355f0e..4531723af147a188a1fe2f382f7afc4d2de3b725 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,11 +6,9 @@ stages: - test build: - image: openjdk:8 + image: openjdk:11 stage: build script: - # see discussion in the answer of https://stackoverflow.com/questions/44911155/gradle-how-to-include-runtimeonly-dependencies-in-javaexec-classpath - - ./gradlew --console=plain --no-daemon relast.preprocessor:jar - ./gradlew --console=plain --no-daemon assemble jar artifacts: paths: @@ -18,7 +16,7 @@ build: test: - image: openjdk:8 + image: openjdk:11 stage: test script: - ./gradlew --console=plain --no-daemon check diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ef6ee67ef918ae615118351e1223fe4ceddf6f4b..0000000000000000000000000000000000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "relast.preprocessor"] - path = relast.preprocessor - url = ../../relast-preprocessor.git diff --git a/build.gradle b/build.gradle index 78228deb83ea2c2acc14174e6a61f64f129d167f..3e8eb6674186b6586ab3a8b0bca7c95c0a229939 100644 --- a/build.gradle +++ b/build.gradle @@ -14,11 +14,20 @@ application.mainClassName = "${mainClassName}" repositories { mavenCentral() + maven { + name 'gitlab-maven' + url 'https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven' + } +} + +configurations { + relast } dependencies { - implementation project(':relast.preprocessor') - testImplementation testFixtures(project(":relast.preprocessor")) + relast group: 'org.jastadd', name: 'relast', version: "${relast_version}" + implementation group: 'org.jastadd', name: 'relast-preprocessor', version: "${preprocessor_version}" + testImplementation testFixtures(group: 'org.jastadd', name: 'relast-preprocessor', version: "${preprocessor_version}") } project.version = "0.2.0" @@ -35,20 +44,37 @@ test { maxHeapSize = '1G' } +task extractJastAddSources(type: Sync) { + + dependsOn configurations.runtimeClasspath + configurations.runtimeClasspath.asFileTree.filter { it.toString().endsWith("relast-preprocessor-${preprocessor_version}.jar") }.collect { + from(zipTree(it)) { + include "**/*.jrag" + include "**/*.jadd" + include "**/*.ast" + include "**/*.relast" + include "**/*.flex" + include "**/*.parser" + } + } + includeEmptyDirs false + into file("${project.buildDir}/tmp/jastadd-sources") +} + jar { manifest { attributes "Main-Class": "${mainClassName}" } from { - configurations.runtimeClasspath.collect { return (it.exists() && (!it.toString().contains("/build/libs/")|| it.toString().contains("-base-"))) ? (it.isDirectory() ? it : zipTree(it)) : null } + configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it) } } } // Input and output files for relast def relastInputFiles = [ - "relast.preprocessor/src/main/jastadd/RelAst.relast", - "relast.preprocessor/src/main/jastadd/mustache/Mustache.relast" + "${project.buildDir}/tmp/jastadd-sources/RelAst.relast", + "${project.buildDir}/tmp/jastadd-sources/mustache/Mustache.relast" ] def relastOutputFiles = [ "src/gen/jastadd/RelAst.ast", @@ -59,8 +85,11 @@ def relastOutputFiles = [ task relast(type: JavaExec) { - classpath = files("relast.preprocessor/libs/relast.jar") group = 'Build' + classpath = configurations.relast + mainClass = 'org.jastadd.relast.compiler.Compiler' + + dependsOn extractJastAddSources doFirst { delete relastOutputFiles @@ -88,9 +117,9 @@ jastadd { jastadd { basedir "." - include "relast.preprocessor/src/main/jastadd/**/*.ast" - include "relast.preprocessor/src/main/jastadd/**/*.jadd" - include "relast.preprocessor/src/main/jastadd/**/*.jrag" + include "build/tmp/jastadd-sources/**/*.ast" + include "build/tmp/jastadd-sources/**/*.jadd" + include "build/tmp/jastadd-sources/**/*.jrag" include "src/main/jastadd/**/*.ast" include "src/main/jastadd/**/*.jadd" include "src/main/jastadd/**/*.jrag" @@ -100,18 +129,18 @@ jastadd { } scanner { - include "relast.preprocessor/src/main/jastadd/scanner/Header.flex", [-4] - include "relast.preprocessor/src/main/jastadd/scanner/Preamble.flex", [-3] - include "relast.preprocessor/src/main/jastadd/scanner/Macros.flex", [-2] - include "relast.preprocessor/src/main/jastadd/scanner/RulesPreamble.flex", [-1] - include "relast.preprocessor/src/main/jastadd/scanner/Keywords.flex", [ 0] - include "relast.preprocessor/src/main/jastadd/scanner/Symbols.flex", [ 1] - include "relast.preprocessor/src/main/jastadd/scanner/RulesPostamble.flex", [ 2] + include "build/tmp/jastadd-sources/scanner/Header.flex", [-4] + include "build/tmp/jastadd-sources/scanner/Preamble.flex", [-3] + include "build/tmp/jastadd-sources/scanner/Macros.flex", [-2] + include "build/tmp/jastadd-sources/scanner/RulesPreamble.flex", [-1] + include "build/tmp/jastadd-sources/scanner/Keywords.flex", [ 0] + include "build/tmp/jastadd-sources/scanner/Symbols.flex", [ 1] + include "build/tmp/jastadd-sources/scanner/RulesPostamble.flex", [ 2] } parser { - include "relast.preprocessor/src/main/jastadd/parser/Preamble.parser" - include "relast.preprocessor/src/main/jastadd/parser/RelAst.parser" + include "build/tmp/jastadd-sources/parser/Preamble.parser" + include "build/tmp/jastadd-sources/parser/RelAst.parser" } } } @@ -142,5 +171,4 @@ jastadd { } clean.dependsOn(cleanGen) -generateAst.dependsOn(relast) -jar.dependsOn("relast.preprocessor:jar") // the jar is a fat jar that contains the jar of the preprocessor +generateAst.dependsOn(relast, extractJastAddSources) diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000000000000000000000000000000000..47cf02494925ad66bdfcd8d4d74ab2e1f5de6fc2 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +relast_version = 0.3.0-137 +preprocessor_version = 0.1.0-41 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fcce76360e8b69fa3d4558417ff5929b9b2ca6e6..41dfb87909a877d96c3af4adccce4c7a301b55a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Nov 01 15:07:09 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3..4f906e0c811fc9e230eb44819f509cd0627f2600 100755 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 24467a141f791695fc1009c78d913b2c849d1412..ac1b06f93825db68fb0c0b5150917f340eaa5d02 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/relast.preprocessor b/relast.preprocessor deleted file mode 160000 index cee30f5c8a1b356118f5ed78302a1df64fe76897..0000000000000000000000000000000000000000 --- a/relast.preprocessor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cee30f5c8a1b356118f5ed78302a1df64fe76897 diff --git a/src/test/resources/RelAstPreprocessor/config.yaml b/src/test/resources/RelAstPreprocessor/config.yaml index 0122f6c7a6cfb15f71004cc97bf1a413d6b55b2f..87455fb34c67de257f17c68970a281ba98aa5095 100644 --- a/src/test/resources/RelAstPreprocessor/config.yaml +++ b/src/test/resources/RelAstPreprocessor/config.yaml @@ -1,7 +1,7 @@ - name: "RelAST Preprocessor Grammar from submodule (null)" - in: "../../../../relast.preprocessor/src/main/jastadd/" + in: "../../../../build/tmp/jastadd-sources/" args: - - "--inputBaseDir=../../../../relast.preprocessor/src/main/jastadd/" + - "--inputBaseDir=../../../../build/tmp/jastadd-sources/" - "--outputBaseDir=out" - "--errorHandling=null" - "RelAst.relast"