Hi Myrna,

Just to confirm what Kristian has said, this is how it is supposed to work:

1) The out-of-the-box experience, which should work for most users is this: Do nothing. That is, don't even create an ant.properties. The Derby build should successfully figure out where your JDKs live and automatically construct the lists of jar files which the build needs in order to correctly compile the jdk14-specific, java5-specific, and java6-specific code.

2) However, that may not work for you if you have put the JDKs in custom locations on your machine which the build can't find. In that case, you should be able to tell the build where the JDKs live by setting the following variables in your ant.properties:

  j14lib
  j15lib
  j16lib (in the future)

In this situation, the build should be able to construct the lists of jar files it needs just from the pointers provided by these variables. Note that you should not need to set dontAutosetProps. This sounds like your situation, Myrna. If this doesn't work for you, please help us understand what is broken so that we can fix this.

3) At the fringes will be people with very special environments, e.g., people who use JDKs supplied by vendors which the Derby build doesn't understand. Currently, Derby understands the structure of the Sun, IBM, and Apple JDKs. These people should be able to painfully and explicitly spell out what the jar file lists are by setting the following variables in their ant.properties:

 java14compile.classpath
 java15compile.classpath
 java16compile.classpath (in the future)

Again, even these people should not have to set dontAutosetProps.

We would like to get everybody running on one of the above schemes so that we can remove the support for dontAutosetProps. Right now, it is causing confusion for people who need to extend our build scripts.

Hope this is more clear. Please let us know if option (2) doesn't work for you.

Thanks,
-Rick




Kristian Waagan wrote:
Myrna van Lunteren wrote:
Just to make sure I can continue to work as I have been; I have no
desire to let my environment be set to a standard setup.
I have been using my own name and directory locations for the (ibm
*and* sun) jvms, much shorter than the default names, and I like/need
to be able to switch around at will, and the automation put in place
so far doesn't work for me.

Please confirm that dontAutosetProps will remain in place?
Myrna,

I won't remove it. According to the item list Rick wrote, there will be a poll before anything is removed and he indicated there were wrinkles left that needed to be straightened out.

That said, I'm still having trouble understanding what doesn't work. Can you help me understand? For instance, I can compile Derby with the following ant.properties, using non-standard directories:
$ cat ~/ant.properties
j15lib=/private/kw160128/tmp/vms/vm/jre/lib
j14lib=/private/kw160128/tmp/vms/o/jre/lib
jdk16=/usr/local/java/jdk1.6
$

The property setter yields the output I have attached at the bottom.
If I had very custom jar files (spread around in multipe dirs, not in j1Xlib), and maybe a VM vender the property setter doesn't recognize, I would specify java14compile.classpath, java15compile.classpath and java16compile.classpath.

Now, there is at least one other pitfall, and that is if you are running lower level ant targets. One example is "ant client". The dependencies for this target does not include the compiler property setter task, and thus you will have to do something manually for this to work.
Right now I can think of using one of these;
a) Set the java1Xcompile.classpath variables
b) Call the property setter; ant setCompilerProperties client
(for custom directories, I believe you still need j1Xlib variables set manually)
c) Use higher-level targets
d) Introduce dependencies in the build scripts


Please note that I am not trying to force a change here, I just want to bring out problems so we can fix them.


regards,

Reply via email to