
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2502 fd906abe-77d9-0310-91a1-e0d9ade77398
108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
#! /usr/bin/env python
|
|
#
|
|
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
|
|
"""
|
|
Entry point for the loops application.
|
|
|
|
$Id$
|
|
"""
|
|
|
|
import os, sys
|
|
|
|
|
|
softwareHome = None
|
|
instanceHome = configFile = None
|
|
|
|
|
|
def setWindowsEnvironment():
|
|
global softwareHome, instanceHome, configFile
|
|
basedir = os.path.dirname(os.path.realpath(__file__))
|
|
if basedir.endswith('library.zip'):
|
|
basedir = os.path.dirname(basedir)
|
|
libdir = os.path.join(basedir, 'Lib')
|
|
softwareHome = os.path.join(libdir, 'site-packages')
|
|
instanceHome = os.path.join(basedir, 'instance')
|
|
configFile = os.path.join(instanceHome, 'etc', 'zope.conf')
|
|
sys.path.insert(0, libdir)
|
|
sys.path.insert(0, softwareHome)
|
|
sys.path.insert(0, os.path.join(basedir, 'DLLs'))
|
|
sys.path.insert(0, os.path.join(instanceHome, 'lib', 'python'))
|
|
|
|
|
|
def setZopeEnvironment():
|
|
global softwareHome, instanceHome, configFile
|
|
curdir = os.path.dirname(os.path.realpath(__file__))
|
|
#for i in range(5):
|
|
for i in range(3):
|
|
curdir = os.path.dirname(curdir)
|
|
instanceHome = curdir
|
|
if softwareHome is None:
|
|
softwareHome = os.path.join(os.path.dirname(instanceHome), 'lib', 'python')
|
|
configFile = os.path.join(instanceHome, 'etc', 'zope.conf')
|
|
sys.path[:] = sys.path[1:] # remove script directory
|
|
sys.path.insert(0, softwareHome)
|
|
sys.path.insert(0, os.path.join(instanceHome, 'lib', 'python'))
|
|
os.environ['USE_RLIBRARY'] = '' # do not use the R statistics library
|
|
|
|
|
|
def setInstanceHomeInZopeConf():
|
|
zc = open(configFile)
|
|
l1 = zc.readline()
|
|
rest = zc.read()
|
|
zc.close()
|
|
command, key, value = [w.strip() for w in l1.split()]
|
|
if command == '%define' and key == 'INSTANCE' and value != instanceHome:
|
|
print 'INSTANCE variable changed from %s to %s.' % (value, instanceHome)
|
|
l1 = ' '.join((command, key, instanceHome)) + '\n'
|
|
zc = open(configFile, 'w')
|
|
zc.write(l1)
|
|
zc.write(rest)
|
|
zc.close()
|
|
|
|
|
|
def startZope(configFile):
|
|
# set up the agent application
|
|
from cybertools.agent.main import setup
|
|
#setup()
|
|
# start Zope using the twisted server
|
|
from zope.app.twisted.main import main
|
|
try:
|
|
main(["-C", configFile])
|
|
except IOError, e:
|
|
if str(e) == '[Errno 11] Resource temporarily unavailable':
|
|
print 'WARNING: Background process already running.'
|
|
#from startup import openBrowser
|
|
#openBrowser(None)
|
|
|
|
|
|
def main():
|
|
""" Called from loops.exe (=deploy/start.py). """
|
|
setWindowsEnvironment()
|
|
setInstanceHomeInZopeConf()
|
|
startZope(configFile)
|
|
|
|
|
|
def mainZope():
|
|
""" Start in a regular Zope instance. """
|
|
setZopeEnvironment()
|
|
startZope(configFile)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
mainZope()
|