1 """engine.SCons.Variables.PackageVariable
2
3 This file defines the option type for SCons implementing 'package
4 activation'.
5
6 To be used whenever a 'package' may be enabled/disabled and the
7 package path may be specified.
8
9 Usage example:
10
11 Examples:
12 x11=no (disables X11 support)
13 x11=yes (will search for the package installation dir)
14 x11=/usr/local/X11 (will check this path for existance)
15
16 To replace autoconf's --with-xxx=yyy
17
18 opts = Variables()
19 opts.Add(PackageVariable('x11',
20 'use X11 installed here (yes = search some places',
21 'yes'))
22 ...
23 if env['x11'] == True:
24 dir = ... search X11 in some standard places ...
25 env['x11'] = dir
26 if env['x11']:
27 ... build with x11 ...
28 """
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 __revision__ = "src/engine/SCons/Variables/PackageVariable.py 2014/09/27 12:51:43 garyo"
54
55 __all__ = ['PackageVariable',]
56
57 import SCons.Errors
58
59 __enable_strings = ('1', 'yes', 'true', 'on', 'enable', 'search')
60 __disable_strings = ('0', 'no', 'false', 'off', 'disable')
61
70
71
73
74 """
75 """
76
77 import os
78 if env[key] is True:
79 if searchfunc:
80 env[key] = searchfunc(key, val)
81 elif env[key] and not os.path.exists(val):
82 raise SCons.Errors.UserError(
83 'Path does not exist for option %s: %s' % (key, val))
84
85
87
88 """
89 The input parameters describe a 'package list' option, thus they
90 are returned with the correct converter and validator appended. The
91 result is usable for input to opts.Add() .
92
93 A 'package list' option may either be 'all', 'none' or a list of
94 package names (seperated by space).
95 """
96 help = '\n '.join(
97 (help, '( yes | no | /path/to/%s )' % key))
98 return (key, help, default,
99 lambda k, v, e: _validator(k,v,e,searchfunc),
100 _converter)
101
102
103
104
105
106
107