[Scons-users] Using Command with TryBuild
Dirk Bächle
tshortik at gmx.de
Fri Feb 15 11:53:51 EST 2013
Carnë,
On 15.02.2013 08:37, Carnë Draug wrote:
> Hi
>
> I'm unable to use the Command builder with TryBuild. I get the following error:
>
> AttributeError: 'NodeList' object has no attribute 'builder':
> <snip>
> File "/usr/lib/scons/SCons/SConf.py", line 799:
> return self.sconf.TryBuild(*args, **kw)
> File "/usr/lib/scons/SCons/SConf.py", line 546:
> pref = self.env.subst( builder.builder.prefix )
>
> I'm using this has to check for the availability of a perl module
>
> context.TryBuild (context.env.Command(target = [], source = [], action
> = "perl -M%s -e 1" % module))
please don't use TryBuild or TryAction for these kind of checks. They
are highly specialised methods, usually working together with the
Object() or Program() Builders. In your case it makes sense to do the
check completely on your own. Please, find a first simple version
attached, based on subprocess. I hope you can put it to good use...
Regards,
Dirk
-------------- next part --------------
import SCons.Builder
import subprocess
def PerlHasModule(context, module):
res = True
context.Message('Checking for Perl module %s... ' % module)
process = subprocess.Popen(['perl','-M%s' % module,'-e','1'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
status = process.wait()
if status:
res = False
context.Result(res)
return res
env = Environment()
c = env.Configure(custom_tests = {'PerlHasModule' : PerlHasModule})
if c.PerlHasModule('balla'):
print "Adding defines for Perl module."
else:
print "Not adding anything for Perl module!"
More information about the Scons-users
mailing list