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
7
# This program is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 2 of the License, or
10
# (at your option) any later version.
12
# This program is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
17
# You should have received a copy of the GNU General Public License
18
# along with this program; if not, write to the Free Software
19
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23
definition of what a code tree should look like
24
to the test-runner (which files /directories it should find where)
26
Files paths can be in one of several locations that we locate via
35
""" Defines what files / directories we should find and where
36
allows for optional / required.
40
def __init__(self, variables, system_manager):
41
self.debug = variables['debug']
42
self.system_manager = system_manager
43
self.logging = system_manager.logging
45
def debug_status(self):
46
self.logging.debug(self)
47
for key, item in sorted(vars(self).items()):
48
self.logging.debug("%s: %s" %(key, item))
50
class drizzleTree(codeTree):
51
""" What a Drizzle code tree should look like to the test-runner
55
def __init__(self, variables,system_manager):
56
self.system_manager = system_manager
57
self.logging = self.system_manager.logging
58
self.skip_keys = ['ld_lib_paths']
59
self.debug = variables['debug']
60
self.verbose = variables['verbose']
61
self.basedir = self.system_manager.find_path([os.path.abspath(variables['basedir'])])
62
self.source_dist = os.path.isdir(os.path.join(self.basedir, 'drizzled'))
63
self.builddir = self.system_manager.find_path([os.path.abspath(self.basedir)])
64
self.testdir = self.system_manager.find_path([os.path.abspath(variables['testdir'])])
65
self.clientbindir = self.system_manager.find_path([os.path.join(self.builddir, 'client')
66
, os.path.join(self.basedir, 'client')
67
, os.path.join(self.basedir, 'bin')])
68
self.srcdir = self.system_manager.find_path([self.basedir])
69
self.suite_paths = [ os.path.join(self.basedir,'plugin')
70
, os.path.join(self.testdir,'suite')
74
self.drizzleadmin = self.system_manager.find_path([os.path.join(self.clientbindir,
77
self.drizzle_client = self.system_manager.find_path([os.path.join(self.clientbindir,
80
self.drizzledump = self.system_manager.find_path([os.path.join(self.clientbindir,
83
self.drizzleimport = self.system_manager.find_path([os.path.join(self.clientbindir,
86
self.drizzle_server = self.system_manager.find_path([os.path.join(self.basedir,'drizzled/drizzled'),
87
os.path.join(self.clientbindir,'drizzled'),
88
os.path.join(self.basedir,'libexec/drizzled'),
89
os.path.join(self.basedir,'bin/drizzled'),
90
os.path.join(self.basedir,'sbin/drizzled'),
91
os.path.join(self.builddir,'drizzled/drizzled')])
94
self.drizzleslap = self.system_manager.find_path([os.path.join(self.clientbindir,
97
self.schemawriter = self.system_manager.find_path([os.path.join(self.basedir,
98
'drizzled/message/schema_writer'),
99
os.path.join(self.builddir,
100
'drizzled/message/schema_writer')])
102
self.drizzletest = self.system_manager.find_path([os.path.join(self.clientbindir,
105
self.server_version_string = None
106
self.server_executable = None
107
self.server_version = None
108
self.server_compile_os = None
109
self.server_platform = None
110
self.server_compile_comment = None
111
self.type = 'Drizzle'
113
self.process_server_version()
114
self.ld_lib_paths = self.get_ld_lib_paths()
119
self.logging.debug_class(self)
122
self.logging.info("Using Drizzle source tree:")
123
report_keys = ['basedir'
130
for key in report_keys:
131
self.logging.info("%s: %s" %(key, vars(self)[key]))
135
def process_server_version(self):
136
""" Get the server version number from the found server executable """
137
(retcode, self.server_version_string) = self.system_manager.execute_cmd(("%s --no-defaults --version" %(self.drizzle_server)))
138
# This is a bit bobo, but we're doing it, so nyah
140
self.server_executable, data_string = [data_item.strip() for data_item in self.server_version_string.split('Ver ')]
141
self.server_version, data_string = [data_item.strip() for data_item in data_string.split('for ')]
142
self.server_compile_os, data_string = [data_item.strip() for data_item in data_string.split(' on')]
143
self.server_platform = data_string.split(' ')[0].strip()
144
self.server_comment = data_string.replace(self.server_platform,'').strip()
146
def get_ld_lib_paths(self):
147
""" Return a list of paths we want added to LD_LIB variables
149
These are processed later by the system manager, but we want to
150
specify them here (for a drizzle source tree) and now
155
ld_lib_paths = [ os.path.join(self.basedir,"libdrizzleclient/.libs/")
156
, os.path.join(self.basedir,"mysys/.libs/")
157
, os.path.join(self.basedir,"mystrings/.libs/")
158
, os.path.join(self.basedir,"drizzled/.libs/")
162
ld_lib_paths = [ os.path.join(self.basedir,"lib")]