mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-19 03:57:21 +00:00
93 lines
3.0 KiB
Python
93 lines
3.0 KiB
Python
import os
|
|
import shutil
|
|
|
|
NAME = 'jvm'
|
|
|
|
JVM_INCPATH = None
|
|
JVM_LIBPATH = None
|
|
|
|
operating_system = os.uname()[0].lower()
|
|
|
|
try:
|
|
arch = os.environ['JVM_ARCH']
|
|
except:
|
|
arch = os.uname()[4].lower()
|
|
|
|
if arch in ('i686', 'x86', 'x86_32'):
|
|
arch = 'i386'
|
|
elif arch in ('x86_64',):
|
|
arch = 'amd64'
|
|
elif arch.startswith('arm'):
|
|
arch = 'arm'
|
|
|
|
# try to detect the JVM
|
|
if operating_system == 'darwin':
|
|
known_jvms = ('/System/Library/Frameworks/JavaVM.framework/Headers',)
|
|
for jvm in known_jvms:
|
|
if os.path.exists(jvm):
|
|
JVM_INCPATH = ["-Wno-deprecated-declarations", "-I%s" % jvm]
|
|
JVM_LIBPATH = ["-framework JavaVM"]
|
|
elif operating_system.startswith('cygwin'):
|
|
JVM_INCPATH = ['-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include"', '-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include/win32"']
|
|
JVM_LIBPATH = ['-L"/cygdrive/c/Program Files/Java/jdk1.7.0_17/jre/bin/server"']
|
|
else:
|
|
known_jvms = ('/usr/lib/jvm/java-7-openjdk', '/usr/local/openjdk7', '/usr/lib/jvm/java-6-openjdk', '/usr/local/openjdk', '/usr/java', '/usr/lib/jvm/java/')
|
|
for jvm in known_jvms:
|
|
if os.path.exists(jvm + '/include'):
|
|
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
|
|
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
|
|
break
|
|
if os.path.exists("%s-%s/include" % (jvm, arch)):
|
|
jvm = "%s-%s" % (jvm, arch)
|
|
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
|
|
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
|
|
break
|
|
|
|
try:
|
|
JVM_INCPATH = ['-I"' + os.environ['UWSGICONFIG_JVM_INCPATH'] + '"']
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
JVM_LIBPATH = ['-L"' + os.environ['UWSGICONFIG_JVM_LIBPATH'] + '"']
|
|
except:
|
|
pass
|
|
|
|
if not JVM_INCPATH or not JVM_LIBPATH:
|
|
print("unable to autodetect the JVM path, please specify UWSGICONFIG_JVM_INCPATH and UWSGICONFIG_JVM_LIBPATH environment vars")
|
|
os._exit(1)
|
|
|
|
CFLAGS = JVM_INCPATH
|
|
LDFLAGS = JVM_LIBPATH
|
|
LIBS = ['-ljvm']
|
|
if "-framework JavaVM" in JVM_LIBPATH:
|
|
LIBS = []
|
|
|
|
GCC_LIST = ['jvm_plugin']
|
|
|
|
if 'LD_RUN_PATH' in os.environ:
|
|
os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:]
|
|
else:
|
|
os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:]
|
|
|
|
|
|
def post_build(config):
|
|
if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0:
|
|
os._exit(1)
|
|
if os.system("cd %s/plugins/jvm ; jar cvf uwsgi.jar *.class" % os.getcwd()) != 0:
|
|
os._exit(1)
|
|
print("*** uwsgi.jar available in %s/plugins/jvm/uwsgi.jar ***" % os.getcwd())
|
|
|
|
env = os.environ.get('VIRTUAL_ENV')
|
|
if env:
|
|
src = "%s/plugins/jvm/uwsgi.jar" % os.getcwd()
|
|
tgt = "%s/lib/uwsgi.jar" % env
|
|
shutil.copyfile(src, tgt)
|
|
print("*** uwsgi.jar had been copied to %s" % tgt)
|
|
|
|
plugin = "%s/jvm_plugin.so" % os.getcwd()
|
|
if os.path.exists(plugin):
|
|
tgt = "%s/bin/jvm_plugin.so" % env
|
|
shutil.copyfile(plugin, tgt)
|
|
print("*** jvm_plugin.so had been copied to %s" % tgt)
|