Alien-SVN
view release on metacpan or search on metacpan
src/subversion/build/generator/gen_win.py view on Meta::CPAN
#
#
# 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.
#
#
#
# gen_win.py -- base class for generating windows projects
#
import os
try:
# Python >=2.5
from hashlib import md5 as hashlib_md5
except ImportError:
# Python <2.5
from md5 import md5 as hashlib_md5
import sys
import fnmatch
import re
import subprocess
import glob
import string
import generator.swig.header_wrappers
import generator.swig.checkout_swig_header
import generator.swig.external_runtime
if sys.version_info[0] >= 3:
# Python >=3.0
from io import StringIO
else:
# Python <3.0
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
import gen_base
import ezt
class GeneratorBase(gen_base.GeneratorBase):
"""This intermediate base class exists to be instantiated by win-tests.py,
in order to obtain information from build.conf and library paths without
actually doing any generation."""
_extension_map = {
('exe', 'target'): '.exe',
('exe', 'object'): '.obj',
('lib', 'target'): '.dll',
('lib', 'object'): '.obj',
('pyd', 'target'): '.pyd',
('pyd', 'object'): '.obj',
}
def parse_options(self, options):
self.apr_path = 'apr'
self.apr_util_path = 'apr-util'
self.apr_iconv_path = 'apr-iconv'
self.serf_path = None
self.serf_lib = None
self.bdb_path = 'db4-win32'
self.httpd_path = None
self.libintl_path = None
self.zlib_path = 'zlib'
self.openssl_path = None
self.jdk_path = None
self.junit_path = None
self.swig_path = None
self.vs_version = '2002'
self.sln_version = '7.00'
self.vcproj_version = '7.00'
self.vcproj_extension = '.vcproj'
self.sqlite_path = 'sqlite-amalgamation'
self.skip_sections = { 'mod_dav_svn': None,
'mod_authz_svn': None,
'mod_dontdothat' : None,
'libsvn_auth_kwallet': None,
'libsvn_auth_gnome_keyring': None }
# Instrumentation options
self.disable_shared = None
src/subversion/build/generator/gen_win.py view on Meta::CPAN
inc = sysconfig.get_python_inc()
plat = sysconfig.get_python_inc(plat_specific=1)
self.python_includes.append(inc)
if inc != plat:
self.python_includes.append(plat)
self.python_libdir = self.apath(sysconfig.PREFIX, "libs")
except ImportError:
pass
def _find_jdk(self):
if not self.jdk_path:
jdk_ver = None
try:
try:
# Python >=3.0
import winreg
except ImportError:
# Python <3.0
import _winreg as winreg
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\JavaSoft\Java Development Kit")
# Find the newest JDK version.
num_values = winreg.QueryInfoKey(key)[1]
for i in range(num_values):
(name, value, key_type) = winreg.EnumValue(key, i)
if name == "CurrentVersion":
jdk_ver = value
break
# Find the JDK path.
if jdk_ver is not None:
key = winreg.OpenKey(key, jdk_ver)
num_values = winreg.QueryInfoKey(key)[1]
for i in range(num_values):
(name, value, key_type) = winreg.EnumValue(key, i)
if name == "JavaHome":
self.jdk_path = value
break
winreg.CloseKey(key)
except (ImportError, EnvironmentError):
pass
if self.jdk_path:
print("Found JDK version %s in %s\n" % (jdk_ver, self.jdk_path))
else:
print("Using JDK in %s\n" % (self.jdk_path))
def _find_swig(self):
# Require 1.3.24. If not found, assume 1.3.25.
default_version = '1.3.25'
minimum_version = '1.3.24'
vernum = 103025
minimum_vernum = 103024
libdir = ''
if self.swig_path is not None:
self.swig_exe = os.path.abspath(os.path.join(self.swig_path, 'swig'))
else:
self.swig_exe = 'swig'
try:
outfp = subprocess.Popen([self.swig_exe, '-version'], stdout=subprocess.PIPE, universal_newlines=True).stdout
txt = outfp.read()
if txt:
vermatch = re.compile(r'^SWIG\ Version\ (\d+)\.(\d+)\.(\d+)$', re.M) \
.search(txt)
else:
vermatch = None
if vermatch:
version = tuple(map(int, vermatch.groups()))
# build/ac-macros/swig.m4 explains the next incantation
vernum = int('%d%02d%03d' % version)
print('Found installed SWIG version %d.%d.%d\n' % version)
if vernum < minimum_vernum:
print('WARNING: Subversion requires version %s\n'
% minimum_version)
libdir = self._find_swig_libdir()
else:
print('Could not find installed SWIG,'
' assuming version %s\n' % default_version)
self.swig_libdir = ''
outfp.close()
except OSError:
print('Could not find installed SWIG,'
' assuming version %s\n' % default_version)
self.swig_libdir = ''
self.swig_vernum = vernum
self.swig_libdir = libdir
def _find_swig_libdir(self):
fp = os.popen(self.swig_exe + ' -swiglib', 'r')
try:
libdir = fp.readline().rstrip()
if libdir:
print('Using SWIG library directory %s\n' % libdir)
return libdir
else:
print('WARNING: could not find SWIG library directory\n')
finally:
fp.close()
return ''
def _find_ml(self):
"Check if the ML assembler is in the path"
if not self.enable_ml:
self.have_ml = 0
return
fp = os.popen('ml /help', 'r')
try:
line = fp.readline()
if line:
msg = 'Found ML, ZLib build will use ASM sources'
self.have_ml = 1
else:
msg = 'Could not find ML, ZLib build will not use ASM sources'
self.have_ml = 0
print('%s\n' % (msg,))
finally:
fp.close()
( run in 1.663 second using v1.01-cache-2.11-cpan-385001e3568 )