[pywin32-checkins] pywin32 setup_win32all_core.py,1.5,1.6
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
|
From: <th...@us...> - 2003-11-05 21:30:07
|
Update of /cvsroot/pywin32/pywin32
In directory sc8-pr-cvs1:/tmp/cvs-serv3209
Modified Files:
setup_win32all_core.py
Log Message:
There is a chance for distutils, even in the win32all build process!
This encourages me to further work on this script.
The specialized code for pywintypes and pythoncom should be clearer
now, at least to me. Unfortunately, I broke mingw32 support.
But even before this, I get compilation errors with mingw. An example:
win32/src/PyACL.cpp: In function `BOOL _ReorderACL(_ACL*)':
win32/src/PyACL.cpp:89: `ACCESS_DENIED_OBJECT_ACE_TYPE' undeclared (first use
this function)
win32/src/PyACL.cpp:89: (Each undeclared identifier is reported only once for
each function it appears in.)
error: command 'gcc' failed with exit status 1
If someone tells me how this can be fixed I'll happy to also bring
this up to date for mingw.
swig is now supported (.i sources are parsed out of the dsp files),
and I can at least build
pywintypes, win32api, win32file, win32event, pythoncom.
Whether they work or not - I cannot currently tell.
install_lib does no longer work, requires rethought:
Some files should be installed in the normal way, others go into sysdir.
Index: setup_win32all_core.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/setup_win32all_core.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** setup_win32all_core.py 22 Aug 2003 19:58:27 -0000 1.5
--- setup_win32all_core.py 5 Nov 2003 21:10:27 -0000 1.6
***************
*** 8,11 ****
--- 8,12 ----
from distutils.command.build_ext import build_ext
from distutils.dep_util import newer_group
+ from distutils import log
import os, string, sys
***************
*** 33,37 ****
include_dirs = ['com/win32com/src/include',
'win32/src'] + include_dirs
! libraries = ['user32', 'odbc32', 'advapi32',
'oleaut32', 'ole32', 'shell32'] + libraries
--- 34,38 ----
include_dirs = ['com/win32com/src/include',
'win32/src'] + include_dirs
! libraries = ['user32', 'odbc32', 'advapi32', 'version',
'oleaut32', 'ole32', 'shell32'] + libraries
***************
*** 74,78 ****
fields = line.strip().split("=", 2)
if fields[0]=="SOURCE":
! if os.path.splitext(fields[1])[1].lower() in ['.cpp', '.c']:
pathname = os.path.normpath(os.path.join(dsp_path, fields[1]))
result.append(pathname)
--- 75,79 ----
fields = line.strip().split("=", 2)
if fields[0]=="SOURCE":
! if os.path.splitext(fields[1])[1].lower() in ['.cpp', '.c', '.i']:
pathname = os.path.normpath(os.path.join(dsp_path, fields[1]))
result.append(pathname)
***************
*** 81,116 ****
################################################################
- pywintypes = WinExt('pywintypes',
- dsp_file = r"win32\PyWinTypes.dsp",
- extra_compile_args = ['-DBUILD_PYWINTYPES']
- )
-
- pythoncom = WinExt('pythoncom',
- dsp_file=r"com\win32com.dsp",
- export_symbol_file = 'com/win32com/src/PythonCOM.def',
- ## libraries = ['PyWintypes'],
- extra_compile_args = ['-DBUILD_PYTHONCOM'],
- )
-
-
class my_install_lib (install_lib):
# A special install_lib command, which will install into the windows
# system directory instead of Lib/site-packages
def finalize_options(self):
install_lib.finalize_options(self)
self.install_dir = os.getenv("windir") + '\\system32'
- WINVER = tuple(map(int, string.split(sys.winver, '.')))
-
- REGNAMES = {'pywintypes': 'PyWinTypes%d%d' % WINVER,
- 'pythoncom': 'PythonCOM%d%d' % WINVER,
- }
-
-
class my_build_ext(build_ext):
def finalize_options(self):
build_ext.finalize_options(self)
!
self.library_dirs.append(self.build_temp)
self.mingw32 = (self.compiler == "mingw32")
--- 82,100 ----
################################################################
class my_install_lib (install_lib):
# A special install_lib command, which will install into the windows
# system directory instead of Lib/site-packages
+
+ # XXX Currently broken. Should only install pywintypes and pythoncom into sysdir
def finalize_options(self):
install_lib.finalize_options(self)
self.install_dir = os.getenv("windir") + '\\system32'
class my_build_ext(build_ext):
def finalize_options(self):
build_ext.finalize_options(self)
! # The pywintypes library is created in the build_temp
! # directory, so we need to add this to library_dirs
self.library_dirs.append(self.build_temp)
self.mingw32 = (self.compiler == "mingw32")
***************
*** 121,126 ****
# some source files are compiled for different extensions
# with special defines. So we cannot use a shared
! # directory for objects, we must use special ones.
! old_temp = self.build_temp
try:
self.build_temp = os.path.join(self.build_temp, ext.name)
--- 105,110 ----
# some source files are compiled for different extensions
# with special defines. So we cannot use a shared
! # directory for objects, we must use a special one for each extension.
! old_build_temp = self.build_temp
try:
self.build_temp = os.path.join(self.build_temp, ext.name)
***************
*** 128,178 ****
build_ext.build_extension(self, ext)
! # After building an extension with non-standard target filename,
! # copy the .lib-file created to the original name.
! name = REGNAMES.get(ext.name, ext.name)
! from distutils.file_util import copy_file, move_file
! extra = ''
! if self.debug:
! extra = '_d'
! if self.mingw32:
! prefix = 'lib'
! extra = extra + '.a'
! else:
! prefix = ''
! extra = extra + '.lib'
# MSVCCompiler constructs the .lib file in the same directory
# as the first source file's object file:
# os.path.dirname(objects[0])
src = os.path.join(self.build_temp,
os.path.dirname(ext.sources[0]),
! prefix + name + extra)
! dst = os.path.join(self.build_temp, "..", prefix + ext.name + extra)
self.copy_file(src, dst)#, update=1)
finally:
! self.build_temp = old_temp
! def get_libraries(self, ext):
! libs = build_ext.get_libraries(self, ext)
! result = []
! for lib in libs:
! plib = REGNAMES.get(string.lower(lib), None)
! if plib and self.debug:
! plib = plib + '_d'
! if plib:
! result.append(plib)
else:
! result.append(lib)
! return result
! def get_ext_filename(self, name):
! fname = build_ext.get_ext_filename(self, name)
! base, ext = os.path.splitext(fname)
! newbase = REGNAMES.get(name, fname)
! if self.debug:
! return newbase + '_d' + '.dll'
! return newbase + '.dll'
setup(name="PyWinTypes",
--- 112,217 ----
build_ext.build_extension(self, ext)
! if ext.name not in ("pywintypes", "pythoncom"):
! return
!
! # The import libraries are created as PyWinTypes23.lib, but
! # are expected to be pywintypes.lib.
!
! # XXX This has to be changed for mingw32
! extra = self.debug and "_d.lib" or ".lib"
! if ext.name == "pywintypes":
! name1 = "pywintypes%d%d%s" % (sys.version_info[0], sys.version_info[1], extra)
! name2 = "pywintypes%s" % (extra)
! elif ext.name == "pythoncom":
! name1 = "pythoncom%d%d%s" % (sys.version_info[0], sys.version_info[1], extra)
! name2 = "pythoncom%s" % (extra)
# MSVCCompiler constructs the .lib file in the same directory
# as the first source file's object file:
# os.path.dirname(objects[0])
+ # but we want it in the (old) build_temp directory
src = os.path.join(self.build_temp,
os.path.dirname(ext.sources[0]),
! name1)
! dst = os.path.join(old_build_temp, name2)
self.copy_file(src, dst)#, update=1)
finally:
! self.build_temp = old_build_temp
+ def get_ext_filename(self, name):
+ # The pywintypes and pythoncom extensions have special names
+ if name == "pywintypes":
+ extra = self.debug and "_d.dll" or ".dll"
+ return "pywintypes%d%d%s" % (sys.version_info[0], sys.version_info[1], extra)
+ elif name == "pythoncom":
+ extra = self.debug and "_d.dll" or ".dll"
+ return "pythoncom%d%d%s" % (sys.version_info[0], sys.version_info[1], extra)
+ return build_ext.get_ext_filename(self, name)
! def find_swig (self):
! # We know where swig is
! os.environ["SWIG_LIB"] = os.path.abspath(r"swig\swig_lib")
! return os.path.abspath(r"swig\swig.exe")
!
! def swig_sources (self, sources):
! new_sources = []
! swig_sources = []
! swig_targets = {}
! # XXX this drops generated C/C++ files into the source tree, which
! # is fine for developers who want to distribute the generated
! # source -- but there should be an option to put SWIG output in
! # the temp dir.
! target_ext = '.cpp'
! for source in sources:
! (base, ext) = os.path.splitext(source)
! if ext == ".i": # SWIG interface file
! # Seems the files SWIG creates are not compiled separately,
! # they are #included somewhere else. So we don't include
! # the generated wrapper in the new_sources list.
! swig_sources.append(source)
! # and win32all has it's own naming convention for the wrappers:
! swig_targets[source] = base + 'module_win32' + target_ext
else:
! new_sources.append(source)
! if not swig_sources:
! return new_sources
!
! swig = self.find_swig()
! swig_cmd = [swig, "-python"]
! if self.swig_cpp:
! swig_cmd.append("-c++")
!
! for source in swig_sources:
! target = swig_targets[source]
! log.info("swigging %s to %s", source, target)
! self.spawn(swig_cmd + ["-o", target, source])
!
! return new_sources
!
! ################################################################
!
! pywintypes = WinExt('pywintypes',
! dsp_file = r"win32\PyWinTypes.dsp",
! extra_compile_args = ['-DBUILD_PYWINTYPES']
! )
!
! pythoncom = WinExt('pythoncom',
! dsp_file=r"com\win32com.dsp",
! export_symbol_file = 'com/win32com/src/PythonCOM.def',
! extra_compile_args = ['-DBUILD_PYTHONCOM'],
! )
!
! win32api = WinExt('win32api',
! dsp_file = r"win32\win32api.dsp")
!
! win32file = WinExt('win32file',
! dsp_file = r"win32\win32file.dsp")
!
! win32event = WinExt('win32event',
! dsp_file = r"win32\win32event.dsp")
!
! ################################################################
setup(name="PyWinTypes",
***************
*** 185,193 ****
license="???",
! cmdclass = { 'install_lib': my_install_lib,
'build_ext': my_build_ext,
},
! ext_modules = [pywintypes, pythoncom],
## packages=['win32',
--- 224,232 ----
license="???",
! cmdclass = { #'install_lib': my_install_lib,
'build_ext': my_build_ext,
},
! ext_modules = [pywintypes, win32api, win32file, win32event, pythoncom],
## packages=['win32',
***************
*** 229,231 ****
## ],
)
-
--- 268,269 ----
|