[Zope-Checkins] CVS: Zope/lib/python/ZEO - mkzeoinst.py:1.17
Richard Jones
rjones@ekit-inc.com
Fri, 4 Apr 2003 00:04:18 -0500
Update of /cvs-repository/Zope/lib/python/ZEO
In directory cvs.zope.org:/tmp/cvs-serv1086/lib/python/ZEO
Modified Files:
mkzeoinst.py
Log Message:
I've fixed the various scripts etc. in the CVS so that I can now install a ZEO client/server setup. The way it actually ended up working is:
- runzope.py and zopectl.py are moved to Zope/Startup/run.py and Zope/zdaemon/zopectl.py respectively
- bin/mkzopeinstance now takes a "-z/--zeo host:port" which sets up a custom_zodb.py in the new zope instance home
- bin/mkzeoinstance now overrides less, because...
- ZEO/mkzeoinst.py generates an additional script, runzeo, which is the "runner" for the ZEO server. Both it an the zeoctl script need to know about the ZOPE_HOME, so that's been added to the scripts (via the params)
- fixed setup.py so it installed ZEO/schema.xml
=== Zope/lib/python/ZEO/mkzeoinst.py 1.16 => 1.17 ===
--- Zope/lib/python/ZEO/mkzeoinst.py:1.16 Thu Apr 3 02:11:03 2003
+++ Zope/lib/python/ZEO/mkzeoinst.py Fri Apr 4 00:03:47 2003
@@ -23,16 +23,12 @@
<home>/etc/zeoctl.conf -- zdctl+zdrun config file
<home>/var/ -- Directory for data files: Data.fs etc.
<home>/log/ -- Directory for log files: zeo.log and zeoctl.log
+<home>/bin/runzeo -- the zeo server runner
<home>/bin/zeoctl -- start/stop script (a shim for zdctl.py)
The script will not overwrite existing files; instead, it will issue a
warning if an existing file is found that differs from the file that
would be written if it didn't exist.
-
-The script assumes that runzeo.py, zdrun.py, and zdctl.py can be found
-on the shell's $PATH, and that their #! line names the right Python
-interpreter. When you use the ZODB3 setup.py script to install the
-ZODB3 software, this is taken care of.
"""
# WARNING! Several templates and functions here are reused by ZRS.
@@ -45,7 +41,7 @@
zeo_conf_template = """# ZEO configuration file
-%%define INSTANCE %(home)s
+%%define INSTANCE_HOME %(instance_home)s
<zeo>
address %(port)d
@@ -56,24 +52,24 @@
</zeo>
<filestorage 1>
- path $INSTANCE/var/Data.fs
+ path $INSTANCE_HOME/var/Data.fs
</filestorage>
<eventlog>
level info
<logfile>
- path $INSTANCE/log/zeo.log
+ path $INSTANCE_HOME/log/zeo.log
</logfile>
</eventlog>
"""
runner_conf_template = """# %(package)sctl configuration file
-%%define INSTANCE %(home)s
+%%define INSTANCE_HOME %(instance_home)s
<runner>
- program %(python)s %(server)s -C $INSTANCE/etc/%(package)s.conf
- socket-name $INSTANCE/etc/%(package)s.zdsock
+ program $INSTANCE_HOME/bin/runzeo
+ socket-name $INSTANCE_HOME/etc/%(package)s.zdsock
daemon true
forever false
backoff-limit 10
@@ -82,16 +78,16 @@
default-to-interactive true
# user zope
python %(python)s
- zdrun %(zdrun)s
+ zdrun %(zope_home)s/zdaemon/zdrun.py
# This logfile should match the one in the %(package)s.conf file.
# It is used by zdctl's logtail command, zdrun/zdctl doesn't write it.
- logfile $INSTANCE/log/%(package)s.log
+ logfile $INSTANCE_HOME/log/%(package)s.log
</runner>
<eventlog>
level info
<logfile>
- path $INSTANCE/log/%(package)sctl.log
+ path $INSTANCE_HOME/log/%(package)sctl.log
</logfile>
</eventlog>
"""
@@ -107,16 +103,41 @@
# chkconfig: 345 90 10
# description: start a %(PACKAGE)s server
-INSTANCE='%(home)s'
+PYTHON="%(python)s"
+ZOPE_HOME="%(zope_home)s"
+INSTANCE_HOME="%(instance_home)s"
+
+CONFIG_FILE="$INSTANCE_HOME/etc/%(package)sctl.conf"
+
+PYTHONPATH="$ZOPE_HOME"
+export PYTHONPATH
+
+ZDCTL="$ZOPE_HOME/zdaemon/zdctl.py"
+
+exec "$PYTHON" "$ZDCTL" -C "$CONFIG_FILE" ${1+"$@"}
+"""
+
+runzeo_template = """#!/bin/sh
+# %(PACKAGE)s instance start script
+
+PYTHON="%(python)s"
+ZOPE_HOME="%(zope_home)s"
+INSTANCE_HOME="%(instance_home)s"
-exec %(python)s %(zdctl)s -C "$INSTANCE/etc/%(package)sctl.conf" ${1+"$@"}
+CONFIG_FILE="$INSTANCE_HOME/etc/%(package)s.conf"
+
+PYTHONPATH="$ZOPE_HOME"
+export PYTHONPATH
+
+ZEO_RUN="$ZOPE_HOME/ZEO/runzeo.py"
+
+exec "$PYTHON" "$ZEO_RUN" -C "$CONFIG_FILE" ${1+"$@"}
"""
def main():
ZEOInstanceBuilder().run()
print "All done."
-
class ZEOInstanceBuilder:
def run(self):
try:
@@ -133,27 +154,36 @@
if len(args) not in [1, 2]:
print "Usage: %s home [port]" % program
sys.exit(2)
- home = args[0]
- if not os.path.isabs(home):
- home = os.path.abspath(home)
+
+ instance_home = args[0]
+ if not os.path.isabs(instance_home):
+ instance_home = os.path.abspath(instance_home)
+
+ for entry in sys.path:
+ if os.path.exists(os.path.join(entry, 'Zope')):
+ zope_home = entry
+ break
+ else:
+ print "Can't find the Zope home (not in sys.path)"
+ sys.exit(2)
+
if args[1:]:
port = int(args[1])
else:
port = 9999
checkport(port)
- params = self.get_params(home, port)
- self.create(home, params)
- def get_params(self, home, port):
+ params = self.get_params(zope_home, instance_home, port)
+ self.create(instance_home, params)
+
+ def get_params(self, zope_home, instance_home, port):
return {
"package": "zeo",
"PACKAGE": "ZEO",
- "home": home,
+ "zope_home": zope_home,
+ "instance_home": instance_home,
"port": port,
"python": sys.executable,
- "server": which("runzeo.py"),
- "zdrun": which("zdrun.py"),
- "zdctl": which("zdctl.py"),
}
def create(self, home, params):
@@ -165,6 +195,7 @@
makefile(zeo_conf_template, home, "etc", "zeo.conf", **params)
makefile(runner_conf_template, home, "etc", "zeoctl.conf", **params)
makexfile(zdctl_template, home, "bin", "zeoctl", **params)
+ makexfile(runzeo_template, home, "bin", "runzeo", **params)
def checkport(port):