2
# -*- mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
3
# vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
5
# Copyright (C) 2010 Patrick Crews
9
definition of what a code tree should look like
10
to the test-runner (which files /directories it should find where)
12
Files paths can be in one of several locations that we locate via
21
""" Defines what files / directories we should find and where
22
allows for optional / required.
26
def __init__(self, variables, system_manager):
27
self.debug = variables['debug']
28
self.system_manager = system_manager
29
self.logging = system_manager.logging
31
def debug_status(self):
32
self.logging.debug(self)
33
for key, item in sorted(vars(self).items()):
34
self.logging.debug("%s: %s" %(key, item))
36
class drizzleTree(codeTree):
37
""" What a Drizzle code tree should look like to the test-runner
41
def __init__(self, variables,system_manager):
42
self.system_manager = system_manager
43
self.logging = self.system_manager.logging
44
self.skip_keys = ['ld_preloads']
45
self.debug = variables['debug']
46
self.verbose = variables['verbose']
47
self.basedir = self.system_manager.find_path([variables['basedir']])
48
self.source_dist = os.path.isdir(os.path.join(self.basedir, 'drizzled'))
49
self.builddir = self.system_manager.find_path([self.basedir])
50
self.testdir = self.system_manager.find_path([variables['testdir']])
51
self.clientbindir = self.system_manager.find_path([os.path.join(self.builddir, 'client')
52
, os.path.join(self.basedir, 'client')
53
, os.path.join(self.basedir, 'bin')])
54
self.srcdir = self.system_manager.find_path([self.basedir])
55
self.suite_paths = [ os.path.join(self.basedir,'plugin')
56
, os.path.join(self.testdir,'suite')
60
self.drizzleadmin = self.system_manager.find_path([os.path.join(self.clientbindir,
63
self.drizzle_client = self.system_manager.find_path([os.path.join(self.clientbindir,
66
self.drizzledump = self.system_manager.find_path([os.path.join(self.clientbindir,
69
self.drizzleimport = self.system_manager.find_path([os.path.join(self.clientbindir,
72
self.drizzle_server = self.system_manager.find_path([os.path.join(self.basedir,'drizzled/drizzled'),
73
os.path.join(self.clientbindir,'drizzled'),
74
os.path.join(self.basedir,'libexec/drizzled'),
75
os.path.join(self.basedir,'bin/drizzled'),
76
os.path.join(self.basedir,'sbin/drizzled'),
77
os.path.join(self.builddir,'drizzled/drizzled')])
80
self.drizzleslap = self.system_manager.find_path([os.path.join(self.clientbindir,
83
self.schemawriter = self.system_manager.find_path([os.path.join(self.basedir,
84
'drizzled/message/schema_writer'),
85
os.path.join(self.builddir,
86
'drizzled/message/schema_writer')])
88
self.drizzletest = self.system_manager.find_path([os.path.join(self.clientbindir,
91
self.server_version_string = None
92
self.server_executable = None
93
self.server_version = None
94
self.server_compile_os = None
95
self.server_platform = None
96
self.server_compile_comment = None
99
self.process_server_version()
100
self.ld_preloads = self.get_ld_preloads()
105
self.logging.debug_class(self)
108
self.logging.info("Using Drizzle source tree:")
109
report_keys = ['basedir'
116
for key in report_keys:
117
self.logging.info("%s: %s" %(key, vars(self)[key]))
121
def process_server_version(self):
122
""" Get the server version number from the found server executable """
123
(retcode, self.server_version_string) = self.system_manager.execute_cmd(("%s --no-defaults --version" %(self.drizzle_server)))
124
# This is a bit bobo, but we're doing it, so nyah
126
self.server_executable, data_string = [data_item.strip() for data_item in self.server_version_string.split('Ver ')]
127
self.server_version, data_string = [data_item.strip() for data_item in data_string.split('for ')]
128
self.server_compile_os, data_string = [data_item.strip() for data_item in data_string.split(' on')]
129
self.server_platform = data_string.split(' ')[0].strip()
130
self.server_comment = data_string.replace(self.server_platform,'').strip()
132
def get_ld_preloads(self):
133
""" Return a list of paths we want added to LD_PRELOAD
135
These are processed later by the system manager, but we want to
136
specify them here (for a drizzle source tree) and now
139
ld_preload_paths = []
141
ld_preload_paths = [ os.path.join(self.basedir,"libdrizzleclient/.libs/")
142
, os.path.join(self.basedir,"mysys/.libs/")
143
, os.path.join(self.basedir,"mystrings/.libs/")
144
, os.path.join(self.basedir,"drizzled/.libs/")
148
ld_preload_paths = [ os.path.join(self.basedir,"lib")]
149
return ld_preload_paths