Re: [Scons-dev] New symlink copy support

2014-08-01 Thread anatoly techtonik
On Thu, Jul 31, 2014 at 2:27 AM, William Blevins wblevins...@gmail.com wrote:
 I see, I missed this fact from the commit. That makes sense,
 but documentation needs to be simplified IMO.

 https://bitbucket.org/scons/scons/commits/2e225b46b2ad10230ae0a11090a7a26101866989
 Because I read symbolic link copying behavior in a wrong way.


 Provide a suggestion?  I can barely read my own mind much less anyone else's
 :)

 What about this?

 +para
 +The Copy; factory supports copying symbolic links. This behavior can
 be controlled by an optional third argument.
 +/para
 +
 +para
 +Symbolic link shallow copied a new symbolic link:
 +/para
 +
 +para
 +literalCommand(LinkIn, LinkOut1, Copy($TARGET, $SOURCE[,
 True]))/literal
 +/para
 +
 +para
 +Symbolic link target copied as a file or directory:
 +/para
 +
 +para
 +literalCommand(LinkIn, FileOrDirectoryOut, Copy($TARGET,
 $SOURCE, False))/literal
 +/para

=) I'd say this:

para
Since SCons 2.3.x Copy has symcopy keyword argument that controls how
symlinks are copied. If set to True, symlinks will be copied as links, if False,
SCons will copy file pointed by symlink.
/para

Positional arguments are bad, because from this:
   Copy($TARGET, $SOURCE, False)
I can't say what False stands for. My first idea is dry-run.
___
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev


Re: [Scons-dev] Java Development

2014-08-01 Thread William Blevins
SCons Java doesn't need to be that fancy, but I think the root problems can
be solved. The SCons java tool simply doesn't get the love that some of the
other tools get.

I don't have the experience with the code base to know if my ideas are
workable, so I will need some guidance.


On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy mfl...@verizon.net wrote:

 On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
  William,
  On July 25, 2014 at 8:27:02 PM, William Blevins (wblevins...@gmail.com)
  wrote:
 
  Team,
 
  I want to get another thread going for SCons Java development.
 
  The SCons Java tool has a ton of error reports on Tigris including 7
  priority 1 issues.  At the moment, this tool doesn't stand a chance
 against
  other Java competitors, and not because they are great tools.  I frankly
  hate ANT.  I have used Java support from SCons and it's seriously
 painful;
  nothing like the C++ support.  Some other developers have made statements
  like No one outside SCons builds Java programs more complicated than
 hello
  world.  The SCons tool framework is great, and I would really like to
 see
  the Java toolkit see some love.  It has potential to be a hidden gem,
 and I
  want help out with this, but I don't have the experience to do this on my
  own, so firstly I'd like to list some of the biggest hurdles to users
 SCons
  Java.  I'm not gonna try and propose any solutions at the moment.  I just
  want to see if I can get the group thinking about the problems.
 
  1. Adding resource files to a jar causes SCons
  segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550
 
  I have firsthand experience with this bug.  The only way I could figure
 out
  how to workaround it was to make a separate jar just for resources.
 
  2. Java emitter almost never gets the java output correct.
 
  One of the many things I hate about ANT is that ANT is stupid.  It always
  executes a build even if code is up-to-date and I usually have to
  explicitly clean.  SCons COULD resolve both problems if the emitters
  worked.  The only way to get remotely consistent working build is to call
  Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ...
 'classN' ]
  ).
 
  3. Dependencies:
 
  SCons does not automatically add classpath items as dependencies.  Why
 do I
  need to do this manually?  This is what SCons does!  It's the heart and
  soul!
 
  I believe this is because of item #6.
 
  4. Consistency:
 
  Classpath tokens (among other items) do not behave the same as other
  builders. Example: I cannot use #jar/item.jar in the classpath without
  expanding via something like File(...).get_path().
 
  5. Interfaces:
 
  Java(...) parameters and internal handling aren't intuitive and only
 handles
  sources = 'directory' correctly.  It doesn't do lists of java files or
 list
  of directories in a sane manner.
  http://scons.tigris.org/issues/show_bug.cgi?id=1772
 
  Personally, I don't think that Java and Jar should be separate functions.
   How do you get to the classes then?  What about Javah!  I have an idea,
  but that's outside the scope of this rant.
 
  6. Performance:
 
  The dependency structure for Java exposes class files in a way that
 creates
  tons of false positives.
 
  SCons current:
 
  classes1 = Java(...)
 
  classes2 = Java(...)
 
  Depends( classes2, classes1 ) # O( N^2 ) dependency graph with tons of
 false
  positives
 
  SCons if I have anything useful to say about it
 
  jar1 = Jar( classes1 )
 
  jar2 = Jar( classes2 )
 
  Depends( jar2, jar1 ) # O( 1 ) which obviously fails in parallel builds
  currently.
 
  I am currently data mining a production Java codebase to prove my point.
  Dirk and I have already discussed this issue somewhat; thanks Dirk :)
 
  This actually causes the Task Master thread to get blocked on large jars
  reducing parallel efficiency in builds to None.
 
 
  The main issue here (if I understand SCons’ internals enough) is that
  SCons’s doing all dependencies on a per file basis. For many types of
  builds that works fine. For Java (building jars, and other issues) and
 some
  other types of builds, that’s very inefficient.
 
  There’s no “blob” of files where you have N inputs and M outputs, and
 thus
  you get the N*M arcs in the graph.
 
  Currently the only similar but not really similar enough is the Dir()
 Node
  type.  But that has it’s own problems, which could be solved by a N*M
 type
  node.
 
 
 
  Other Java issues could likely be resolved building on top of such a new
  Node type.
 
  Though resolving the anonymous and inner classes in a java file creating
  more than one class file and what it might be named is also still an
 issue
  which the scanner and emitter try to solve by parsing the java files and
  figuring out the proper naming.  This of course is not (as I understand
 it)
  formally defined as part of the java language and thus is a per compiler
  implementation detail.

 In my opinion, you are wasting your time.

 The way 

