RE: javac

2005-07-13 Thread Jean Lazarou
Ok, you approach is fine, even if it doesn't fit my situation as I should find 
at what *levels* of the tree structure I should apply your idea.
 
If you look at the Javac Task implementation you can see that it is not far 
from beeing an API, the Javac developer could publish that his/her 
implementation (1) finds all the files to compile, in the execute method, 
storing the result in a *protected* variable (not a private like some other 
variables) (2) calls the compile method... from a OO perspective it looks like 
an invitation to extension.
 
With open-source you can spend time to look at the code and learn how people 
implemented things... and then have ideas on how to add custom things. If later 
on the new stuffs can help anyone, it's better. That's the reason I registered 
myself on this list. To share what I did, in case others think it would be of 
any interrest. 
 
The extension I made could be a parameter in the nomal Javac implementation, 
like beeing able to pick up the right compilation strategy. So, not having the 
problem you described with new versions.
 
Regards,
 
Jean
 

Kenneth Wood [EMAIL PROTECTED] wrote:
Just FYI, I have legacy code I need to compile, I have been
building it with ant for years... 

I just structure my build.xml to compile sections, 
i.e. includes=Z/**/*.java/

includes=Y/**/*.java/

And so on for 26 sections!

It has worked fine...

Ugly, yes. But, it doesn't require extensions to Ant, which
can be problematic when moving from one version of Ant to
another (and this code started out being compiled with
Ant 1.1 maybe - so long ago I don't remember and now is
up to Ant 1.6.1)


-Original Message-
From: Jean Lazarou [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, July 12, 2005 9:53 AM
To: Ant Developers List
Subject: RE: javac


Do you think we can pick up any splitting for the subsystem to compile?

How can you be sure, when you're not developer of the project, that some
sub-tree won't imply that, due to compilation dependencies, again too
much files to compile at once? Even the approach I wrote is not full
reliable... 

Any way, creating a new task that derives from the ant Javac task
implemention was pretty easy to do.

I thank you for you advice.

Jean


Dominique Devienne 
   wrote:
Phil is right Jean. Independently of splitting the code in subsystems,
which is always a good idea, even if you can't do that you can split the
compile of a single source tree into several passes using regular . This
can even enforce dependencies of the code compiled by the different
passes. The trick is to reset the sourcepath that normally sets.

I include here an example for reference. Hope this helps. --DD

Compile the java code from src/ into build/classes
--





when not forking , and instead specify directly the
JVM argument only when forking... Convoluted, but works! --

















destdir=@{destdir} sourcepath=
deprecation=${deprecation} debug=true verbose=false
includeAntRuntime=false fork=@{fork} --






























 -Original Message-
 From: Phil Weighill Smith [mailto:[EMAIL PROTECTED]
 
 Why not simply put two calls to javac in your build script and split 
 the source tree in two in the same way that you have in your new task,

 passing one tree to the first call and the other to the second?
 
 Clearly you need to ensure that the first call compiles 
 pre-requisite code for the second call and that you should avoid 
 cyclic references between the two sets of classes.
 
 On Tue, 2005-07-12 at 00:12 -0700, Jean Lazarou wrote:
  We had problem with a (legacy) build from scratch, seems that, 
  because
 we have too many java files to compile, nothing is compiled (both on 
 Linux and Windfoos2000).
 
  After spending 4 days on that, I decided to split the compilation, I
 created a new task, name bydir-javac. The task is derived from 
 Javac.
 
  Can I publish this? Is it a better way of doing it?


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


__
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-
 Start your day with Yahoo! - make it your home page 

javac

2005-07-12 Thread Jean Lazarou
We had problem with a (legacy) build from scratch, seems that, because we have 
too many java files to compile, nothing is compiled (both on Linux and 
Windows2000). 
 
After spending 4 days on that, I decided to split the compilation, I created a 
new task, name bydir-javac. The task is derived from Javac.
 
Can I publish this? Is it a better way of doing it?
 
Jean Lazarou

__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Re: javac

2005-07-12 Thread Jean Lazarou
We changed the memory size, using the ways you described, but the build still 
failed.
 
The problem with splitting in functional units is that the development is done 
on several sites with several teams, and the final build made by us... we don't 
want to change that strange process because that development is the legacy code 
maintainance, new developments are structured differently and we don't run into 
the same problems. But, we want to have all the builds made using ant.
 
Jean

Peter Reilly [EMAIL PROTECTED] wrote:
It may be better to give more memory to the compiler.
With enough memory a hugh number of files can be
compiled. The default memory is only I think 64M.

This can be done in a number of ways -

- use the env variable ANT_OPTS to specify the memory
for Ant's jvm
example: export ANT_OPTS=-Xms200m -Xmx1000m
in your .bashrc file
- spawn a jvm for the compiler
destdir=${build}
fork=true memoryInitialSize=100m
memoryMaximumSize=1000m/

In extreme cases you can split the code into functional units
and compile each separately. This would not be at the level of
directories, but complete package trees. We had to do this
in a project once.

Peter 

Jean Lazarou wrote:

We are trying to create an ant build for legacy code, that is build using some 
make tool, as I don't want to break the already complicated buiild, I 
preferred simulate the same behaviour as the make tool we're using. As that 
legacy code is still alive I cannot count the files and decide how to split 
because it could break in several months.
 
Jean


Phil Weighill Smith 
wrote:
Why not simply put two calls to javac in your build script and split the
source tree in two in the same way that you have in your new task,
passing one tree to the first call and the other to the second?

Clearly you need to ensure that the first call compiles pre-requisite
code for the second call and that you should avoid cyclic references
between the two sets of classes.

Phil :n.

PS: I would consider re-structuring the application into subsystems
with separate source trees and separate build scripts per subsystem.
Dependencies between subsystems only on the class files (not the source
files). This is the approach we have taken to great effect.

On Tue, 2005-07-12 at 00:12 -0700, Jean Lazarou wrote:
 

We had problem with a (legacy) build from scratch, seems that, because we 
have too many java files to compile, nothing is compiled (both on Linux and 
Windows2000). 

After spending 4 days on that, I decided to split the compilation, I created 
a new task, name bydir-javac. The task is derived from Javac.

Can I publish this? Is it a better way of doing it?

Jean Lazarou

__
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


__
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
 



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

RE: javac

2005-07-12 Thread Jean Lazarou
Do you think we can pick up any splitting for the subsystem to compile?
 
How can you be sure, when you're not developer of the project, that some 
sub-tree won't imply that, due to compilation dependencies, again too much 
files to compile at once?
Even the approach I wrote is not full reliable... 
 
Any way, creating a new task that derives from the ant Javac task implemention 
was pretty easy to do.
 
I thank you for you advice.
 
Jean


Dominique Devienne [EMAIL PROTECTED] wrote:
Phil is right Jean. Independently of splitting the code in subsystems, which
is always a good idea, even if you can't do that you can split the compile
of a single source tree into several passes using regular . This can
even enforce dependencies of the code compiled by the different passes. The
trick is to reset the sourcepath that normally sets.

I include here an example for reference. Hope this helps. --DD

   Compile the java code from src/ into build/classes
--





 when not forking , and instead specify directly the
 JVM argument only when forking... Convoluted, but works!  --

















destdir=@{destdir} sourcepath=
deprecation=${deprecation} debug=true verbose=false
includeAntRuntime=false fork=@{fork}
 --






























 -Original Message-
 From: Phil Weighill Smith [mailto:[EMAIL PROTECTED]
 
 Why not simply put two calls to javac in your build script and split the
 source tree in two in the same way that you have in your new task,
 passing one tree to the first call and the other to the second?
 
 Clearly you need to ensure that the first call compiles pre-requisite
 code for the second call and that you should avoid cyclic references
 between the two sets of classes.
 
 On Tue, 2005-07-12 at 00:12 -0700, Jean Lazarou wrote:
  We had problem with a (legacy) build from scratch, seems that, because
 we have too many java files to compile, nothing is compiled (both on Linux
 and Windfoos2000).
 
  After spending 4 days on that, I decided to split the compilation, I
 created a new task, name bydir-javac. The task is derived from Javac.
 
  Can I publish this? Is it a better way of doing it?


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com