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