[kepler-dev] build.xml and JAVA_HOME

Chad Berkley berkley at nceas.ucsb.edu
Mon Apr 21 10:08:14 PDT 2008

I think these are all good ideas.  I'll add them to a post-1.0 bug.  I 
removed the requirement for JAVA_HOME.  I hadn't realized that was in 
there.  Aaron pointed out to me the other day that we could have an 
error message alerting users to the state of these env. variables and I 
asked him to add the functionality so he could learn a bit of ant and 
have a chance to dig into the build system a bit.


Matthew Jones wrote:
> I agree, it would be better if we could build without requiring that 
> JAVA_HOME is set.  For that matter, I would prefer if we didn't need to 
> set KEPLER or PTII either.  For KEPLER, we can use the ant basedir 
> property which is always set to the directory where the build is 
> launched -- this would be a simple change.  Its not even clear to me 
> that env.KEPLER is used anywhere except in the javadoc target, and it 
> would be easily replaced with either a relative path or ${basedir}.
> For PTII, I think we should check if PTII is set, and if so, check it 
> and use that dir, but if not then see if ptii is found in a sibling dir 
> of $KEPLER, and if so use that.  If both of those fail, then abort with 
> an error saying we can't find ptii. By checking for the environment 
> variable first, we allow people to use different versions of PTII while 
> still making the default case where it is checked out in a sibling 
> directory the default.
> These changes would significantly simplify our build and eliminate the 
> most frequently reported build problem that is reported to us.
> Matt
> Christopher Brooks wrote:
>> Hi Aaron,
>> You modified build.xml with this log message:
>>   Added a condition to the preinit target to make sure that the
>>   environment variables are set.  Otherwise, the build fails with a
>>   message.
>> The diff is: 
>> bash-3.00$ cvs diff -r 1.380 -r 1.381 build.xml
>> Index: build.xml
>> ===================================================================
>> RCS file: /cvs/kepler/build.xml,v
>> retrieving revision 1.380
>> retrieving revision 1.381
>> diff -r1.380 -r1.381
>> 4,6c4,6
>> <  *     '$Author: crawl $'
>> <  *       '$Date: 2008/04/02 21:09:41 $'
>> <  *   '$Revision: 1.380 $'
>> ---
>>>  *     '$Author: aschultz $'
>>>  *       '$Date: 2008/04/17 23:45:07 $'
>>>  *   '$Revision: 1.381 $'
>> 118a119,126
>>>   	<condition property="env_ok">
>>>   	   <and>
>>>   	     <isset property="env.PTII"/>
>>>   	     <isset property="env.KEPLER"/>
>>>   	     <isset property="env.JAVA_HOME"/>
>>>   	   </and>
>>>   	</condition>
>>>   	<fail message="Environment not initialized: PTII=${env.PTII} KEPLER=${env.KEPLER} JAVA_HOME=${env.JAVA_HOME}" unless="env_ok"/>
>> This means that we are now requiring JAVA_HOME be set.
>> It looks like the automatic build is failing, see
>> ttp://nmi-s003.cs.wisc.edu/nmi/index.php?page=results/runDetails&runid=83360
>> If JAVA_HOME is not set, then I get this error message:
>> bash-3.00$ ant run-dev
>> Buildfile: build.xml
>> preinit:
>> /export/home1/cxh/src/kepler/build.xml:126: Environment not initialized: PTII=/home/eecs/cxh/ptII KEPLER=/home/eecs/cxh/src/kepler JAVA_HOME=${env.JAVA_HOME}
>> Total time: 1 second
>> bash-3.00$ 
>> I looked at this message and had no clue that I had to set JAVA_HOME.
>> Perhaps the error message could be more explicit, perhaps each
>> variable could be checked separately?
>> However, it it really necessary that JAVA_HOME be set?  Can't we
>> determine this programmatically?  The problem is that if the
>> java in the user's path and JAVA_HOME are different, then there
>> will be problems.
>> In Ptolemy II, we compile and invoke ptII/config/JavaHome.java,
>> which will tell us the value of the java.home property.
>> What was the error message that you were seeing?  Did it have
>> to do with compiling PtDoclet.java, which requires
>> ${JAVA_HOME}/lib/tools.jar?
>> I'm not sure how best to handle this in ant, but is there
>> a way that ant can compile a Java program and use that value?
>> I'm somewhat resistant to have the user set JAVA_HOME, I've
>> found that it ends up causing no end of support problems.
>> BTW - The ant docs say that JAVA_HOME must be set, but the reality
>> is that ant works ok without JAvA_HOME being set.  
>> IMHO - it is a bug in ant that I'm asked to set JAVA_HOME.
>> _Christopher
>> _______________________________________________
>> Kepler-dev mailing list
>> Kepler-dev at ecoinformatics.org
>> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev

More information about the Kepler-dev mailing list