Re: [Scons-dev] Java Development

2014-08-01 Thread Kenny, Jason L
We just updated in Parts trunk the Java tool. I believe it a few tweak based on 
the standard Scons tools. The note I have on this fix is “Fixed Java tool 
emitter to correctly handle derived targets.”

You might want to look at it and see if it helps at all and is work grabbing 
into SCons.

Here is a link the SVN file online.. 
http://parts.tigris.org/source/browse/parts/trunk/parts/parts/tools/javac.py?revision=516view=markup

Jason

From: Scons-dev [mailto:scons-dev-boun...@scons.org] On Behalf Of William 
Blevins
Sent: Friday, August 1, 2014 4:23 PM
To: SCons developer list
Subject: Re: [Scons-dev] Java Development

SCons Java doesn't need to be that fancy, but I think the root problems can be 
solved. The SCons java tool simply doesn't get the love that some of the other 
tools get.

I don't have the experience with the code base to know if my ideas are 
workable, so I will need some guidance.

On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy 
mfl...@verizon.netmailto:mfl...@verizon.net wrote:
On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
 William,
 On July 25, 2014 at 8:27:02 PM, William Blevins 
 (wblevins...@gmail.commailto:wblevins...@gmail.com)
 wrote:

 Team,

 I want to get another thread going for SCons Java development.

 The SCons Java tool has a ton of error reports on Tigris including 7
 priority 1 issues.  At the moment, this tool doesn't stand a chance against
 other Java competitors, and not because they are great tools.  I frankly
 hate ANT.  I have used Java support from SCons and it's seriously painful;
 nothing like the C++ support.  Some other developers have made statements
 like No one outside SCons builds Java programs more complicated than hello
 world.  The SCons tool framework is great, and I would really like to see
 the Java toolkit see some love.  It has potential to be a hidden gem, and I
 want help out with this, but I don't have the experience to do this on my
 own, so firstly I'd like to list some of the biggest hurdles to users SCons
 Java.  I'm not gonna try and propose any solutions at the moment.  I just
 want to see if I can get the group thinking about the problems.

 1. Adding resource files to a jar causes SCons
 segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550

 I have firsthand experience with this bug.  The only way I could figure out
 how to workaround it was to make a separate jar just for resources.

 2. Java emitter almost never gets the java output correct.

 One of the many things I hate about ANT is that ANT is stupid.  It always
 executes a build even if code is up-to-date and I usually have to
 explicitly clean.  SCons COULD resolve both problems if the emitters
 worked.  The only way to get remotely consistent working build is to call
 Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ... 'classN' ]
 ).

 3. Dependencies:

 SCons does not automatically add classpath items as dependencies.  Why do I
 need to do this manually?  This is what SCons does!  It's the heart and
 soul!

 I believe this is because of item #6.

 4. Consistency:

 Classpath tokens (among other items) do not behave the same as other
 builders. Example: I cannot use #jar/item.jar in the classpath without
 expanding via something like File(...).get_path().

 5. Interfaces:

 Java(...) parameters and internal handling aren't intuitive and only handles
 sources = 'directory' correctly.  It doesn't do lists of java files or list
 of directories in a sane manner.
 http://scons.tigris.org/issues/show_bug.cgi?id=1772

 Personally, I don't think that Java and Jar should be separate functions.
  How do you get to the classes then?  What about Javah!  I have an idea,
 but that's outside the scope of this rant.

 6. Performance:

 The dependency structure for Java exposes class files in a way that creates
 tons of false positives.

 SCons current:

 classes1 = Java(...)

 classes2 = Java(...)

 Depends( classes2, classes1 ) # O( N^2 ) dependency graph with tons of false
 positives

 SCons if I have anything useful to say about it

 jar1 = Jar( classes1 )

 jar2 = Jar( classes2 )

 Depends( jar2, jar1 ) # O( 1 ) which obviously fails in parallel builds
 currently.

 I am currently data mining a production Java codebase to prove my point.
 Dirk and I have already discussed this issue somewhat; thanks Dirk :)

 This actually causes the Task Master thread to get blocked on large jars
 reducing parallel efficiency in builds to None.


 The main issue here (if I understand SCons’ internals enough) is that
 SCons’s doing all dependencies on a per file basis. For many types of
 builds that works fine. For Java (building jars, and other issues) and some
 other types of builds, that’s very inefficient.

 There’s no “blob” of files where you have N inputs and M outputs, and thus
 you get the N*M arcs in the graph.

 Currently the only similar but not really similar enough is the Dir() Node
 type.  But that has it’s own problems, which could be solved by a N*M 

