[Zope-Checkins] CVS: Zope/inst - Makefile.in:1.3 configure.py:1.3 setup.py:1.3
Chris McDonough
chrism@zope.com
Fri, 21 Mar 2003 16:35:04 -0500
Update of /cvs-repository/Zope/inst
In directory cvs.zope.org:/tmp/cvs-serv23313/inst
Modified Files:
Makefile.in configure.py setup.py
Log Message:
Allow for Zope's 'configure' to be run from outside the source directory.
When this is done, the makefile and all temp build files are written to
the directory from which you run configure. This is to support
Tres' desire to be able to install Zope from read-only media.
Perform minor cleanups, extensions, and refactorings of setup.py and
configure.py along the way.
=== Zope/inst/Makefile.in 1.2 => 1.3 ===
--- Zope/inst/Makefile.in:1.2 Tue Mar 18 16:27:49 2003
+++ Zope/inst/Makefile.in Fri Mar 21 16:35:03 2003
@@ -10,8 +10,17 @@
PACKAGE_NAME=${NAME}-${MAJOR_VERSION}.${MINOR_VERSION}-${RELEASE_TAG}
PYTHON="<<PYTHON>>"
-TARGET_DIR=<<TARGET_DIR>>
-BUILD_DIR=<<BUILD_DIR>>
+PREFIX=<<PREFIX>>
+BASE_DIR=<<BASE_DIR>>
+BUILD_BASE=<<BUILD_BASE>>
+DISTUTILS_OPTS=<<DISTUTILS_OPTS>>
+INSTALL_FLAGS=<<INSTALL_FLAGS>>
+BUILD_SUBDIR=build
+BUILD_FLAGS=--build-base="${BUILD_BASE}" \
+ --build-lib="${BUILD_BASE}/${BUILD_SUBDIR}" \
+ --build-scripts="${BUILD_BASE}/${BUILD_SUBDIR}/build_scripts.tmp" \
+ --build-temp="${BUILD_BASE}/${BUILD_SUBDIR}/build_temp.tmp"
+
RM=rm -f
RMRF=rm -rf
FIND=find
@@ -19,10 +28,8 @@
CD=cd
LN=ln -sf
CP=cp
-INSTALL_COPY=${PYTHON} inst/install.py
-WRITE_INFILE=${PYTHON} inst/file_from_infile.py
-.PHONY : clean install uninstall instance links hacklinks untestinst testinst
+.PHONY : clean install uninstall instance untestinst testinst
.PHONY : default
default: build
@@ -32,42 +39,45 @@
@echo
build:
- ${PYTHON} inst/setup.py <<DISTUTILS_OPTS>> build_ext -i
+ ${PYTHON} "${BASE_DIR}/inst/setup.py" \
+ ${DISTUTILS_OPTS} build ${BUILD_FLAGS}
install: build
- ${PYTHON} inst/setup.py <<DISTUTILS_OPTS>> install \
- --home="${TARGET_DIR}" <<OPT_FLAGS>>
+ ${PYTHON} "${BASE_DIR}/inst/setup.py" ${DISTUTILS_OPTS} install \
+ --home="${PREFIX}" ${BUILD_FLAGS} ${INSTALL_FLAGS}
@echo
@echo Zope binaries installed successfully.
- @echo Now run \'${TARGET_DIR}/bin/mkzopeinstance\'
+ @echo Now run \'${PREFIX}/bin/mkzopeinstance\'
-instance: build
- ${PYTHON} bin/mkzopeinstance .
+instance:
+ ${PYTHON} "${BASE_DIR}/inst/setup.py" ${DISTUTILS_OPTS} build_ext -i
+ ${PYTHON} "${BASE_DIR}/bin/mkzopeinstance" .
# testinst makes an instance home in the build directory without asking
# any questions. this is useful when testing. instances made with
# this can be removed via "make untestinst"
testinst: build
- ${PYTHON} bin/mkzopeinstance --user=admin:admin .
+ ${PYTHON} "${BASE_DIR}/inst/setup.py" ${DISTUTILS_OPTS} build_ext -i
+ ${PYTHON} "${BASE_DIR}/bin/mkzopeinstance" --user=admin:admin .
# remove the instance files made with testinst (w/ prejudice)
untestinst:
- ${RM} bin/zopectl.py
- ${RM} bin/ntservice.py
- ${RMRF} etc
- ${RMRF} log
+ ${RM} "${BASE_DIR}/bin/zopectl.py"
+ ${RM} "${BASE_DIR}/bin/ntservice.py"
+ ${RMRF} "${BASE_DIR}/etc"
+ ${RMRF} "${BASE_DIR}/log"
uninstall:
- ${RMRF} "${TARGET_DIR}"
+ ${RMRF} "${PREFIX}"
TESTOPTS=-v1 -d lib/python
test: build
- ${PYTHON} utilities/testrunner.py ${TESTOPTS}
+ ${PYTHON} "${BASE_DIR}/utilities/testrunner.py" ${TESTOPTS}
clean:
- ${RMRF} build lib/python/build
- ${FIND} . -name '*.py[co]' -o -name 'core*' | ${XARGS} ${RM}
+ ${RMRF} "${BUILD_BASE}/${BUILD_SUBDIR}"
+ ${FIND} "${BASE_DIR}" -name '*.py[co]' -o -name 'core*' | ${XARGS} ${RM}
clobber: clean untestinst
- ${FIND} lib/python -name '*.so' | ${XARGS} ${RM}
+ ${FIND} "${BASE_DIR}/lib/python" -name '*.so' | ${XARGS} ${RM}
=== Zope/inst/configure.py 1.2 => 1.3 ===
--- Zope/inst/configure.py:1.2 Tue Mar 18 16:27:49 2003
+++ Zope/inst/configure.py Fri Mar 21 16:35:03 2003
@@ -20,28 +20,28 @@
import versions
if sys.platform == 'win32':
- TARGET_DIR = 'c:\\Zope-' + versions.ZOPE_MAJOR_VERSION
+ PREFIX = 'c:\\Zope-' + versions.ZOPE_MAJOR_VERSION
IN_MAKEFILE = 'Makefile.win.in'
MAKE_COMMAND='the Visual C++ batch file "VCVARS32.bat" and then "nmake build"'
else:
- TARGET_DIR = '/opt/Zope-' + versions.ZOPE_MAJOR_VERSION
+ PREFIX = '/opt/Zope-' + versions.ZOPE_MAJOR_VERSION
IN_MAKEFILE = 'Makefile.in'
MAKE_COMMAND='make'
def main():
- # below assumes this script is in the BUILD_DIR/inst directory
- BUILD_DIR=os.path.abspath(os.path.dirname(os.path.dirname(sys.argv[0])))
+ # below assumes this script is in the BASE_DIR/inst directory
+ global PREFIX
+ BASE_DIR=os.path.abspath(os.path.dirname(os.path.dirname(sys.argv[0])))
+ BUILD_BASE=os.getcwd()
PYTHON=sys.executable
- MAKEFILE=open(os.path.join(BUILD_DIR, 'inst', IN_MAKEFILE)).read()
+ MAKEFILE=open(os.path.join(BASE_DIR, 'inst', IN_MAKEFILE)).read()
REQUIRE_LF_ENABLED = 1
REQUIRE_ZLIB=1
- OPT_FLAGS = ''
- zope_home = TARGET_DIR
- build_dir = BUILD_DIR
- python = PYTHON
+ INSTALL_FLAGS = ''
+ DISTUTILS_OPTS = ''
try:
longopts = ["help", "ignore-largefile", "ignore-zlib", "prefix=",
- "optimize"]
+ "build-base=", "optimize", "quiet"]
opts, args = getopt.getopt(sys.argv[1:], "h", longopts)
except getopt.GetoptError, v:
print v
@@ -52,36 +52,38 @@
usage()
sys.exit()
if o == '--prefix':
- zope_home=os.path.abspath(os.path.expanduser(a))
+ PREFIX=os.path.abspath(os.path.expanduser(a))
if o == "--ignore-largefile":
REQUIRE_LF_ENABLED=0
if o == "--ignore-zlib":
REQUIRE_ZLIB=0
if o == "--optimize":
- OPT_FLAGS = '--optimize=1 --no-compile'
+ INSTALL_FLAGS = '--optimize=1 --no-compile'
+ if o == '--build-base':
+ BUILD_BASE = a
+ if o == '--quiet':
+ DISTUTILS_OPTS = '-q'
if REQUIRE_LF_ENABLED:
test_largefile()
if REQUIRE_ZLIB:
test_zlib()
- print " - Zope top-level binary directory will be %s." % zope_home
- if OPT_FLAGS:
- print " - Distutils install flags will be '%s'" % OPT_FLAGS
- distutils_opts = ""
- if sys.version[:3] < "2.3":
- distutils_opts = "-q"
+ print " - Zope top-level binary directory will be %s." % PREFIX
+ if INSTALL_FLAGS:
+ print " - Distutils install flags will be '%s'" % INSTALL_FLAGS
idata = {
- '<<PYTHON>>':python,
- '<<TARGET_DIR>>':zope_home,
- '<<BUILD_DIR>>':build_dir,
- '<<OPT_FLAGS>>':OPT_FLAGS,
+ '<<PYTHON>>':PYTHON,
+ '<<PREFIX>>':PREFIX,
+ '<<BASE_DIR>>':BASE_DIR,
+ '<<BUILD_BASE>>':BUILD_BASE,
+ '<<INSTALL_FLAGS>>':INSTALL_FLAGS,
'<<ZOPE_MAJOR_VERSION>>':versions.ZOPE_MAJOR_VERSION,
'<<ZOPE_MINOR_VERSION>>':versions.ZOPE_MINOR_VERSION,
'<<VERSION_RELEASE_TAG>>':versions.VERSION_RELEASE_TAG,
- '<<DISTUTILS_OPTS>>':distutils_opts,
+ '<<DISTUTILS_OPTS>>':DISTUTILS_OPTS,
}
for k,v in idata.items():
MAKEFILE = MAKEFILE.replace(k, v)
- f = open(os.path.join(BUILD_DIR, 'makefile'), 'w')
+ f = open(os.path.join(BUILD_BASE, 'makefile'), 'w')
f.write(MAKEFILE)
print " - Makefile written."
print
@@ -109,14 +111,16 @@
--optimize compile Python files as .pyo files
instead of as .pyc files
-Installation directories:
+Directories:
- --prefix=DIR install Zope files in DIR [%(zope_home)s]
+ --build-base=DIR use DIR to store temporary build files
+
+ --prefix=DIR install Zope files in DIR [%(TARGET_DIR)s]
By default, 'make install' will install Zope software files in
'%(target_dir)s' You can specify an alternate location for these
files by using '--prefix', for example: '--prefix=$HOME/zope'.
-""" % ({'program':sys.argv[0], 'target_dir':TARGET_DIR})
+""" % ({'program':sys.argv[0], 'TARGET_DIR':TARGET_DIR})
)
print usage
=== Zope/inst/setup.py 1.2 => 1.3 ===
--- Zope/inst/setup.py:1.2 Tue Mar 18 16:27:49 2003
+++ Zope/inst/setup.py Fri Mar 21 16:35:03 2003
@@ -45,7 +45,6 @@
import sys
import distutils.core
-
from distutils.core import Extension
# This function collects setup information for one massive distutils
@@ -65,6 +64,7 @@
# globbing on data_files.
from distutils.command.install import install
+from distutils.command.build import build
from distutils.command.install_data import install_data
from distutils.util import convert_path
@@ -127,6 +127,27 @@
}
class ZopeInstall(install):
+ # give distutils install step knowledge about build file placement options
+ user_options = install.user_options + [
+ ('build-base=', None, 'base directory for build library'),
+ ('build-lib=', None, 'build directory for all distribution'),
+ ('build-scripts=', None, 'build directory for scripts'),
+ ('build-temp=', None, 'temporary build directory'),
+ ]
+ build_scripts = None
+ build_temp = None
+
+ def run(self):
+ """ Override run to pass along build location info so
+ we can use custom build directories """
+ build = self.distribution.get_command_obj('build')
+ build.build_base = self.build_base
+ build.build_lib = self.build_lib
+ build.build_scripts = self.build_scripts
+ build.build_temp = self.build_temp
+
+ install.run(self)
+
def select_scheme(self, name):
"""
Override the default platform installation schemes, ignoring whatever
@@ -150,20 +171,20 @@
distutils.core.Distribution.__init__(self, attrs)
self.cmdclass["install"] = ZopeInstall
self.cmdclass["install_data"] = ZopeInstallData
-
-# presumes we're currently cd'ed to the build root directory
-ZOPE_ROOT = os.path.abspath(os.getcwd())
+
+# presumes this script lives in the 'inst' subdirectory of the base dir
+BASE_DIR=os.path.abspath(os.path.dirname(os.path.dirname(sys.argv[0])))
AUTHOR = 'Zope Corporation and Contributors'
-EXTENSIONCLASS_ROOT = os.path.join(ZOPE_ROOT, 'lib', 'Components', 'ExtensionClass')
+EXTENSIONCLASS_ROOT = os.path.join(BASE_DIR, 'lib', 'Components',
+ 'ExtensionClass')
EXTENSIONCLASS_SRCDIR = os.path.join(EXTENSIONCLASS_ROOT, 'src')
-PACKAGES_ROOT = os.path.join(ZOPE_ROOT, 'lib', 'python')
EXTENSIONCLASS_INCLUDEDIRS = [EXTENSIONCLASS_SRCDIR]
# Most modules are in lib/python in the source distribution
+PACKAGES_ROOT = os.path.join(BASE_DIR, 'lib', 'python')
os.chdir(PACKAGES_ROOT)
-
# AccessControl
setup(
name='AccessControl',
@@ -997,19 +1018,19 @@
data_files=setup_info.get('data_files', []),
headers=setup_info.get('headers', []),
ext_modules=setup_info.get('ext_modules', []),
+ scripts=setup_info.get('scripts', []),
distclass=ZopeDistribution,
)
+
distutils.core.setup(
name='Zope',
author=AUTHOR,
-
py_modules=setup_info.get('py_modules', []),
- scripts=setup_info.get('scripts', []),
distclass=ZopeDistribution,
)
# The rest of these modules live in the root of the source tree
-os.chdir(ZOPE_ROOT)
+os.chdir(BASE_DIR)
def skel_visit(skel, dirname, names):
if "CVS" in names: