From: Thomas Walker Lynch Date: Mon, 5 Aug 2024 14:49:00 +0000 (+0000) Subject: copmiled PrintBuildNameList X-Git-Url: https://git.reasoningtechnology.com/usr/lib/python2.7/functools.py?a=commitdiff_plain;h=8c2c57c545f7d8422a9f7069ff8cac6afa3bfd31;p=GQL-to-Cypher copmiled PrintBuildNameList --- diff --git a/developer/build.gradle b/developer/build.gradle deleted file mode 100644 index 50966c6..0000000 --- a/developer/build.gradle +++ /dev/null @@ -1,269 +0,0 @@ -// OpenAI assisted generation from the makefile .. a start on a gradle build file - -plugins { - id 'java' -} - -group 'com.example' -version '1.0-SNAPSHOT' - -sourceCompatibility = 1.8 - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.antlr:antlr4:4.9.2' // Include the ANTLR runtime library - testImplementation 'junit:junit:4.12' // Include JUnit for testing -} - -// Define environment variables -def javaHome = System.getenv('JAVA_HOME') -def antlrJar = file(System.getenv('ANTLR_JAR')) - -// Define directories -def antlrPrimaryDir = 'ANTLR' -def antlrInDir = "${antlrPrimaryDir}" -def antlrOutDir = 'javac/ANTLR' -def antlrOutDirParent = 'javac' -def tempDir = 'temporary' -def executorDir = 'executor' -def jvmOutDir = 'jvm' - -// Define program paths -def programPrintRuleNameList = "${executorDir}/PrintRuleNameList" -def programSyntaxTreeTest = "${executorDir}/SyntaxTree_Test" -def programSyntaxTree20240412 = "${executorDir}/SyntaxTree_20240412" - -// Define grammar files -def grammarFiles = fileTree(dir: antlrInDir, include: '**/*.g4') - -// Task to set up directories -task setup { - doLast { - mkdir antlrInDir - mkdir antlrOutDirParent - mkdir 'javac' - mkdir jvmOutDir - mkdir executorDir - mkdir 'test' - mkdir 'deprecated' - mkdir 'experiment' - mkdir 'documentation' - mkdir tempDir - } -} - -// Function to generate grammar tasks -def generateGrammarTask(String grammarName) { - task "generate${grammarName}Grammar" { - inputs.file file("${antlrInDir}/${grammarName}.g4") - outputs.dir antlrOutDir - - doLast { - println "Generating grammar files for: ${grammarName}" - exec { - commandLine "${javaHome}/bin/java", '-jar', antlrJar, '-Dlanguage=Java', '-visitor', '-o', antlrOutDirParent, file("${antlrInDir}/${grammarName}.g4") - } - } - } -} - -// Generate grammar tasks for each grammar file -grammarFiles.each { File file -> - def grammarName = file.name.replace('.g4', '') - generateGrammarTask(grammarName) -} - -// Define source sets -sourceSets { - main { - java { - srcDirs = ['javac', antlrOutDir] - } - } -} - -// Task to compile Java files -task compileJava(type: JavaCompile) { - source = sourceSets.main.java - classpath = sourceSets.main.compileClasspath - destinationDir = file(jvmOutDir) -} - -// Task to build JAR file -task buildJar(type: Jar) { - from compileJava.destinationDir - archiveBaseName.set('project') - destinationDirectory.set(file(jvmOutDir)) -} - -// Task to create an executable script -task createScript { - dependsOn buildJar - - doLast { - def jarFile = buildJar.archiveFile.get().asFile - def scriptFile = file("${executorDir}/${project.name}") - - scriptFile.text = """#!/usr/bin/env bash -${javaHome}/bin/java -cp ${jarFile} ${project.name} -""" - scriptFile.setExecutable(true) - } -} - -// Task to clean generated files -task clean(type: Delete) { - delete antlrOutDir - delete jvmOutDir - delete tempDir - delete programPrintRuleNameList - delete programSyntaxTreeTest - delete programSyntaxTree20240412 - delete fileTree(dir: executorDir, exclude: '.githolder') -} - -// Task to print version information -task printVersion { - doLast { - println "ANTLR Jar: ${antlrJar.name}" - println "Java version: ${javaHome}/bin/java -version".execute().text - println "Jar version: ${javaHome}/bin/jar --version".execute().text - println "Gradle version: ${gradle.gradleVersion}" - } -} - -// Default tasks -defaultTasks 'setup', 'generateGQLGrammar', 'compileJava', 'buildJar', 'createScript' - -// Set encoding for JavaCompile tasks -tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' -} - -// Task to build everything -task all { - dependsOn setup, 'generateGQLGrammar', compileJava, buildJar, createScript -} - -// Task to generate grammar files -task grammar { - dependsOn setup, 'generateGQLGrammar' -} - -// Task to compile Java files -task java { - dependsOn setup, compileJava -} - -// Task to clean temporary files -task cleanTemporary(type: Delete) { - delete tempDir -} - -// Task to clean all files -task cleanAll { - dependsOn clean -} - -// Task to clean all files except program files -task cleanAllMinus { - doLast { - delete tempDir - delete antlrOutDir - delete fileTree(dir: jvmOutDir, include: '**/*.class') - } -} - -// Task to clean program files -task cleanProgram { - doLast { - delete programPrintRuleNameList - delete programSyntaxTreeTest - delete programSyntaxTree20240412 - } -} - -// Task to clean class files -task cleanClass { - doLast { - delete fileTree(dir: jvmOutDir, include: '**/*.class') - } -} - -// Task to clean grammar files -task cleanGrammar { - doLast { - delete fileTree(dir: antlrOutDir, include: '**/*.java') - } -} - -// Task to clean a specific program -task cleanProgramSpecific { - doLast { - def programName = project.findProperty('program') ?: '' - if (programName) { - delete fileTree(dir: jvmOutDir, include: "${programName}.jar") - delete fileTree(dir: executorDir, include: "${programName}") - } else { - println "Usage: gradle cleanProgramSpecific -Pprogram=" - } - } -} - -// Task to clean a specific program and everything else -task cleanProgramPlusSpecific { - doLast { - def programName = project.findProperty('program') ?: '' - if (programName) { - delete fileTree(dir: jvmOutDir, include: "${programName}.jar") - delete fileTree(dir: executorDir, include: "${programName}") - delete tempDir - delete antlrOutDir - } else { - println "Usage: gradle cleanProgramPlusSpecific -Pprogram=" - } - } -} - -// Task to clean a specific program and everything else except program files -task cleanProgramMinusSpecific { - doLast { - def programName = project.findProperty('program') ?: '' - if (programName) { - delete fileTree(dir: jvmOutDir, include: "${programName}.jar") - delete fileTree(dir: executorDir, include: "${programName}") - delete tempDir - delete fileTree(dir: jvmOutDir, include: '**/*.class') - } else { - println "Usage: gradle cleanProgramMinusSpecific -Pprogram=" - } - } -} - -// Task to clean a specific grammar -task cleanGrammarSpecific { - doLast { - def grammarName = project.findProperty('grammar') ?: '' - if (grammarName) { - delete fileTree(dir: antlrOutDir, include: "${grammarName}*") - } else { - println "Usage: gradle cleanGrammarSpecific -Pgrammar=" - } - } -} - -// Define tasks for each program -task buildPrintRuleNameList { - dependsOn setup, 'generateGQLGrammar', compileJava -} - -task buildSyntaxTreeTest { - dependsOn setup, 'generateSyntaxTreeGrammar', compileJava -} - -task buildSyntaxTree20240412 { - dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava -} diff --git a/developer/deprecated/build.gradle b/developer/deprecated/build.gradle new file mode 100644 index 0000000..50966c6 --- /dev/null +++ b/developer/deprecated/build.gradle @@ -0,0 +1,269 @@ +// OpenAI assisted generation from the makefile .. a start on a gradle build file + +plugins { + id 'java' +} + +group 'com.example' +version '1.0-SNAPSHOT' + +sourceCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.antlr:antlr4:4.9.2' // Include the ANTLR runtime library + testImplementation 'junit:junit:4.12' // Include JUnit for testing +} + +// Define environment variables +def javaHome = System.getenv('JAVA_HOME') +def antlrJar = file(System.getenv('ANTLR_JAR')) + +// Define directories +def antlrPrimaryDir = 'ANTLR' +def antlrInDir = "${antlrPrimaryDir}" +def antlrOutDir = 'javac/ANTLR' +def antlrOutDirParent = 'javac' +def tempDir = 'temporary' +def executorDir = 'executor' +def jvmOutDir = 'jvm' + +// Define program paths +def programPrintRuleNameList = "${executorDir}/PrintRuleNameList" +def programSyntaxTreeTest = "${executorDir}/SyntaxTree_Test" +def programSyntaxTree20240412 = "${executorDir}/SyntaxTree_20240412" + +// Define grammar files +def grammarFiles = fileTree(dir: antlrInDir, include: '**/*.g4') + +// Task to set up directories +task setup { + doLast { + mkdir antlrInDir + mkdir antlrOutDirParent + mkdir 'javac' + mkdir jvmOutDir + mkdir executorDir + mkdir 'test' + mkdir 'deprecated' + mkdir 'experiment' + mkdir 'documentation' + mkdir tempDir + } +} + +// Function to generate grammar tasks +def generateGrammarTask(String grammarName) { + task "generate${grammarName}Grammar" { + inputs.file file("${antlrInDir}/${grammarName}.g4") + outputs.dir antlrOutDir + + doLast { + println "Generating grammar files for: ${grammarName}" + exec { + commandLine "${javaHome}/bin/java", '-jar', antlrJar, '-Dlanguage=Java', '-visitor', '-o', antlrOutDirParent, file("${antlrInDir}/${grammarName}.g4") + } + } + } +} + +// Generate grammar tasks for each grammar file +grammarFiles.each { File file -> + def grammarName = file.name.replace('.g4', '') + generateGrammarTask(grammarName) +} + +// Define source sets +sourceSets { + main { + java { + srcDirs = ['javac', antlrOutDir] + } + } +} + +// Task to compile Java files +task compileJava(type: JavaCompile) { + source = sourceSets.main.java + classpath = sourceSets.main.compileClasspath + destinationDir = file(jvmOutDir) +} + +// Task to build JAR file +task buildJar(type: Jar) { + from compileJava.destinationDir + archiveBaseName.set('project') + destinationDirectory.set(file(jvmOutDir)) +} + +// Task to create an executable script +task createScript { + dependsOn buildJar + + doLast { + def jarFile = buildJar.archiveFile.get().asFile + def scriptFile = file("${executorDir}/${project.name}") + + scriptFile.text = """#!/usr/bin/env bash +${javaHome}/bin/java -cp ${jarFile} ${project.name} +""" + scriptFile.setExecutable(true) + } +} + +// Task to clean generated files +task clean(type: Delete) { + delete antlrOutDir + delete jvmOutDir + delete tempDir + delete programPrintRuleNameList + delete programSyntaxTreeTest + delete programSyntaxTree20240412 + delete fileTree(dir: executorDir, exclude: '.githolder') +} + +// Task to print version information +task printVersion { + doLast { + println "ANTLR Jar: ${antlrJar.name}" + println "Java version: ${javaHome}/bin/java -version".execute().text + println "Jar version: ${javaHome}/bin/jar --version".execute().text + println "Gradle version: ${gradle.gradleVersion}" + } +} + +// Default tasks +defaultTasks 'setup', 'generateGQLGrammar', 'compileJava', 'buildJar', 'createScript' + +// Set encoding for JavaCompile tasks +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' +} + +// Task to build everything +task all { + dependsOn setup, 'generateGQLGrammar', compileJava, buildJar, createScript +} + +// Task to generate grammar files +task grammar { + dependsOn setup, 'generateGQLGrammar' +} + +// Task to compile Java files +task java { + dependsOn setup, compileJava +} + +// Task to clean temporary files +task cleanTemporary(type: Delete) { + delete tempDir +} + +// Task to clean all files +task cleanAll { + dependsOn clean +} + +// Task to clean all files except program files +task cleanAllMinus { + doLast { + delete tempDir + delete antlrOutDir + delete fileTree(dir: jvmOutDir, include: '**/*.class') + } +} + +// Task to clean program files +task cleanProgram { + doLast { + delete programPrintRuleNameList + delete programSyntaxTreeTest + delete programSyntaxTree20240412 + } +} + +// Task to clean class files +task cleanClass { + doLast { + delete fileTree(dir: jvmOutDir, include: '**/*.class') + } +} + +// Task to clean grammar files +task cleanGrammar { + doLast { + delete fileTree(dir: antlrOutDir, include: '**/*.java') + } +} + +// Task to clean a specific program +task cleanProgramSpecific { + doLast { + def programName = project.findProperty('program') ?: '' + if (programName) { + delete fileTree(dir: jvmOutDir, include: "${programName}.jar") + delete fileTree(dir: executorDir, include: "${programName}") + } else { + println "Usage: gradle cleanProgramSpecific -Pprogram=" + } + } +} + +// Task to clean a specific program and everything else +task cleanProgramPlusSpecific { + doLast { + def programName = project.findProperty('program') ?: '' + if (programName) { + delete fileTree(dir: jvmOutDir, include: "${programName}.jar") + delete fileTree(dir: executorDir, include: "${programName}") + delete tempDir + delete antlrOutDir + } else { + println "Usage: gradle cleanProgramPlusSpecific -Pprogram=" + } + } +} + +// Task to clean a specific program and everything else except program files +task cleanProgramMinusSpecific { + doLast { + def programName = project.findProperty('program') ?: '' + if (programName) { + delete fileTree(dir: jvmOutDir, include: "${programName}.jar") + delete fileTree(dir: executorDir, include: "${programName}") + delete tempDir + delete fileTree(dir: jvmOutDir, include: '**/*.class') + } else { + println "Usage: gradle cleanProgramMinusSpecific -Pprogram=" + } + } +} + +// Task to clean a specific grammar +task cleanGrammarSpecific { + doLast { + def grammarName = project.findProperty('grammar') ?: '' + if (grammarName) { + delete fileTree(dir: antlrOutDir, include: "${grammarName}*") + } else { + println "Usage: gradle cleanGrammarSpecific -Pgrammar=" + } + } +} + +// Define tasks for each program +task buildPrintRuleNameList { + dependsOn setup, 'generateGQLGrammar', compileJava +} + +task buildSyntaxTreeTest { + dependsOn setup, 'generateSyntaxTreeGrammar', compileJava +} + +task buildSyntaxTree20240412 { + dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava +} diff --git a/developer/deprecated/makefil_clean b/developer/deprecated/makefil_clean new file mode 100644 index 0000000..7cc647e --- /dev/null +++ b/developer/deprecated/makefil_clean @@ -0,0 +1,105 @@ +# 1. clean:temporary - removes files from ./temporary +# 2. General clean targets: +# clean:all - removes all things make built, and thus can be replaced by running make again. +# clean:all- (minus after the all) same as clean:all except for the program files (and their .jar if any) +# clean:program - all program files, i.e. ./exector/ and ./jvm/ for all programs. +# clean:class - class files +# clean:grammar - all generated grammar files + +# 2. +# clean:program: +# similear to clean:program, but only for the named program + +# clean:program+: +# bascially clean:all but only for the named program + +# clean:program-: +# baiscally clean:all- but only for the named program + +# 3. clean:grammar: +# siimilar to clean:grammar, but only for the named grammar + +# Function to clean a list of files +# Accepts a list of files as an argument and deletes the files in the list +# without complaining if a file is not found +define clean_files + echo "Cleaning files: $1";\ + for file in $1; do \ + if [ -e "$$file" ]; then \ + echo rm -f "$$file"; \ + rm -f "$$file"; \ + fi; \ + done +endef + + +# Function to clean the contents of a directory +# Accepts a directory as an argument, checks that the argument is not empty, +# ensures the directory exists, and then deletes the contents of the directory +# (excluding a file called .githolder) +define clean_directory + if [ -z "$1" ]; then \ + echo "Error: Directory argument is empty"; \ + elif [ ! -d "$1" ]; then \ + echo "Error: Directory $1 does not exist"; \ + else \ + : echo "Cleaning directory: $1"; \ + find "$1" -mindepth 1 -maxdepth 1 ! -name '.githolder' -exec rm -rf {} +; \ + touch "$1/.githolder"; \ + fi +endef + +# Function to handle individual cleaning +# Accepts a single option and removes the appropriate files +define do_clean + echo "Cleaning files for option: $1";\ + if [ "$1" = "" ]; then \ + echo "Usage: make clean:< all[-] | program[+/-][:] | grammar[:] | class | temp[orary] >"; \ + elif [ "$1" = "temporary" -o "$1" = "temp" ]; then \ + $(call clean_directory,$(TEMP_DIR)); \ + elif [ "$1" = "all" ]; then \ + $(call clean_directory,$(TEMP_DIR)); \ + $(call clean_files,$(ANTLR_OUT_FPL)); \ + $(call clean_files,$(JAVA_COMP_OUT_FPL)); \ + $(call clean_files,$(PROGRAM_FPL)); \ + elif [ "$1" = "all-" ]; then \ + $(call clean_directory,$(TEMP_DIR)); \ + $(call clean_files,$(ANTLR_OUT_FPL)); \ + $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \ + elif [ "$1" = "program" ]; then \ + $(call clean_files,$(PROGRAM_FPL)); \ + elif [ "$1" = "class" ]; then \ + $(call clean_files,$(JAVA_COMP_OUT_FPL)); \ + elif [ "$1" = "grammar" ]; then \ + $(call clean_files,$(ANTLR_OUT_FPL)); \ + elif [ "$1" = "program:"* ]; then \ + program_name=$${1#program:}; \ + $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \ + elif [ "$1" = "program+:"* ]; then \ + program_name=$${1#program+:}; \ + $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \ + $(call clean_directory,$(TEMP_DIR)); \ + $(call clean_files,$(ANTLR_OUT_FPL)); \ + elif [ "$1" = "program-:"* ]; then \ + program_name=$${1#program-:}; \ + $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \ + $(call clean_directory,$(TEMP_DIR)); \ + $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \ + elif [ "$1" = "grammar:"* ]; then \ + grammar_name=$${1#grammar:}; \ + $(call clean_files,$(ANTLR_OUT_DIR)/$${grammar_name}*); \ + else \ + echo "Unknown clean option: $1"; \ + fi +endef + +# Default clean target +.PHONY: clean +clean: + @echo "Usage: make clean:< all[-] | program[+/-][:] | grammar[:] | class | temp[orary] >" + +# Clean specific program or option +# Calls the do_clean function with the pattern as an argument +.PHONY: clean\:% +clean\:%: + @$(call do_clean,$*) diff --git a/developer/executor/PrintRuleNameList b/developer/executor/PrintRuleNameList new file mode 100755 index 0000000..9114f23 --- /dev/null +++ b/developer/executor/PrintRuleNameList @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +/var/user_data/Thomas-developer/GQL_to_Cypher/tool/jdk-22.0.1+8/bin/java -cp jvm/PrintRuleNameList.jar PrintRuleNameList diff --git a/developer/executor/make b/developer/executor/make index 2902fcf..34112ba 100755 --- a/developer/executor/make +++ b/developer/executor/make @@ -2,5 +2,5 @@ cd "$REPO_HOME"/developer || { echo "Failed to change directory to" "$REPO_HOME"/developer; exit 1; } -/usr/bin/make -k $@ +/usr/bin/make --no-builtin-rules --keep-going $@ diff --git a/developer/makefile b/developer/makefile index 8b2ccb2..a7c70f9 100644 --- a/developer/makefile +++ b/developer/makefile @@ -119,9 +119,9 @@ all: setup $(PROGRAM_FPL) grammar: setup $(ANTLR_OUT_FPL) # specific programs or program versions: -PrintRuleNameList: $(PrintRuleNameList) -SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FPL) $(SyntaxTree_Test) -SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FPL) $(SyntaxTree_20240412) +PrintRuleNameList: $(PROGRAM_PrintRuleNameList) +SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FPL) $(PROGRAM_SyntaxTree_Test) +SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FPL) $(PROGRAM_SyntaxTree_20240412) # Specific grammar targets. Run them like this: # > make @@ -213,7 +213,7 @@ setup: # Accepts a list of files as an argument and deletes the files in the list # without complaining if a file is not found define clean_files - @echo "Cleaning files: $1";\ + echo "Cleaning files: $1";\ for file in $1; do \ if [ -e "$$file" ]; then \ echo rm -f "$$file"; \ @@ -311,16 +311,31 @@ $(ANTLR_OUT_DIR)/%Visitor.java: $(ANTLR_IN_DIR)/%.g4 @echo "making grammar from:" $< $(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $< -# Generic recipe for building .jar files and placing scripts in the executor directory $(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java @echo "Building $*..." $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $< $(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class + @echo "Created $@" +.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar executor/%: $(JAVA_COMP_OUT_DIR)/%.jar @echo "Creating script for $*..." - echo "#!/usr/bin/env bash\n$(JAVA_INTERP) -cp $@ $*" > executor/$* + @echo "#!/usr/bin/env bash" > executor/$* + @echo "$(JAVA_INTERP) -cp $< $*" >> executor/$* chmod +x executor/$* + @echo "Created script executor/$*" + +# # Generic recipe for building .jar files and placing scripts in the executor directory +# $(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java +# @echo "Building $*..." +# $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $< +# $(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class + +# executor/%: $(JAVA_COMP_OUT_DIR)/%.jar +# @echo "Creating script for $*..." +# @echo "#!/usr/bin/env bash" > executor/$* +# @echo "$(JAVA_INTERP) -cp $< $*" >> executor/$* +# chmod +x executor/$* # LocalWords: makefile