Re: [Scons-dev] Java Development

2014-08-01 Thread William Blevins
I can try to take a look at it, but if I understand correctly, the problem
with the Java emitter is that there is no standard for how a Java compiler
classes file creation, which means that the emitter needs to be different
for every Java compiler.

Which JDK do you use?

V/R,
William


On Fri, Aug 1, 2014 at 5:49 PM, Kenny, Jason L jason.l.ke...@intel.com
wrote:

  We just updated in Parts trunk the Java tool. I believe it a few tweak
 based on the standard Scons tools. The note I have on this fix is “Fixed
 Java tool emitter to correctly handle derived targets.”



 You might want to look at it and see if it helps at all and is work
 grabbing into SCons.



 Here is a link the SVN file online..
 http://parts.tigris.org/source/browse/parts/trunk/parts/parts/tools/javac.py?revision=516view=markup



 Jason



 *From:* Scons-dev [mailto:scons-dev-boun...@scons.org] *On Behalf Of *William
 Blevins
 *Sent:* Friday, August 1, 2014 4:23 PM
 *To:* SCons developer list
 *Subject:* Re: [Scons-dev] Java Development



 SCons Java doesn't need to be that fancy, but I think the root problems
 can be solved. The SCons java tool simply doesn't get the love that some of
 the other tools get.



 I don't have the experience with the code base to know if my ideas are
 workable, so I will need some guidance.



 On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy mfl...@verizon.net
 wrote:

  On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
  William,
  On July 25, 2014 at 8:27:02 PM, William Blevins (wblevins...@gmail.com)
  wrote:
 
  Team,
 
  I want to get another thread going for SCons Java development.
 
  The SCons Java tool has a ton of error reports on Tigris including 7
  priority 1 issues.  At the moment, this tool doesn't stand a chance
 against
  other Java competitors, and not because they are great tools.  I frankly
  hate ANT.  I have used Java support from SCons and it's seriously
 painful;
  nothing like the C++ support.  Some other developers have made statements
  like No one outside SCons builds Java programs more complicated than
 hello
  world.  The SCons tool framework is great, and I would really like to
 see
  the Java toolkit see some love.  It has potential to be a hidden gem,
 and I
  want help out with this, but I don't have the experience to do this on my
  own, so firstly I'd like to list some of the biggest hurdles to users
 SCons
  Java.  I'm not gonna try and propose any solutions at the moment.  I just
  want to see if I can get the group thinking about the problems.
 
  1. Adding resource files to a jar causes SCons
  segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550
 
  I have firsthand experience with this bug.  The only way I could figure
 out
  how to workaround it was to make a separate jar just for resources.
 
  2. Java emitter almost never gets the java output correct.
 
  One of the many things I hate about ANT is that ANT is stupid.  It always
  executes a build even if code is up-to-date and I usually have to
  explicitly clean.  SCons COULD resolve both problems if the emitters
  worked.  The only way to get remotely consistent working build is to call
  Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ...
 'classN' ]
  ).
 
  3. Dependencies:
 
  SCons does not automatically add classpath items as dependencies.  Why
 do I
  need to do this manually?  This is what SCons does!  It's the heart and
  soul!
 
  I believe this is because of item #6.
 
  4. Consistency:
 
  Classpath tokens (among other items) do not behave the same as other
  builders. Example: I cannot use #jar/item.jar in the classpath without
  expanding via something like File(...).get_path().
 
  5. Interfaces:
 
  Java(...) parameters and internal handling aren't intuitive and only
 handles
  sources = 'directory' correctly.  It doesn't do lists of java files or
 list
  of directories in a sane manner.
  http://scons.tigris.org/issues/show_bug.cgi?id=1772
 
  Personally, I don't think that Java and Jar should be separate functions.
   How do you get to the classes then?  What about Javah!  I have an idea,
  but that's outside the scope of this rant.
 
  6. Performance:
 
  The dependency structure for Java exposes class files in a way that
 creates
  tons of false positives.
 
  SCons current:
 
  classes1 = Java(...)
 
  classes2 = Java(...)
 
  Depends( classes2, classes1 ) # O( N^2 ) dependency graph with tons of
 false
  positives
 
  SCons if I have anything useful to say about it
 
  jar1 = Jar( classes1 )
 
  jar2 = Jar( classes2 )
 
  Depends( jar2, jar1 ) # O( 1 ) which obviously fails in parallel builds
  currently.
 
  I am currently data mining a production Java codebase to prove my point.
  Dirk and I have already discussed this issue somewhat; thanks Dirk :)
 
  This actually causes the Task Master thread to get blocked on large jars
  reducing parallel efficiency in builds to None.
 
 
  The main issue here (if I understand SCons’ internals enough) is that
  

Re: [Scons-dev] Java Development

2014-08-01 Thread Kenny, Jason L
For the tools here that use Java on the teams I know about use the standard JDK 
from Oracle.

Jason

From: Scons-dev [mailto:scons-dev-boun...@scons.org] On Behalf Of William 
Blevins
Sent: Friday, August 1, 2014 5:03 PM
To: SCons developer list
Subject: Re: [Scons-dev] Java Development

I can try to take a look at it, but if I understand correctly, the problem with 
the Java emitter is that there is no standard for how a Java compiler classes 
file creation, which means that the emitter needs to be different for every 
Java compiler.

Which JDK do you use?

V/R,
William

On Fri, Aug 1, 2014 at 5:49 PM, Kenny, Jason L 
jason.l.ke...@intel.commailto:jason.l.ke...@intel.com wrote:
We just updated in Parts trunk the Java tool. I believe it a few tweak based on 
the standard Scons tools. The note I have on this fix is “Fixed Java tool 
emitter to correctly handle derived targets.”

You might want to look at it and see if it helps at all and is work grabbing 
into SCons.

Here is a link the SVN file online.. 
http://parts.tigris.org/source/browse/parts/trunk/parts/parts/tools/javac.py?revision=516view=markup

Jason

From: Scons-dev 
[mailto:scons-dev-boun...@scons.orgmailto:scons-dev-boun...@scons.org] On 
Behalf Of William Blevins
Sent: Friday, August 1, 2014 4:23 PM
To: SCons developer list
Subject: Re: [Scons-dev] Java Development

SCons Java doesn't need to be that fancy, but I think the root problems can be 
solved. The SCons java tool simply doesn't get the love that some of the other 
tools get.

I don't have the experience with the code base to know if my ideas are 
workable, so I will need some guidance.

On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy 
mfl...@verizon.netmailto:mfl...@verizon.net wrote:
On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
 William,
 On July 25, 2014 at 8:27:02 PM, William Blevins 
 (wblevins...@gmail.commailto:wblevins...@gmail.com)
 wrote:

 Team,

 I want to get another thread going for SCons Java development.

 The SCons Java tool has a ton of error reports on Tigris including 7
 priority 1 issues.  At the moment, this tool doesn't stand a chance against
 other Java competitors, and not because they are great tools.  I frankly
 hate ANT.  I have used Java support from SCons and it's seriously painful;
 nothing like the C++ support.  Some other developers have made statements
 like No one outside SCons builds Java programs more complicated than hello
 world.  The SCons tool framework is great, and I would really like to see
 the Java toolkit see some love.  It has potential to be a hidden gem, and I
 want help out with this, but I don't have the experience to do this on my
 own, so firstly I'd like to list some of the biggest hurdles to users SCons
 Java.  I'm not gonna try and propose any solutions at the moment.  I just
 want to see if I can get the group thinking about the problems.

 1. Adding resource files to a jar causes SCons
 segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550

 I have firsthand experience with this bug.  The only way I could figure out
 how to workaround it was to make a separate jar just for resources.

 2. Java emitter almost never gets the java output correct.

 One of the many things I hate about ANT is that ANT is stupid.  It always
 executes a build even if code is up-to-date and I usually have to
 explicitly clean.  SCons COULD resolve both problems if the emitters
 worked.  The only way to get remotely consistent working build is to call
 Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ... 'classN' ]
 ).

 3. Dependencies:

 SCons does not automatically add classpath items as dependencies.  Why do I
 need to do this manually?  This is what SCons does!  It's the heart and
 soul!

 I believe this is because of item #6.

 4. Consistency:

 Classpath tokens (among other items) do not behave the same as other
 builders. Example: I cannot use #jar/item.jar in the classpath without
 expanding via something like File(...).get_path().

 5. Interfaces:

 Java(...) parameters and internal handling aren't intuitive and only handles
 sources = 'directory' correctly.  It doesn't do lists of java files or list
 of directories in a sane manner.
 http://scons.tigris.org/issues/show_bug.cgi?id=1772

 Personally, I don't think that Java and Jar should be separate functions.
  How do you get to the classes then?  What about Javah!  I have an idea,
 but that's outside the scope of this rant.

 6. Performance:

 The dependency structure for Java exposes class files in a way that creates
 tons of false positives.

 SCons current:

 classes1 = Java(...)

 classes2 = Java(...)

 Depends( classes2, classes1 ) # O( N^2 ) dependency graph with tons of false
 positives

 SCons if I have anything useful to say about it

 jar1 = Jar( classes1 )

 jar2 = Jar( classes2 )

 Depends( jar2, jar1 ) # O( 1 ) which obviously fails in parallel builds
 currently.

 I am currently data mining a production Java codebase to prove my point.
 Dirk 

Re: [Scons-dev] Java Development

2014-08-01 Thread Mark A. Flacy
On Friday, August 01, 2014 04:01:54 PM Bill Deegan wrote:
 Jason,
 
 Last I knew the output files differed by java version and not just java
 vendor.. ;)
 Any idea what version(s)?

The outputs have not changed for the Oracle javac between 1.6 and 1.7.

I don't know about 1.8, but it seems unlikely that it changed between 1.7 and 
1.8.  Easy enough to test if someone has Java 8 installed on their machine.

 
 -Bill
 
 
 On Fri, Aug 1, 2014 at 3:36 PM, Kenny, Jason L jason.l.ke...@intel.com
 
 wrote:
   For the tools here that use Java on the teams I know about use the
  
  standard JDK from Oracle.
  
  
  
  Jason
  
  
  
  *From:* Scons-dev [mailto:scons-dev-boun...@scons.org] *On Behalf Of
  *William Blevins
  *Sent:* Friday, August 1, 2014 5:03 PM
  
  *To:* SCons developer list
  *Subject:* Re: [Scons-dev] Java Development
  
  
  
  I can try to take a look at it, but if I understand correctly, the problem
  with the Java emitter is that there is no standard for how a Java compiler
  classes file creation, which means that the emitter needs to be different
  for every Java compiler.
  
  
  
  Which JDK do you use?
  
  
  
  V/R,
  
  William
  
  
  
  On Fri, Aug 1, 2014 at 5:49 PM, Kenny, Jason L jason.l.ke...@intel.com
  
  wrote:
   We just updated in Parts trunk the Java tool. I believe it a few tweak
  
  based on the standard Scons tools. The note I have on this fix is “Fixed
  Java tool emitter to correctly handle derived targets.”
  
  
  
  You might want to look at it and see if it helps at all and is work
  grabbing into SCons.
  
  
  
  Here is a link the SVN file online..
  http://parts.tigris.org/source/browse/parts/trunk/parts/parts/tools/javac.
  py?revision=516view=markup
  
  
  
  Jason
  
  
  
  *From:* Scons-dev [mailto:scons-dev-boun...@scons.org] *On Behalf Of
  *William Blevins
  *Sent:* Friday, August 1, 2014 4:23 PM
  *To:* SCons developer list
  *Subject:* Re: [Scons-dev] Java Development
  
  
  
  SCons Java doesn't need to be that fancy, but I think the root problems
  can be solved. The SCons java tool simply doesn't get the love that some
  of
  the other tools get.
  
  
  
  I don't have the experience with the code base to know if my ideas are
  workable, so I will need some guidance.
  
  
  
  On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy mfl...@verizon.net
  
  wrote:
   On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
   William,
   On July 25, 2014 at 8:27:02 PM, William Blevins (wblevins...@gmail.com)
   wrote:
   
   Team,
   
   I want to get another thread going for SCons Java development.
   
   The SCons Java tool has a ton of error reports on Tigris including 7
   priority 1 issues.  At the moment, this tool doesn't stand a chance
  
  against
  
   other Java competitors, and not because they are great tools.  I frankly
   hate ANT.  I have used Java support from SCons and it's seriously
  
  painful;
  
   nothing like the C++ support.  Some other developers have made
   statements
   like No one outside SCons builds Java programs more complicated than
  
  hello
  
   world.  The SCons tool framework is great, and I would really like to
  
  see
  
   the Java toolkit see some love.  It has potential to be a hidden gem,
  
  and I
  
   want help out with this, but I don't have the experience to do this on
   my
   own, so firstly I'd like to list some of the biggest hurdles to users
  
  SCons
  
   Java.  I'm not gonna try and propose any solutions at the moment.  I
   just
   want to see if I can get the group thinking about the problems.
   
   1. Adding resource files to a jar causes SCons
   segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550
   
   I have firsthand experience with this bug.  The only way I could figure
  
  out
  
   how to workaround it was to make a separate jar just for resources.
   
   2. Java emitter almost never gets the java output correct.
   
   One of the many things I hate about ANT is that ANT is stupid.  It
   always
   executes a build even if code is up-to-date and I usually have to
   explicitly clean.  SCons COULD resolve both problems if the emitters
   worked.  The only way to get remotely consistent working build is to
   call
   Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ...
  
  'classN' ]
  
   ).
   
   3. Dependencies:
   
   SCons does not automatically add classpath items as dependencies.  Why
  
  do I
  
   need to do this manually?  This is what SCons does!  It's the heart and
   soul!
   
   I believe this is because of item #6.
   
   4. Consistency:
   
   Classpath tokens (among other items) do not behave the same as other
   builders. Example: I cannot use #jar/item.jar in the classpath without
   expanding via something like File(...).get_path().
   
   5. Interfaces:
   
   Java(...) parameters and internal handling aren't intuitive and only
  
  handles
  
   sources = 'directory' correctly.  It doesn't do lists of java files or
  
  list
  
  

Re: [Scons-dev] Java Development

2014-08-01 Thread William Blevins
The issue is that we are guessing as to what syntax causes the compiler to
emit an extra class file.


On Fri, Aug 1, 2014 at 7:49 PM, Mark A. Flacy mfl...@verizon.net wrote:

 On Friday, August 01, 2014 05:22:39 PM William Blevins wrote:
  SCons Java doesn't need to be that fancy, but I think the root problems
 can
  be solved. The SCons java tool simply doesn't get the love that some of
 the
  other tools get.

 One common use case is to generate java source from the xjc tool (which
 converts XML schema to java classes) for use by other java classes.

 The emitter in that case would need to parse a bindings file as well as
 the XML
 schema(s) that the binding file uses.  However, the resulting java files
 should
 have no dependencies on any external libraries, so they could be compiled
 as a
 unit independently from anything using them.

 And there are Annotations, which can be used to (and *are* used to)
 generate
 source.  See http://deors.wordpress.com/2011/09/26/annotation-types/ for a
 discussion of how to do that.



 
  I don't have the experience with the code base to know if my ideas are
  workable, so I will need some guidance.
 
  On Thu, Jul 31, 2014 at 11:04 PM, Mark A. Flacy mfl...@verizon.net
 wrote:
   On Sunday, July 27, 2014 03:10:34 PM William Deegan wrote:
William,
On July 25, 2014 at 8:27:02 PM, William Blevins (
 wblevins...@gmail.com)
wrote:
   
Team,
   
I want to get another thread going for SCons Java development.
   
The SCons Java tool has a ton of error reports on Tigris including 7
priority 1 issues.  At the moment, this tool doesn't stand a chance
  
   against
  
other Java competitors, and not because they are great tools.  I
 frankly
hate ANT.  I have used Java support from SCons and it's seriously
  
   painful;
  
nothing like the C++ support.  Some other developers have made
statements
like No one outside SCons builds Java programs more complicated than
  
   hello
  
world.  The SCons tool framework is great, and I would really like
 to
  
   see
  
the Java toolkit see some love.  It has potential to be a hidden gem,
  
   and I
  
want help out with this, but I don't have the experience to do this
 on
my
own, so firstly I'd like to list some of the biggest hurdles to users
  
   SCons
  
Java.  I'm not gonna try and propose any solutions at the moment.  I
just
want to see if I can get the group thinking about the problems.
   
1. Adding resource files to a jar causes SCons
segfault: http://scons.tigris.org/issues/show_bug.cgi?id=2550
   
I have firsthand experience with this bug.  The only way I could
 figure
  
   out
  
how to workaround it was to make a separate jar just for resources.
   
2. Java emitter almost never gets the java output correct.
   
One of the many things I hate about ANT is that ANT is stupid.  It
always
executes a build even if code is up-to-date and I usually have to
explicitly clean.  SCons COULD resolve both problems if the emitters
worked.  The only way to get remotely consistent working build is to
call
Jar( 'buildDir' ) when everyone wants to do Jar( [ 'class1', ...
  
   'classN' ]
  
).
   
3. Dependencies:
   
SCons does not automatically add classpath items as dependencies.
  Why
  
   do I
  
need to do this manually?  This is what SCons does!  It's the heart
 and
soul!
   
I believe this is because of item #6.
   
4. Consistency:
   
Classpath tokens (among other items) do not behave the same as other
builders. Example: I cannot use #jar/item.jar in the classpath
 without
expanding via something like File(...).get_path().
   
5. Interfaces:
   
Java(...) parameters and internal handling aren't intuitive and only
  
   handles
  
sources = 'directory' correctly.  It doesn't do lists of java files
 or
  
   list
  
of directories in a sane manner.
http://scons.tigris.org/issues/show_bug.cgi?id=1772
   
Personally, I don't think that Java and Jar should be separate
functions.
   
 How do you get to the classes then?  What about Javah!  I have an
 idea,
   
but that's outside the scope of this rant.
   
6. Performance:
   
The dependency structure for Java exposes class files in a way that
  
   creates
  
tons of false positives.
   
SCons current:
   
classes1 = Java(...)
   
classes2 = Java(...)
   
Depends( classes2, classes1 ) # O( N^2 ) dependency graph with tons
 of
  
   false
  
positives
   
SCons if I have anything useful to say about it
   
jar1 = Jar( classes1 )
   
jar2 = Jar( classes2 )
   
Depends( jar2, jar1 ) # O( 1 ) which obviously fails in parallel
 builds
currently.
   
I am currently data mining a production Java codebase to prove my
 point.
Dirk and I have already discussed this issue somewhat; thanks Dirk :)
   
This actually causes the Task