[Scons-users] Jar builds fail with SConscript variant directory
    Dirk Bächle 
    tshortik at gmx.de
       
    Sat May  3 17:39:21 EDT 2014
    
    
  
Hi Bill,
On 01.05.2014 17:52, William Roberts wrote:
> Ok trying again on the right list with the attachment...
>
> I typically set up my builds with a hierachical layout and a variant
> directory and do some other things to make it all work together.
> Normally I program in C, and this all works.
>
> Recently, I tried using java and broke. I have a very simple example
> that doesnt work. If I change the SConscript calls to use a variant
> dir, its broken, if I dont it works...
>
> Sconstruct:
>
>       <snip>
>          SConscript(script)
>          #SConscript(script, variant_dir=outdir, duplicate=1)
>       <snip>
>
> to
>       <snip>
>          #SConscript(script)
>          SConscript(script, variant_dir=outdir, duplicate=1)
>       <snip>
>
> it breaks...
>
> Can someone explain what's going on here? Thanks.
I also tried my luck and had a short look at your build setup. In your 
SConscript you have:
   Java("classes", ".")
   Jar("myjar.jar", "classes")
which works fine as long as you don't use variant dirs. The problem is 
the first line, which creates a dependency between "classes" and ".". 
These are both Dir nodes, so when the VariantDir stuff jumps in and 
starts to copy things, it won't pick up the "*.java" source files living 
*under* the "." directory. You can check this with calling "scons 
--tree=derived", which won't show any "*.java" files as leaves in the 
dependency tree, as one might expect.
A possible way out is to compile the Java files one at a time. This 
requires to additionally set the "-classpath" option, and a proper 
SConscript for your situation would be:
   Java("classes", Glob("*.java"), JAVACLASSPATH=Dir("classes"))
   Jar("myjar.jar", "classes")
This works for duplicate=1, as well as duplicate=0.
Best regards,
Dirk
    
    
More information about the Scons-users
mailing list