mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
114 lines
5.1 KiB
Python
114 lines
5.1 KiB
Python
#!/usr/bin/env python
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""examines environment, then:
|
|
- configures classpath as per environment or command-line options
|
|
- detects Tomcat (on Windows)
|
|
- detects or configures directories according to command-line options"""
|
|
|
|
import platform
|
|
import Utils,Node,Options,Logs,Scripting,Environment,Build,Configure
|
|
from os import unlink as _unlink, makedirs as _makedirs, getcwd as _getcwd, chdir as _chdir
|
|
from os.path import abspath as _abspath, basename as _basename, dirname as _dirname, exists as _exists, isdir as _isdir, split as _split, join as _join, sep, pathsep, pardir
|
|
from glob import glob as _glob
|
|
|
|
|
|
conf.check_tool('misc')
|
|
conf.check_tool('java')
|
|
conf.check_tool("gnu_dirs")
|
|
|
|
conf.check_message_1('Detecting distribution')
|
|
if platform.system() == 'Windows': conf.env.DISTRO = "Windows"
|
|
elif platform.system() == 'Darwin': conf.env.DISTRO = "Mac"
|
|
elif _exists("/etc/network"): conf.env.DISTRO = "Ubuntu"
|
|
elif _exists("/etc/fedora-release"): conf.env.DISTRO = "Fedora"
|
|
elif _exists("/etc/centos-release") or _exists("/etc/redhat-release"): conf.env.DISTRO = "CentOS"
|
|
else: conf.env.DISTRO = "unknown"
|
|
if conf.env.DISTRO == "unknown": c = "YELLOW"
|
|
else: c = "GREEN"
|
|
conf.check_message_2(conf.env.DISTRO,c)
|
|
|
|
# waf uses slashes somewhere along the line in some paths. we fix them on windows.
|
|
if conf.env.DISTRO in ['Windows']:
|
|
for pth in [ x for x in conf.env.get_merged_dict().keys() if x.endswith("DIR") ]:
|
|
conf.env[pth] = conf.env[pth].replace("/","\\")
|
|
|
|
conf.check_message_1('Detecting Tomcat')
|
|
tomcathome = getattr(Options.options, 'TOMCATHOME', '')
|
|
if tomcathome:
|
|
conf.env.TOMCATHOME = tomcathome
|
|
conf.check_message_2("%s (forced through --with-tomcat)"%conf.env.TOMCATHOME,"GREEN")
|
|
else:
|
|
if "TOMCAT_HOME" in conf.environ and conf.environ['TOMCAT_HOME'].strip():
|
|
conf.env.TOMCATHOME = conf.environ["TOMCAT_HOME"]
|
|
conf.check_message_2("%s (got through environment variable %%TOMCAT_HOME%%)"%conf.env.TOMCATHOME,"GREEN")
|
|
elif "CATALINA_HOME" in conf.environ and conf.environ['CATALINA_HOME'].strip():
|
|
conf.env.TOMCATHOME = conf.environ['CATALINA_HOME']
|
|
conf.check_message_2("%s (got through environment variable %%CATALINA_HOME%%)"%conf.env.TOMCATHOME,"GREEN")
|
|
elif _isdir("/usr/share/tomcat6"):
|
|
conf.env.TOMCATHOME = "/usr/share/tomcat6"
|
|
conf.check_message_2("%s (detected existence of system directory)"%conf.env.TOMCATHOME,"GREEN")
|
|
else:
|
|
conf.env.TOMCATHOME = _join(conf.env.DATADIR,'tomcat6')
|
|
conf.check_message_2("%s (assumed presence of Tomcat there)"%conf.env.TOMCATHOME,"GREEN")
|
|
|
|
conf.env.CLOUDBRIDGEPATH = _join(conf.env.PACKAGE,"management")
|
|
|
|
if conf.env.DISTRO in ['Windows','Mac']:
|
|
conf.env.CLOUDBRIDGEENVIRON = conf.env.TOMCATHOME
|
|
conf.env.CLOUDBRIDGESYSCONFDIR = _join(conf.env.TOMCATHOME,"conf")
|
|
conf.env.CLOUDBRIDGELOGDIR = _join(conf.env.TOMCATHOME,"logs")
|
|
else:
|
|
conf.env.CLOUDBRIDGEENVIRON = _join(conf.env.DATADIR,conf.env.CLOUDBRIDGEPATH)
|
|
conf.env.CLOUDBRIDGESYSCONFDIR = _join(conf.env.SYSCONFDIR,conf.env.CLOUDBRIDGEPATH)
|
|
conf.env.CLOUDBRIDGELOGDIR = _join(conf.env.LOCALSTATEDIR,"log",conf.env.CLOUDBRIDGEPATH)
|
|
|
|
conf.check_message_1('Detecting JAVADIR')
|
|
javadir = getattr(Options.options, 'JAVADIR', '')
|
|
if javadir:
|
|
conf.env.JAVADIR = javadir
|
|
conf.check_message_2("%s (forced through --javadir)"%conf.env.JAVADIR,"GREEN")
|
|
elif conf.env.DISTRO in ['Windows','Mac']:
|
|
conf.env.JAVADIR = _join(conf.env['TOMCATHOME'],'lib')
|
|
conf.check_message_2("%s (using Tomcat's lib/ directory)"%conf.env.JAVADIR,"GREEN")
|
|
else:
|
|
conf.env.JAVADIR = _join(conf.env.DATADIR,'java')
|
|
conf.check_message_2("%s (using default ${DATADIR}/java directory)"%conf.env.JAVADIR,"GREEN")
|
|
|
|
if conf.env.DISTRO in ["Windows","Mac"]:
|
|
conf.env.SYSTEMJAVADIR = conf.env.JAVADIR
|
|
else:
|
|
conf.env.SYSTEMJAVADIR = "/usr/share/java"
|
|
|
|
in_javadir = lambda name: _join(conf.env.JAVADIR,_basename(name)) # $PREFIX/share/java
|
|
in_system_javadir = lambda name: _join(conf.env.SYSTEMJAVADIR,name) # /usr/share/java
|
|
|
|
conf.check_message_1('Building classpaths')
|
|
|
|
# == Here we build the run-time classpaths ==
|
|
|
|
compilecp = []
|
|
compilecp+= [ jar for directory in ['lib','rampart-lib'] for jar in _glob(_join(directory,"*.jar")) ]
|
|
# 3. the system classpath (system-installed JARs)
|
|
conf.env.CLASSPATH = pathsep.join(compilecp)
|
|
conf.check_message_2('Done','GREEN')
|
|
|
|
conf.env.VERSION = Utils.g_module.VERSION
|
|
|
|
Utils.pprint("WHITE","Configure finished. Use 'python waf showconfig' to show the configure-time environment.")
|