[Scons-users] Tool specification `exists()` not called?
    Dirk Bächle 
    tshortik at gmx.de
       
    Wed Oct  9 16:09:24 EDT 2013
    
    
  
On 09.10.2013 21:05, Márcio Faustino wrote:
> Hi Dirk,
>
> I read it online at 
> <http://www.scons.org/doc/production/HTML/scons-man.html#lbAG>, in the 
> paragraph starting with "This looks for a tool specification in".
>
Although this paragraph doesn't state explicitly that the exists() 
method gets called (nit-picking, I know ;) ), I can understand how it 
may be misleading...
> If user defined tools won't have their "exists()" called, what is the 
> appropriate thing to do in order to signal that a tool does not exist?
>
There is no easy answer to this question, I'm afraid. Note that a revamp 
of the current SCons toolchain handling is on our Roadmap ( 
http://www.scons.org/wiki/Roadmap ) for the near future.
My current personal view on this is: A Tool itself is always present, 
otherwise you'd get an ImportError. Tools that don't define any 
Builders, but simply change the Environment, should always return True. 
A Tool should return False or '' from its exists() method, if the user 
has no chance to get its defined Builders working by setting internal 
variables, especially $PATH.
As a user I still want to be able to say:
   env = Environment(tools=[])
   # Builders get installed, even though the executables are
   # not found on the path
   env.Tool('Qt4')
   # Now we correct the paths to our commands
   # and make the Builders work
   env['QT4DIR'] = '/something/special/not/in/path'
Dirk
    
    
More information about the Scons-users
mailing list