Skip to content

Commit c898269

Browse files
authored
Merge pull request #508 from avinxshKD/fix/java-local-mkconcore
mkconcore: add local Java build/run/debug (#507)
2 parents 1ab06e2 + 0d1d68d commit c898269

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

mkconcore.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ def _resolve_concore_path():
156156
MATLABWIN = os.environ.get("CONCORE_MATLABWIN", "matlab") #Windows matlab
157157
OCTAVEEXE = os.environ.get("CONCORE_OCTAVEEXE", "octave") #Ubuntu/macOS octave
158158
OCTAVEWIN = os.environ.get("CONCORE_OCTAVEWIN", "octave") #Windows octave
159+
JAVACEXE = os.environ.get("CONCORE_JAVACEXE", "javac") #Ubuntu/macOS javac
160+
JAVACWIN = os.environ.get("CONCORE_JAVACWIN", "javac") #Windows javac
161+
JAVAEXE = os.environ.get("CONCORE_JAVAEXE", "java") #Ubuntu/macOS java
162+
JAVAWIN = os.environ.get("CONCORE_JAVAWIN", "java") #Windows java
159163
M_IS_OCTAVE = False #treat .m as octave
160164
MCRPATH = "~/MATLAB/R2021a" #path to local Ubunta Matlab Compiler Runtime
161165
DOCKEREXE = os.environ.get("DOCKEREXE", "docker")#default to docker, allow env override
@@ -196,6 +200,10 @@ def _resolve_concore_path():
196200
MATLABWIN = _tools.get("MATLABWIN", MATLABWIN)
197201
OCTAVEEXE = _tools.get("OCTAVEEXE", OCTAVEEXE)
198202
OCTAVEWIN = _tools.get("OCTAVEWIN", OCTAVEWIN)
203+
JAVACEXE = _tools.get("JAVACEXE", JAVACEXE)
204+
JAVACWIN = _tools.get("JAVACWIN", JAVACWIN)
205+
JAVAEXE = _tools.get("JAVAEXE", JAVAEXE)
206+
JAVAWIN = _tools.get("JAVAWIN", JAVAWIN)
199207

200208
prefixedgenode = ""
201209
sourcedir = os.path.abspath(sys.argv[2])
@@ -608,6 +616,16 @@ def cleanup_script_files():
608616
fcopy.write(fsource.read())
609617
fsource.close()
610618

619+
if 'java' in required_langs and concoretype != "docker":
620+
try:
621+
fsource = open(CONCOREPATH+"/concore.java")
622+
except (FileNotFoundError, IOError):
623+
print(CONCOREPATH+" is not correct path to concore (missing Java files)")
624+
quit()
625+
with open(outdir+"/src/concore.java","w") as fcopy:
626+
fcopy.write(fsource.read())
627+
fsource.close()
628+
611629
if 'm' in required_langs:
612630
try:
613631
fsource = open(CONCOREPATH+"/concore_default_maxtime.m")
@@ -1020,6 +1038,8 @@ def cleanup_script_files():
10201038
elif langext == "v":
10211039
# 6/25/21
10221040
fbuild.write("copy .\\src\\concore.v .\\" + containername + "\\concore.v\n")
1041+
elif langext == "java":
1042+
fbuild.write("copy .\\src\\concore.java .\\" + containername + "\\concore.java\n")
10231043
elif langext == "m": # 4/2/21
10241044
fbuild.write("copy .\\src\\concore_*.m .\\" + containername + "\\\n")
10251045
fbuild.write("copy .\\src\\import_concore.m .\\" + containername + "\\\n")
@@ -1037,6 +1057,8 @@ def cleanup_script_files():
10371057
fbuild.write("cp ./src/concore.hpp ./"+containername+"/concore.hpp\n")
10381058
elif langext == "v":
10391059
fbuild.write("cp ./src/concore.v ./"+containername+"/concore.v\n")
1060+
elif langext == "java":
1061+
fbuild.write("cp ./src/concore.java ./"+containername+"/concore.java\n")
10401062
elif langext == "m": # 4/2/21
10411063
fbuild.write("cp ./src/concore_*.m ./"+containername+"/\n")
10421064
fbuild.write("cp ./src/import_concore.m ./"+containername+"/\n")
@@ -1127,6 +1149,16 @@ def cleanup_script_files():
11271149
fdebug.write('cd ..\n')
11281150
fdebug.write('start /D '+q_container+' cmd /K vvp a.out\n')
11291151
#fdebug.write('start /D '+containername+' cmd /K "'+CPPWIN+' '+sourcecode+'|a"\n')
1152+
elif langext=="java":
1153+
javaclass = os.path.splitext(os.path.basename(sourcecode))[0]
1154+
frun.write('cd '+q_container+'\n')
1155+
frun.write(JAVACWIN+' '+q_source+'\n')
1156+
frun.write('cd ..\n')
1157+
frun.write('start /B /D '+q_container+' cmd /c '+JAVAWIN+' -cp .;..\\src\\jeromq.jar '+javaclass+' >'+q_container+'\\concoreout.txt\n')
1158+
fdebug.write('cd '+q_container+'\n')
1159+
fdebug.write(JAVACWIN+' '+q_source+'\n')
1160+
fdebug.write('cd ..\n')
1161+
fdebug.write('start /D '+q_container+' cmd /K '+JAVAWIN+' -cp .;..\\src\\jeromq.jar '+javaclass+'\n')
11301162
elif langext=="m": #3/23/21
11311163
# Use q_source in Windows commands to ensure quoting consistency
11321164
if M_IS_OCTAVE:
@@ -1168,6 +1200,17 @@ def cleanup_script_files():
11681200
fdebug.write('concorewd="$(pwd)"\n')
11691201
fdebug.write('osascript -e "tell application \\"Terminal\\" to do script \\"cd \\\\\\"$concorewd/' + safe_container + '\\\\\\"; ' + VEXE + ' ' + safe_source + '; vvp a.out\\"" \n')
11701202

1203+
elif langext == "java":
1204+
javaclass = os.path.splitext(os.path.basename(sourcecode))[0]
1205+
safe_javaclass = shlex.quote(javaclass)
1206+
frun.write('(cd ' + safe_container + '; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + ' >concoreout.txt & echo $! >concorepid) &\n')
1207+
if ubuntu:
1208+
fdebug.write('concorewd="$(pwd)"\n')
1209+
fdebug.write('xterm -e bash -c "cd \\"$concorewd/' + safe_container + '\\"; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + '; bash" &\n')
1210+
else:
1211+
fdebug.write('concorewd="$(pwd)"\n')
1212+
fdebug.write('osascript -e "tell application \\"Terminal\\" to do script \\"cd \\\\\\"$concorewd/' + safe_container + '\\\\\\\"; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + '\\"" \n')
1213+
11711214
elif langext == "sh": # 5/19/21
11721215
# FIX: Escape MCRPATH to prevent shell injection
11731216
safe_mcr = shlex.quote(MCRPATH)

0 commit comments

Comments
 (0)