~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/utils/lit/lit/ExampleTests/LLVM.InTree/test/lit.cfg

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- Python -*-
 
2
 
 
3
# Configuration file for the 'lit' test runner.
 
4
 
 
5
import os
 
6
 
 
7
# name: The name of this test suite.
 
8
config.name = 'LLVM'
 
9
 
 
10
# testFormat: The test format to use to interpret tests.
 
11
config.test_format = lit.formats.TclTest()
 
12
 
 
13
# suffixes: A list of file extensions to treat as test files, this is actually
 
14
# set by on_clone().
 
15
config.suffixes = []
 
16
 
 
17
# test_source_root: The root path where tests are located.
 
18
config.test_source_root = os.path.dirname(__file__)
 
19
 
 
20
# test_exec_root: The root path where tests should be run.
 
21
llvm_obj_root = getattr(config, 'llvm_obj_root', None)
 
22
if llvm_obj_root is not None:
 
23
    config.test_exec_root = os.path.join(llvm_obj_root, 'test')
 
24
 
 
25
###
 
26
 
 
27
import os
 
28
 
 
29
# Check that the object root is known.
 
30
if config.test_exec_root is None:
 
31
    # Otherwise, we haven't loaded the site specific configuration (the user is
 
32
    # probably trying to run on a test file directly, and either the site
 
33
    # configuration hasn't been created by the build system, or we are in an
 
34
    # out-of-tree build situation).
 
35
 
 
36
    # Try to detect the situation where we are using an out-of-tree build by
 
37
    # looking for 'llvm-config'.
 
38
    #
 
39
    # FIXME: I debated (i.e., wrote and threw away) adding logic to
 
40
    # automagically generate the lit.site.cfg if we are in some kind of fresh
 
41
    # build situation. This means knowing how to invoke the build system
 
42
    # though, and I decided it was too much magic.
 
43
 
 
44
    llvm_config = lit.util.which('llvm-config', config.environment['PATH'])
 
45
    if not llvm_config:
 
46
        lit.fatal('No site specific configuration available!')
 
47
 
 
48
    # Get the source and object roots.
 
49
    llvm_src_root = lit.util.capture(['llvm-config', '--src-root']).strip()
 
50
    llvm_obj_root = lit.util.capture(['llvm-config', '--obj-root']).strip()
 
51
 
 
52
    # Validate that we got a tree which points to here.
 
53
    this_src_root = os.path.dirname(config.test_source_root)
 
54
    if os.path.realpath(llvm_src_root) != os.path.realpath(this_src_root):
 
55
        lit.fatal('No site specific configuration available!')
 
56
 
 
57
    # Check that the site specific configuration exists.
 
58
    site_cfg = os.path.join(llvm_obj_root, 'test', 'lit.site.cfg')
 
59
    if not os.path.exists(site_cfg):
 
60
        lit.fatal('No site specific configuration available!')
 
61
 
 
62
    # Okay, that worked. Notify the user of the automagic, and reconfigure.
 
63
    lit.note('using out-of-tree build at %r' % llvm_obj_root)
 
64
    lit.load_config(config, site_cfg)
 
65
    raise SystemExit
 
66
 
 
67
###
 
68
 
 
69
# Load site data from DejaGNU's site.exp.
 
70
import re
 
71
site_exp = {}
 
72
# FIXME: Implement lit.site.cfg.
 
73
for line in open(os.path.join(config.llvm_obj_root, 'test', 'site.exp')):
 
74
    m = re.match('set ([^ ]+) "([^"]*)"', line)
 
75
    if m:
 
76
        site_exp[m.group(1)] = m.group(2)
 
77
 
 
78
# Add substitutions.
 
79
for sub in ['prcontext', 'llvmgcc', 'llvmgxx', 'compile_cxx', 'compile_c',
 
80
            'link', 'shlibext', 'ocamlopt', 'llvmdsymutil', 'llvmlibsdir',
 
81
            'bugpoint_topts']:
 
82
    if sub in ('llvmgcc', 'llvmgxx'):
 
83
        config.substitutions.append(('%' + sub,
 
84
                                     site_exp[sub] + ' -emit-llvm -w'))
 
85
    else:
 
86
        config.substitutions.append(('%' + sub, site_exp[sub]))
 
87
 
 
88
excludes = []
 
89
 
 
90
# Provide target_triple for use in XFAIL and XTARGET.
 
91
config.target_triple = site_exp['target_triplet']
 
92
 
 
93
# Provide llvm_supports_target for use in local configs.
 
94
targets = set(site_exp["TARGETS_TO_BUILD"].split())
 
95
def llvm_supports_target(name):
 
96
    return name in targets
 
97
 
 
98
langs = set(site_exp['llvmgcc_langs'].split(','))
 
99
def llvm_gcc_supports(name):
 
100
    return name in langs
 
101
 
 
102
# Provide on_clone hook for reading 'dg.exp'.
 
103
import os
 
104
simpleLibData = re.compile(r"""load_lib llvm.exp
 
105
 
 
106
RunLLVMTests \[lsort \[glob -nocomplain \$srcdir/\$subdir/\*\.(.*)\]\]""",
 
107
                           re.MULTILINE)
 
108
conditionalLibData = re.compile(r"""load_lib llvm.exp
 
109
 
 
110
if.*\[ ?(llvm[^ ]*) ([^ ]*) ?\].*{
 
111
 *RunLLVMTests \[lsort \[glob -nocomplain \$srcdir/\$subdir/\*\.(.*)\]\]
 
112
\}""", re.MULTILINE)
 
113
def on_clone(parent, cfg, for_path):
 
114
    def addSuffixes(match):
 
115
        if match[0] == '{' and match[-1] == '}':
 
116
            cfg.suffixes = ['.' + s for s in match[1:-1].split(',')]
 
117
        else:
 
118
            cfg.suffixes = ['.' + match]
 
119
 
 
120
    libPath = os.path.join(os.path.dirname(for_path),
 
121
                           'dg.exp')
 
122
    if not os.path.exists(libPath):
 
123
        cfg.unsupported = True
 
124
        return
 
125
 
 
126
    # Reset unsupported, in case we inherited it.
 
127
    cfg.unsupported = False
 
128
    lib = open(libPath).read().strip()
 
129
 
 
130
    # Check for a simple library.
 
131
    m = simpleLibData.match(lib)
 
132
    if m:
 
133
        addSuffixes(m.group(1))
 
134
        return
 
135
 
 
136
    # Check for a conditional test set.
 
137
    m = conditionalLibData.match(lib)
 
138
    if m:
 
139
        funcname,arg,match = m.groups()
 
140
        addSuffixes(match)
 
141
 
 
142
        func = globals().get(funcname)
 
143
        if not func:
 
144
            lit.error('unsupported predicate %r' % funcname)
 
145
        elif not func(arg):
 
146
            cfg.unsupported = True
 
147
        return
 
148
    # Otherwise, give up.
 
149
    lit.error('unable to understand %r:\n%s' % (libPath, lib))
 
150
 
 
151
config.on_clone = on_clone