| #!/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.") |