Re: Review Request: Build-infra M1

2012-04-04 Thread Erik Joelsson


  
  
One final review update. Cleanup of configure help output and make
help target in root repo.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.03/

/Erik

On 2012-04-03 11:59, Erik Joelsson wrote:

  
  Fixed these comments and posted new webrevs:
  
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.02/
  
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.02/
  
  (Tried making a single webrev but my forest extension isn't
  working that well)
  
  /Erik
  
  On 2012-03-30 20:08, Kelly O'Hair wrote:
  
Corba Makefile says:  45 # Thus we force the target bytecode to 6.
But I think 6 should be 7, or better yet "...the
boot
jdk target bytecode."


  
Everything else looks ok to
me.


-kto



  
  
  On 2012-03-30 15:19, Jonathan Gibbons wrote:
  
langtools makefile...

line 55 typo in comment "ony"

line 57 grammar in comment "list of to be created"

The Swedish examples are somewhat silly since there are no
swedish properties files.

The comments on line 92--94 are inaccurate: javac is only build
twice, not three times.

line 130: grammar, should be either "strip them of all content"
or "strip all content from them"

line 168: not clear what "this setup" refers to.

-- Jon
  

  



Re: Review Request: Build-infra M1

2012-04-04 Thread Jonathan Gibbons

In langtools/Makefile,

line 42, bad/inappropriate/editorial comment:
A more palatable solution would be to add the GenStubs functionality to 
javac.
It would be totally unacceptable to add GenStubs to javac, so the 
comment is irrelevant.


line 120, 130-138, the nio files are not required when building on JDK 7.

line 179, what is javax.tools.JavaCompilerTool and why is it listed as 
in RESOURCE_SUFFIXES
line 194, is the JARMAIN required? It should not be used downstream, so 
does it need to be set here?


-- Jon



On 04/04/2012 07:41 AM, Erik Joelsson wrote:
One final review update. Cleanup of configure help output and make 
help target in root repo.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.03/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new.03/


/Erik

On 2012-04-03 11:59, Erik Joelsson wrote:

Fixed these comments and posted new webrevs:

http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.02/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new.02/


http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.02/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new.02/


(Tried making a single webrev but my forest extension isn't working 
that well)


/Erik

On 2012-03-30 20:08, Kelly O'Hair wrote:

Corba Makefile says:  45 # Thus we force the target bytecode to 6.
But I think 6 should be 7, or better yet ...the
boot

jdk target bytecode.




Everything else looks ok to
me.

-kto




On 2012-03-30 15:19, Jonathan Gibbons wrote:

langtools makefile...

line 55 typo in comment ony

line 57 grammar in comment list of to be created

The Swedish examples are somewhat silly since there are no swedish 
properties files.


The comments on line 92--94 are inaccurate: javac is only build 
twice, not three times.


line 130: grammar, should be either strip them of all content or 
strip all content from them


line 168: not clear what this setup refers to.

-- Jon






Re: Review Request: Build-infra M1

2012-04-04 Thread Magnus Ihse Bursie
We have also updated the user guide, which is available at 
http://openjdk.java.net/projects/build-infra/guide.html.

The guide now also includes an FAQ. I'm still working on adding more Qs and As 
as discussed here on the list to it. If you have any questions that you'd like 
to see answered in it, feel free to let me know. 

/Magnus

4 apr 2012 kl. 16:41 skrev Erik Joelsson erik.joels...@oracle.com:

 One final review update. Cleanup of configure help output and make help 
 target in root repo.
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.03/
 
 /Erik
 
 On 2012-04-03 11:59, Erik Joelsson wrote:
 
 Fixed these comments and posted new webrevs:
 
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.02/
 
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.02/
 
 (Tried making a single webrev but my forest extension isn't working that 
 well)
 
 /Erik
 
 On 2012-03-30 20:08, Kelly O'Hair wrote:
 
 Corba Makefile says:  45 # Thus we force the target bytecode to 6.
 But I think 6 should be 7, or better yet  ...the
 boot
 
 jdk target bytecode.
 
 
 
 
   
 Everything else looks ok to
 me.
 
 -kto
 
 
 
 On 2012-03-30 15:19, Jonathan Gibbons wrote:
 
 langtools makefile...
 
 line 55 typo in comment ony
 
 line 57 grammar in comment list of to be created
 
 The Swedish examples are somewhat silly since there are no swedish 
 properties files.
 
 The comments on line 92--94 are inaccurate: javac is only build twice, not 
 three times.
 
 line 130: grammar, should be either strip them of all content or strip 
 all content from them
 
 line 168: not clear what this setup refers to.
 
 -- Jon
 


Re: Review Request: Build-infra M1

2012-04-04 Thread Erik Joelsson


  
  


On 2012-04-04 16:56, Jonathan Gibbons wrote:

  
  In langtools/Makefile, 
  
  line 42, bad/inappropriate/editorial comment:
  "A more palatable solution would be to add the GenStubs
  functionality to javac."
  It would be totally unacceptable to add GenStubs to javac, so the
  comment is irrelevant.

Removing
 
  line 120, 130-138, the nio files are not required when building on
  JDK 7.

I'm not very familiar with this functionality. Are you recommending
us to completely disable this part for now as it isn't needed right
now?
 
  line 179, what is "javax.tools.JavaCompilerTool" and why is it
  listed as in RESOURCE_SUFFIXES

It's possible we could express this differently. It's a file that
needs to be copied as a resource (from source to classes dir) and
this was the easiest way I found of getting it to be copied. Adding
a comment to explain it for now.
 line
  194, is the JARMAIN required? It should not be used downstream, so
  does it need to be set here?

Probably not. Removing and testing.
 
  -- Jon
  
  
  
  On 04/04/2012 07:41 AM, Erik Joelsson wrote:
  

One final review update. Cleanup of configure help output and
make help target in root repo.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.03/

/Erik

On 2012-04-03 11:59, Erik Joelsson wrote:

  
  Fixed these comments and posted new webrevs:
  
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.02/
  
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.02/
  
  (Tried making a single webrev but my forest extension isn't
  working that well)
  
  /Erik
  
  On 2012-03-30 20:08, Kelly O'Hair wrote:
  
Corba Makefile says:  45 # Thus we force the target bytecode to 6.
But I think 6 should be 7, or better yet "...the

boot



jdk target bytecode."








  
Everything else looks ok
to

me.


-kto



  
  
  On 2012-03-30 15:19, Jonathan Gibbons wrote:
  
langtools makefile...

line 55 typo in comment "ony"

line 57 grammar in comment "list of to be created"

The Swedish examples are somewhat silly since there are no
swedish properties files.

The comments on line 92--94 are inaccurate: javac is only
build twice, not three times.

line 130: grammar, should be either "strip them of all
content" or "strip all content from them"

line 168: not clear what "this setup" refers to.

-- Jon
  

  
  

  



Re: Review Request: Build-infra M1

2012-04-04 Thread Jonathan Gibbons

On 04/04/2012 08:39 AM, Erik Joelsson wrote:


line 179, what is javax.tools.JavaCompilerTool and why is it listed 
as in RESOURCE_SUFFIXES
It's possible we could express this differently. It's a file that 
needs to be copied as a resource (from source to classes dir) and this 
was the easiest way I found of getting it to be copied. Adding a 
comment to explain it for now.


OK, I see it now.   Oops.  It appears to be vestiges of incomplete 
undocumented functionality.  Neither the name of the file or the name in 
it refer to valid types.


I'll file a CR to remove it.

-- Jon



Re: Review Request: Build-infra M1

2012-04-03 Thread Erik Joelsson


  
  
Fixed these comments and posted new webrevs:

http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.02/

http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.02/

(Tried making a single webrev but my forest extension isn't working
that well)

/Erik

On 2012-03-30 20:08, Kelly O'Hair wrote:

  Corba Makefile says:  45 # Thus we force the target bytecode to 6.
  But I think 6 should be 7, or better yet "...the boot
  jdk target bytecode."
  

  Everything else looks ok to me.
  
  
  -kto
  
  
  


On 2012-03-30 15:19, Jonathan Gibbons wrote:

  langtools makefile...
  
  line 55 typo in comment "ony"
  
  line 57 grammar in comment "list of to be created"
  
  The Swedish examples are somewhat silly since there are no swedish
  properties files.
  
  The comments on line 92--94 are inaccurate: javac is only build
  twice, not three times.
  
  line 130: grammar, should be either "strip them of all content" or
  "strip all content from them"
  
  line 168: not clear what "this setup" refers to.
  
  -- Jon

  



Re: Review Request: Build-infra M1

2012-03-30 Thread Erik Joelsson


  
  
Updated one webrev

root:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.02/

* Legal headers on all files except compress.post, compress.pre and
uncompress.sed.
* Fixed check for static c++ linking, was supposed to be fixed
already but the change had somehow disappeared.

/Erik


On 2012-03-29 16:05, Erik Joelsson wrote:

  
  Updated webrevs:
  
  root, configure script and makefiles:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.01/
  
  langtools, 1 new makefile:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.01/
  
  corba, 1 new makefile:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.01/
  
  jaxp, 1 new makefile
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new.01/
  
  jaxws, 1 new makefile
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new.01/
  
  jdk, all changes including a partial copy of the old makefiles
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new.01/
  
  General changes:
  * Added link to documentation to README-builds.html. It's
  currently just a short user guide but we plan to expand on this
  over the next week. http://openjdk.java.net/projects/build-infra/guide.html
  * Fixed legal headers.
  * Cleanup of variable names in configure.
  * Numerous bugfixes.
  
  The GenerateNativeHeaders change has made it into jdk8-master but
  hasn't gone into the build forest yet. Same goes for our last
  hotspot build change (JVM_VARIANT*). Both of these are needed for
  the new build to function properly.
  
  Now please share your comments. Especially regarding what
  information you would like to see in the documentation.
  
  /Erik
  
  
  On 2012-03-21 15:07, Erik Joelsson wrote:
  

As outlined in [1], the build-infra project would like to push
the current work into jdk8 in order to expose it to a wider
audience. The webrevs are made against the jdk8/build forest. In
each repository, there are two kinds of changes: 

1. Changes to old makefiles and source code to be compatible
with the new build.
2. The new makefiles

For corba, jaxp and jaxws, all changes of category 1 have
already gone in. For langtools, we are awaiting one more change
for introducing the GenerateNativeHeader annotation. For
hotspot, all necessary changes have been pushed into hotspot-rt.
For jdk, there are two webrevs, one with everything and one with
just the category 1 changes, to make it easier to see them.
Finally for the root repository there are only new files in the
common subdir.

root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/

langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/

langtools, GenerateNativeHeader annotation (this is already
going in through tools, but adding it here for reference as the
jdk changes depend on it)
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/

corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/

jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/

jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/

jdk, just the changes to old files
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/

jdk, all changes including a partial copy of the old makefiles.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/

Of course, if you prefer you can look at the new makefiles
directly in the build-infra/jdk8 repository forest too.

These changes should not affect the old build at all. To build
using the new build system, change directory to
"common/makefiles" and:

../autoconf/configure
make
(make images)

State of the new build (the old build should of course be
unaffected):

  Linux 32bit: Works
  
  Linux 64bit: Works
  Windows 32bit: Works
  
  Windows 64bit: Works
  Solaris i586: Builds but launchers currently unusable

Some notes:

  The old and new build (on linux x64) produce very close to
equal results. There is a comparison script in
common/bin/compareimage.sh with which this can 

Re: Review Request: Build-infra M1

2012-03-30 Thread Jonathan Gibbons
Editorial comments like this one in the langtools makefile are 
inappropriate and should be removed.


  53 # (By the way, resource bundles are silly, get rid of them, read the 
properties directly instead.)


-- Jon

On 03/30/2012 12:56 PM, Erik Joelsson wrote:

Updated one webrev

root:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.02/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new.02/


* Legal headers on all files except compress.post, compress.pre and 
uncompress.sed.
* Fixed check for static c++ linking, was supposed to be fixed already 
but the change had somehow disappeared.


/Erik


On 2012-03-29 16:05, Erik Joelsson wrote:

Updated webrevs:

root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new.01/


langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new.01/


corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new.01/


jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new.01/


jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new.01/


jdk, all changes including a partial copy of the old makefiles
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-new.01/


General changes:
* Added link to documentation to README-builds.html. It's currently 
just a short user guide but we plan to expand on this over the next 
week. http://openjdk.java.net/projects/build-infra/guide.html

* Fixed legal headers.
* Cleanup of variable names in configure.
* Numerous bugfixes.

The GenerateNativeHeaders change has made it into jdk8-master but 
hasn't gone into the build forest yet. Same goes for our last hotspot 
build change (JVM_VARIANT*). Both of these are needed for the new 
build to function properly.


Now please share your comments. Especially regarding what information 
you would like to see in the documentation.


/Erik


On 2012-03-21 15:07, Erik Joelsson wrote:
As outlined in [1], the build-infra project would like to push the 
current work into jdk8 in order to expose it to a wider audience. 
The webrevs are made against the jdk8/build forest. In each 
repository, there are two kinds of changes:


1. Changes to old makefiles and source code to be compatible with 
the new build.

2. The new makefiles

For corba, jaxp and jaxws, all changes of category 1 have already 
gone in. For langtools, we are awaiting one more change for 
introducing the GenerateNativeHeader annotation. For hotspot, all 
necessary changes have been pushed into hotspot-rt. For jdk, there 
are two webrevs, one with everything and one with just the category 
1 changes, to make it easier to see them. Finally for the root 
repository there are only new files in the common subdir.


root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new/


langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new/


langtools, GenerateNativeHeader annotation (this is already going in 
through tools, but adding it here for reference as the jdk changes 
depend on it)
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-nativeheader/


corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new/


jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new/


jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new/


jdk, just the changes to old files
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-other/


jdk, all changes including a partial copy of the old makefiles.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-new/


Of course, if you prefer you can look at the new makefiles directly 
in the build-infra/jdk8 repository forest too.


These changes should not affect the old build at all. To build using 
the new build 

Re: Review Request: Build-infra M1

2012-03-30 Thread Jonathan Gibbons

langtools makefile...

line 55 typo in comment ony

line 57 grammar in comment list of to be created

The Swedish examples are somewhat silly since there are no swedish 
properties files.


The comments on line 92--94 are inaccurate: javac is only build twice, 
not three times.


line 130: grammar, should be either strip them of all content or 
strip all content from them


line 168: not clear what this setup refers to.

-- Jon

On 03/30/2012 12:56 PM, Erik Joelsson wrote:

Updated one webrev

root:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.02/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new.02/


* Legal headers on all files except compress.post, compress.pre and 
uncompress.sed.
* Fixed check for static c++ linking, was supposed to be fixed already 
but the change had somehow disappeared.


/Erik


On 2012-03-29 16:05, Erik Joelsson wrote:

Updated webrevs:

root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new.01/


langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new.01/


corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new.01/


jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new.01/


jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new.01/


jdk, all changes including a partial copy of the old makefiles
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new.01/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-new.01/


General changes:
* Added link to documentation to README-builds.html. It's currently 
just a short user guide but we plan to expand on this over the next 
week. http://openjdk.java.net/projects/build-infra/guide.html

* Fixed legal headers.
* Cleanup of variable names in configure.
* Numerous bugfixes.

The GenerateNativeHeaders change has made it into jdk8-master but 
hasn't gone into the build forest yet. Same goes for our last hotspot 
build change (JVM_VARIANT*). Both of these are needed for the new 
build to function properly.


Now please share your comments. Especially regarding what information 
you would like to see in the documentation.


/Erik


On 2012-03-21 15:07, Erik Joelsson wrote:
As outlined in [1], the build-infra project would like to push the 
current work into jdk8 in order to expose it to a wider audience. 
The webrevs are made against the jdk8/build forest. In each 
repository, there are two kinds of changes:


1. Changes to old makefiles and source code to be compatible with 
the new build.

2. The new makefiles

For corba, jaxp and jaxws, all changes of category 1 have already 
gone in. For langtools, we are awaiting one more change for 
introducing the GenerateNativeHeader annotation. For hotspot, all 
necessary changes have been pushed into hotspot-rt. For jdk, there 
are two webrevs, one with everything and one with just the category 
1 changes, to make it easier to see them. Finally for the root 
repository there are only new files in the common subdir.


root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new/


langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new/


langtools, GenerateNativeHeader annotation (this is already going in 
through tools, but adding it here for reference as the jdk changes 
depend on it)
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-nativeheader/


corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new/


jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new/


jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new/


jdk, just the changes to old files
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-other/


jdk, all changes including a partial copy of the old makefiles.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/ 

Re: Review Request: Build-infra M1

2012-03-30 Thread Kelly O'Hair
Corba Makefile says:  45 # Thus we force the target bytecode to 6.
But I think 6 should be 7, or better yet  ...the boot jdk target bytecode.

Everything else looks ok to me.

-kto

On Mar 29, 2012, at 7:05 AM, Erik Joelsson wrote:

 Updated webrevs:
 
 root, configure script and makefiles:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.01/
 
 langtools, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.01/
 
 corba, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.01/
 
 jaxp, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new.01/
 
 jaxws, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new.01/
 
 jdk, all changes including a partial copy of the old makefiles
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new.01/
 
 General changes:
 * Added link to documentation to README-builds.html. It's currently just a 
 short user guide but we plan to expand on this over the next week. 
 http://openjdk.java.net/projects/build-infra/guide.html
 * Fixed legal headers.
 * Cleanup of variable names in configure.
 * Numerous bugfixes.
 
 The GenerateNativeHeaders change has made it into jdk8-master but hasn't gone 
 into the build forest yet. Same goes for our last hotspot build change 
 (JVM_VARIANT*). Both of these are needed for the new build to function 
 properly.
 
 Now please share your comments. Especially regarding what information you 
 would like to see in the documentation.
 
 /Erik
 
 
 On 2012-03-21 15:07, Erik Joelsson wrote:
 
 As outlined in [1], the build-infra project would like to push the current 
 work into jdk8 in order to expose it to a wider audience. The webrevs are 
 made against the jdk8/build forest. In each repository, there are two kinds 
 of changes: 
 
 1. Changes to old makefiles and source code to be compatible with the new 
 build.
 2. The new makefiles
 
 For corba, jaxp and jaxws, all changes of category 1 have already gone in. 
 For langtools, we are awaiting one more change for introducing the 
 GenerateNativeHeader annotation. For hotspot, all necessary changes have 
 been pushed into hotspot-rt. For jdk, there are two webrevs, one with 
 everything and one with just the category 1 changes, to make it easier to 
 see them. Finally for the root repository there are only new files in the 
 common subdir.
 
 root, configure script and makefiles:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/
 
 langtools, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/
 
 langtools, GenerateNativeHeader annotation (this is already going in through 
 tools, but adding it here for reference as the jdk changes depend on it)
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/
 
 corba, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/
 
 jaxp, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/
 
 jaxws, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/
 
 jdk, just the changes to old files
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/
 
 jdk, all changes including a partial copy of the old makefiles.
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/
 
 Of course, if you prefer you can look at the new makefiles directly in the 
 build-infra/jdk8 repository forest too.
 
 These changes should not affect the old build at all. To build using the new 
 build system, change directory to common/makefiles and:
 
 ../autoconf/configure
 make
 (make images)
 
 State of the new build (the old build should of course be unaffected):
 Linux 32bit: Works
 Linux 64bit: Works
 Windows 32bit: Works
 Windows 64bit: Works
 Solaris i586: Builds but launchers currently unusable
 Some notes:
 The old and new build (on linux x64) produce very close to equal results.  
 There is a comparison script in common/bin/compareimage.sh with which this 
 can be checked.
 Not all makefiles in jdk have been converted yet, for those that haven't 
 been, a copy of the old files are used.
 Not all promised features in the java compilation are active and ready in 
 this milestone. Most notably, it's still not using more than one cpu and the 
 nifty new dependency tracking is disabled. A clean build is still pretty 
 fast, but incremental builds aren't as good as they will be yet.
 On windows, only cygwin is currently supported. 
 Now please share your feedback!
 
 /Erik
 
 [1] 
 http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html
 



Review Request: Build-infra M1

2012-03-29 Thread Erik Joelsson


  
  
Updated webrevs:

root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new.01/

langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new.01/

corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new.01/

jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new.01/

jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new.01/

jdk, all changes including a partial copy of the old makefiles
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new.01/

General changes:
* Added link to documentation to README-builds.html. It's currently
just a short user guide but we plan to expand on this over the next
week. http://openjdk.java.net/projects/build-infra/guide.html
* Fixed legal headers.
* Cleanup of variable names in configure.
* Numerous bugfixes.

The GenerateNativeHeaders change has made it into jdk8-master but
hasn't gone into the build forest yet. Same goes for our last
hotspot build change (JVM_VARIANT*). Both of these are needed for
the new build to function properly.

Now please share your comments. Especially regarding what
information you would like to see in the documentation.

/Erik


On 2012-03-21 15:07, Erik Joelsson wrote:

  
  As outlined in [1], the build-infra project would like to push the
  current work into jdk8 in order to expose it to a wider audience.
  The webrevs are made against the jdk8/build forest. In each
  repository, there are two kinds of changes: 
  
  1. Changes to old makefiles and source code to be compatible with
  the new build.
  2. The new makefiles
  
  For corba, jaxp and jaxws, all changes of category 1 have already
  gone in. For langtools, we are awaiting one more change for
  introducing the GenerateNativeHeader annotation. For hotspot, all
  necessary changes have been pushed into hotspot-rt. For jdk, there
  are two webrevs, one with everything and one with just the
  category 1 changes, to make it easier to see them. Finally for the
  root repository there are only new files in the common subdir.
  
  root, configure script and makefiles:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/
  
  langtools, 1 new makefile:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/
  
  langtools, GenerateNativeHeader annotation (this is already going
  in through tools, but adding it here for reference as the jdk
  changes depend on it)
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/
  
  corba, 1 new makefile:
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/
  
  jaxp, 1 new makefile
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/
  
  jaxws, 1 new makefile
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/
  
  jdk, just the changes to old files
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/
  
  jdk, all changes including a partial copy of the old makefiles.
  http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/
  
  Of course, if you prefer you can look at the new makefiles
  directly in the build-infra/jdk8 repository forest too.
  
  These changes should not affect the old build at all. To build
  using the new build system, change directory to "common/makefiles"
  and:
  
  ../autoconf/configure
  make
  (make images)
  
  State of the new build (the old build should of course be
  unaffected):
  
Linux 32bit: Works

Linux 64bit: Works
Windows 32bit: Works

Windows 64bit: Works
Solaris i586: Builds but launchers currently unusable
  
  Some notes:
  
The old and new build (on linux x64) produce very close to
  equal results. There is a comparison script in
  common/bin/compareimage.sh with which this can be checked.
Not all makefiles in jdk have been converted yet, for those
  that haven't been, a copy of the old files are used.
Not all promised features in the java compilation are active
  and ready in this milestone. Most notably, it's still not
  using more than one cpu and the nifty new dependency tracking
  is disabled. A clean build is still pretty fast, but
  incremental builds aren't as good as they will be yet.
On windows, only cygwin is currently supported. 

  
  Now please share your feedback!
  
  /Erik
  
  [1] 

Re: Review Request: Build-infra M1

2012-03-27 Thread Alan Bateman


This isn't really an issue for the first push, more of a question as to 
how this will all look once the remaining make files has been converted. 
My question relates to jdk/makefiles/CompileJavaClasses.gmk and 
CompileNativeLibraries.gmk and how they will be maintained more longer 
term. Is the intention that over time that the references to AWT, JDWP, 
SCTP, and other specific areas will be moved elsewhere?


-Alan


Re: Review Request: Build-infra M1

2012-03-27 Thread Fredrik Öhrström

2012-03-27 16:39, Michael McMahon skrev:

A few more things I'd like to understand are:

1) In what circumstances exactly would the configure script have to be 
re-run?




You run configure once to setup a particular build configuration.
After it is run, you only need to run make for the build configuration.
Rerunning configure on an already setup build configuration is not 
recommended.
If you want to tweak something (like different flags to compilers and 
such, just

edit the generated spec.gmk file.

2) Can you give examples of the kind of build changes that would be 
needed :-
 - when a small'ish change is made (eg adding a couple of new 
source files, or renaming

or removing them)?


Adding/removing source files does not require a rerun of configure.

-  when a new component is added, with both Java and native 
sources in new source directories


Adding an entire subdirectory of sources, more native source etc etc 
does not require a rerun of configure.


Configure does not care about source code layout except where the 
repositories are. It knows how to
find/download compilers/linkers/tools and create a spec.gmk file with 
all the necessary variables
that encode this information. (For example: 
CC,JDK_TOPDIR,OUTPUT_ROOT,ARCH etc etc)


//Fredrik


Re: Review Request: Build-infra M1

2012-03-27 Thread Michael McMahon

On 27/03/12 16:04, Fredrik Öhrström wrote:

2012-03-27 16:39, Michael McMahon skrev:

A few more things I'd like to understand are:

1) In what circumstances exactly would the configure script have to 
be re-run?




You run configure once to setup a particular build configuration.
After it is run, you only need to run make for the build configuration.
Rerunning configure on an already setup build configuration is not 
recommended.
If you want to tweak something (like different flags to compilers and 
such, just

edit the generated spec.gmk file.

2) Can you give examples of the kind of build changes that would be 
needed :-
 - when a small'ish change is made (eg adding a couple of new 
source files, or renaming

or removing them)?


Adding/removing source files does not require a rerun of configure.

-  when a new component is added, with both Java and native 
sources in new source directories


Adding an entire subdirectory of sources, more native source etc etc 
does not require a rerun of configure.


Configure does not care about source code layout except where the 
repositories are. It knows how to
find/download compilers/linkers/tools and create a spec.gmk file with 
all the necessary variables
that encode this information. (For example: 
CC,JDK_TOPDIR,OUTPUT_ROOT,ARCH etc etc)


Right. Configure doesn't need to be re-run, but presumably there is some 
build
meta-information linking sources to target libraries etc. Say a new 
native library
libfoo were to be added with associated C (and Java) sources. Where 
would this get added to

the build system?

- Michael


Re: Review Request: Build-infra M1

2012-03-27 Thread Fredrik Öhrström

2012-03-27 17:21, Michael McMahon skrev:


Right. Configure doesn't need to be re-run, but presumably there is 
some build
meta-information linking sources to target libraries etc. Say a new 
native library
libfoo were to be added with associated C (and Java) sources. Where 
would this get added to

the build system?


New Java sources in the jdk need no special treatment (though if they 
are platform dependent you might
have to be careful how they are added to the source tree, since it is a 
mess) and they
are all compiled in a single javac invocation defined in 
CompileJavaClasses.gmk


For native libraries, a new library is added as a macro call to 
SetupNativeCompilation
in CompileNativeLibraries.gmk. All libraries are added to the variable 
BUILD_LIBRARIES

and the target all depends on $(BUILD_LIBRARIES)

The macro SetupNativeCompilation  configures all dependencies between 
source files
(and header files) to object files to the library. Enabling incremental 
builds.


//Fredrik


Re: Review Request: Build-infra M1

2012-03-26 Thread Michael McMahon

On 23/03/12 19:11, Fredrik Öhrström wrote:

in increasing order of verbosity

make VERBOSE=
make VERBOSE=-d
make VERBOSE=-d -p

Thanks. It looks like the first of the three options above is most 
similar to the verbosity

level of the old build. Is all of this documented anywhere?

I think at the very least, a cheat-sheet will be needed to help people 
transition between
the two systems, and options like the first one above will be very 
commonly used as part of that.
Maybe an actual flag value for that setting (as opposed to the empty 
string) might be more

meaningful.

Another minor (newbie) comment, is that some of the configure flags are 
documented (in --help)
as --with-XXX=PATH, but there are some that should be documented the 
same way, but aren't

(--with-boot-jdk is the one many will see first)

- Michael
Den fredagen den 23:e mars 2012 skrev Michael 
McMahonmichael.x.mcma...@oracle.com 
mailto:michael.x.mcma...@oracle.com:
 Is it possible to get a more verbose style of echoing the complete 
compile/build commands

 like the old build ?

 - Michael

 On 21/03/12 14:07, Erik Joelsson wrote:

 As outlined in [1], the build-infra project would like to push the 
current work into jdk8 in order to expose it to a wider audience. The 
webrevs are made against the jdk8/build forest. In each repository, 
there are two kinds of changes:


 1. Changes to old makefiles and source code to be compatible with 
the new build.

 2. The new makefiles

 For corba, jaxp and jaxws, all changes of category 1 have already 
gone in. For langtools, we are awaiting one more change for 
introducing the GenerateNativeHeader annotation. For hotspot, all 
necessary changes have been pushed into hotspot-rt. For jdk, there are 
two webrevs, one with everything and one with just the category 1 
changes, to make it easier to see them. Finally for the root 
repository there are only new files in the common subdir.


 root, configure script and makefiles:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new/


 langtools, 1 new makefile:
 
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new/


 langtools, GenerateNativeHeader annotation (this is already going in 
through tools, but adding it here for reference as the jdk changes 
depend on it)
 
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-nativeheader/


 corba, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new/


 jaxp, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new/


 jaxws, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new/


 jdk, just the changes to old files
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-other/


 jdk, all changes including a partial copy of the old makefiles.
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/ 
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-new/


 Of course, if you prefer you can look at the new makefiles directly 
in the build-infra/jdk8 repository forest too.


 These changes should not affect the old build at all. To build using 
the new build system, change directory to common/makefiles and:


 ../autoconf/configure
 make
 (make images)

 State of the new build (the old build should of course be unaffected):

 Linux 32bit: Works
 Linux 64bit: Works
 Windows 32bit: Works
 Windows 64bit: Works
 Solaris i586: Builds but launchers currently unusable

 Some notes:

 The old and new build (on linux x64) produce very close to equal 
results.  There is a comparison script in common/bin/compareimage.sh 
with which this can be checked.
 Not all makefiles in jdk have been converted yet, for those that 
haven't been, a copy of the old files are used.
 Not all promised features in the java compilation are active and 
ready in this milestone. Most notably, it's still not using more than 
one cpu and the nifty new dependency tracking is disabled. A clean 
build is still pretty fast, but incremental builds aren't as good as 
they will be yet.

 On windows, only cygwin is currently supported.

 Now please share your feedback!

 /Erik

 [1] 
http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html



 




Re: Review Request: Build-infra M1

2012-03-26 Thread Fredrik Öhrström
2012-03-26 12:05, Michael McMahon skrev:
 Thanks. It looks like the first of the three options above is most 
 similar to the verbosity
 level of the old build. Is all of this documented anywhere?

Well, I have so far really tried to comment in the makefiles. So the
make VERBOSE=
trick is the first thing that is written in the root Makefile. :-)

However, I agree that reading the makefiles really, is not an option for
most people.
Thus here is a first cheat sheet of the options that are of OpenJDK
builder interest.
(The list will change and also be expanded with more configuration
options.)
It is in fact the output from configure --help where I have removed
options of
more generic interest and that are not really used yet. For example
detailed install locations
and such.

The configure script tries to figure everything out for you. The goal is
that you should
not have to configure the number of cores, where the boot jdk is etc etc.

For example, the configure script does try to find your boot jdk on
Windows by looking
in the default installation locations. It does so only partially on the
Mac.  (Please add
that code to configure.ac if you like!) So you specify
--with-boot-jdk=jdk7
only when want to override, or if you have a special installation.

The same is true for most other options, number of cores, amount of
memory etc etc.

On Windows, you have to specify the path to the freetype dlls and header
files.
Since they have no default location. But the configure script will find
your visual
studio installation!

Typical configure examples:

# Plain and simple, build a release version.
../autoconf/configure

# You want to debug?
../autoconf/configure --enable-debug

# A windows build.
../autoconf/configure --with-freetype=/cygdrive/c/downloads/myfreetype
--with-boot-jdk=/cygdrive/c/javas/jdk7

# Build using incremental build for java. Ie rebuild only the package
and its dependent packages when a single
# Java source file is changed.
../autoconf/configure --enable-javac-server --enable-javac-deps
--enable-javac-multi-core

# Cross compiling to 32 bit, and build only the server jvm.
../autoconf/configure --host=i686-unknown-linux-gnu
--with-sys-root=/home/sysroots/for32bitlinux --with-jvm-variants=server

# Plain and simple.
make

# Debug the build process.
make VERBOSE=

# If you have run configure twice from the makefiles directory.
# (For example you have normal configure and a cross configure)
# This make command will build all configurations.
make ALL

---

  --build=BUILD configure for building on BUILD [guessed] But it is
recommended that you set it.

  --host=HOST   cross-compile to build programs to run on HOST [BUILD]

  --disable-head  Should support for a head (graphical UI
support) be
  compiled into the jdk/jvm? [default=enabled]

  --enable-debug  Enable the debug level=fastdebug, ie asserts,
-g and
  optimizations.

  --disable-ccacheShould ccache be used to speed up recompilations?
  [default=enabled]

  --disable-precompiled-headers
  Should precompiled headers be used by the C++
  compiler [default=enabled]

  --enable-javac-server  Disable the shared javac server during the build
  process, which is enabled by default.

  --enable-javac-deps Enable the dependency tracking between Java
  packages.

  --enable-javac-multi-core
  Compile Java packages concurrently instead of
doing
  a batch compile of each source root.

  --disable-macosx-runtime-support
  Disable use of the MacOSX Java runtime support
  framework.

  --disable-docs  Disable generation of documentation
  [default=disabled] (Should be enabled, but
  we really need to fix the speed of javadoc!)

  --disable-nimbusDisable nimbus LF [default=enabled]

  --disable-static-link-stdc++
  Use only dynamic linking to the c++ runtime on
Linux.
  The default is to static link.

  --enable-hotspot-test-in-build
  Enable running of Queens test after Hotspot build.
  Automatically disabled when cross compiling.

  --with-num-cores=32 specify the number of cores in the build system.

  --with-memorysize=1024  specify the number MB of memory in the build
system.
 Used to limit number of
concurrent javacs.

  --with-jdk-variant  Choose jdk variant to build: normal,embedded.
  [default=normal]

  --with-jvm-variants Choose jvm variants, separated by commas, to
build:
  

Re: Review Request: Build-infra M1

2012-03-26 Thread Jonathan Gibbons

On 03/26/2012 12:09 PM, Fredrik Öhrström wrote:

However, I agree that reading the makefiles really, is not an option for
most people.


... or even desirable. :-)

-- Jon


Re: Review Request: Build-infra M1

2012-03-26 Thread Kelly O'Hair

Nothing that can't be fixed or adjusted after the initial integration. So 
consider me a reviewer.
Just a few comments.

* I noticed that the copyright years were a little strange, saying Copyright 
(c) 2007, 2011, instead of Copyright (c) 2011, 2012, or Copyright (c) 
2012,.

* The @GenerateNativeHeader additions seem like they deserve some kind of 
comment, maybe a short one on the same line, like No native methods here, but 
the constants are needed in the supporting JNI code  or something like that?

* The top repo's additions are a bit of a mind blower. Lots of stuff here. 
Haven't seem m4 files in a long time. ;^)

   - In common/makefiles/IdlCompilation.gmk, lines 82-84 it says
   82 $(if $3,$1_$(strip $2))
   83 $(if $3,$1_$(strip $3))
   84 $(if $4,$1_$(strip $4))
 Is line 82 right? $3 and not $2?

  - In common/makefiles/MakeBase.gmk, this is very strange to me:
 134 compress_pre:=$(strip $(shell cat 
$(SRC_ROOT)/common/makefiles/compress.pre))
 135 compress_post:=$(strip $(shell cat 
$(SRC_ROOT)/common/makefiles/compress.post))
This path mapping logic seems like high maintenance. I understand what it 
is trying to get around,
and I don't have any suggestions for improvements at this time, but it does 
look very very touchy stuff. :^(
The good thing is that we have only one copy of it, and if anyone figures 
out a better way, we can change it, in one place.

It will take me quite a bit of time to understand this new makefile logic 
completely.

-kto



On Mar 21, 2012, at 7:07 AM, Erik Joelsson wrote:

 As outlined in [1], the build-infra project would like to push the current 
 work into jdk8 in order to expose it to a wider audience. The webrevs are 
 made against the jdk8/build forest. In each repository, there are two kinds 
 of changes: 
 
 1. Changes to old makefiles and source code to be compatible with the new 
 build.
 2. The new makefiles
 
 For corba, jaxp and jaxws, all changes of category 1 have already gone in. 
 For langtools, we are awaiting one more change for introducing the 
 GenerateNativeHeader annotation. For hotspot, all necessary changes have been 
 pushed into hotspot-rt. For jdk, there are two webrevs, one with everything 
 and one with just the category 1 changes, to make it easier to see them. 
 Finally for the root repository there are only new files in the common subdir.
 
 root, configure script and makefiles:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/
 
 langtools, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/
 
 langtools, GenerateNativeHeader annotation (this is already going in through 
 tools, but adding it here for reference as the jdk changes depend on it)
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/
 
 corba, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/
 
 jaxp, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/
 
 jaxws, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/
 
 jdk, just the changes to old files
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/
 
 jdk, all changes including a partial copy of the old makefiles.
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/
 
 Of course, if you prefer you can look at the new makefiles directly in the 
 build-infra/jdk8 repository forest too.
 
 These changes should not affect the old build at all. To build using the new 
 build system, change directory to common/makefiles and:
 
 ../autoconf/configure
 make
 (make images)
 
 State of the new build (the old build should of course be unaffected):
 Linux 32bit: Works
 Linux 64bit: Works
 Windows 32bit: Works
 Windows 64bit: Works
 Solaris i586: Builds but launchers currently unusable
 Some notes:
 The old and new build (on linux x64) produce very close to equal results.  
 There is a comparison script in common/bin/compareimage.sh with which this 
 can be checked.
 Not all makefiles in jdk have been converted yet, for those that haven't 
 been, a copy of the old files are used.
 Not all promised features in the java compilation are active and ready in 
 this milestone. Most notably, it's still not using more than one cpu and the 
 nifty new dependency tracking is disabled. A clean build is still pretty 
 fast, but incremental builds aren't as good as they will be yet.
 On windows, only cygwin is currently supported. 
 Now please share your feedback!
 
 /Erik
 
 [1] 
 http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html
 



Re: Review Request: Build-infra M1

2012-03-26 Thread Fredrik Öhrström

2012-03-26 18:13, Kelly O'Hair skrev:

* The @GenerateNativeHeader additions seem like they deserve some kind of comment, 
maybe a short one on the same line, like No native methods here, but the constants are needed 
in the supporting JNI code  or something like that?

Good idea!



* The top repo's additions are a bit of a mind blower. Lots of stuff here. 
Haven't seem m4 files in a long time. ;^)

- In common/makefiles/IdlCompilation.gmk, lines 82-84 it says
82 $(if $3,$1_$(strip $2))
83 $(if $3,$1_$(strip $3))
84 $(if $4,$1_$(strip $4))
  Is line 82 right? $3 and not $2?
Thank you for catching this! It is a bug, but the code works anyway, 
since there is always at least 3 arguments.


   - In common/makefiles/MakeBase.gmk, this is very strange to me:
  134 compress_pre:=$(strip $(shell cat 
$(SRC_ROOT)/common/makefiles/compress.pre))
  135 compress_post:=$(strip $(shell cat 
$(SRC_ROOT)/common/makefiles/compress.post))
 This path mapping logic seems like high maintenance. I understand what it 
is trying to get around,
 and I don't have any suggestions for improvements at this time, but it 
does look very very touchy stuff. :^(
 The good thing is that we have only one copy of it, and if anyone figures 
out a better way, we can change it, in one place.
Well, the compression does not need to be perfect, it just helps out 
when chunking a list of paths into units that can be handled by
the command line length limits on cygwin and solaris. If there was a 
single feature that I would like to have in make, it would
be a way to export a variable to a file on disk, without having to go 
through the command line. This is particularly problematic
with Java since there are so many more Java sources in a Java project, 
than there are C sources in a C-project. Not even the

list of packages in the jdk fits on the cygwin command line!

//Fredrik


Re: Review Request: Build-infra M1

2012-03-24 Thread David Holmes

Kelly,

On 24/03/2012 1:16 AM, Kelly O'Hair wrote:


On Mar 22, 2012, at 4:51 PM, David Holmes wrote:


Not wanting to go too OT here but I see the build-deps server as something
to be used at most per machine rather than per developer. We have build
servers internally that can be used by dozens of developers and we don't
want multiple copies of toolsets. Even in the new build system I would
expect to see the toolsets (for cross-compilation) installed on shared NFS
mounts for use by these build servers. But at worse I would expect to have
one installation per machine.


Unless it is done properly, having multiple developers updating a single
machine copy of build dependency files could be a disaster.


I don't know what exactly you mean by that but I don't propose that multiple 
developers update anything. I expect multiple developers to _use_ a stable 
(perhaps local) copy of the build tools for the build they are doing. How 
that one copy gets setup is a different issue.


David
-

Not all developers would be working on source bases

with the exact same dependencies.
And NFS mounts create even more complications, creating a network dependence
and similar update issues.

If you don't have control over these dependencies, every build you do could
result in different bits, and if the
build dependencies do need to change, it's important that the individual
developer knows that they did change,
and how to back it out or realize why things changed.

It has been my view that local disk space is not an issue on most modern
systems, and having many copies is
not a problem if it is managed automatically and not manually, i.e. they
really are the right copies.
Having it local and unique to that developer would provide the most
predictable results, but only if we can get
the automatic install/update logic reliable.

I'm currently having a great deal of problem with our internal buildtest
system and it's all related to the systems
changing out from under us all the time. Automatic updates being installed,
automatic virus definitions changing,
automatic defragmentation of the disks every week, services that keep other
services running, and automatic reboots
for a variety of reasons. Virtual machines also come with mixed blessings,
it's a complicated world.
Stability and predictability is hard in an ever changing world. So I'm
frequently trying to make sure that we
are dealing with fewer variables and more constants, and if the constants
need to change, change them carefully.

-kto


Re: Review Request: Build-infra M1

2012-03-24 Thread David Holmes

On 24/03/2012 5:57 AM, Andrew Hughes wrote:

I know that's the current status quo.  It seemed to be being suggested
that the closed rules be removed from the public Makefiles and kept
separately.  Maybe I misunderstood.


No, that is what I am proposing. Why should instructions on how to build 
sources that don't exist in the OpenJDK be part of the OpenJDK makefiles? At 
best they are just clutter for OpenJDK developers.


David
--


Re: Review Request: Build-infra M1

2012-03-23 Thread Fredrik Öhrström
2012-03-23 00:51, David Holmes skrev:

 Not wanting to go too OT here but I see the build-deps server as
 something to be used at most per machine rather than per developer. We
 have build servers internally that can be used by dozens of developers
 and we don't want multiple copies of toolsets.

And this is exactly how the configure script is setup. If you run
configure --help
you see:
  --with-builddeps-dirstore downloaded build dependencies here
  [default=/localhome/builddeps]

Ie. the default installation is directory is supposed to be shared on
the build server,
and to do it correctly, you have also:
  --with-builddeps-group  chgrp the downloaded build dependencies to
this group
it even takes  precautions to make it work even when to concurrent
configures try to download the same builddeps.

 Even in the new build
 system I would expect to see the toolsets (for cross-compilation)
 installed on shared NFS mounts for use by these build servers. But at
 worse I would expect to have one installation per machine.

The builddeps supports using an NFS-mount as well. Please have a look
in builddeps.java.conf which is useful to verify the old way of building
with
an active nfs-mount.

Using an NFS-mount is so 1990:ish. At least, when it has no support for
versioning the builddeps and no automated assistance to install only the
necessary builddeps on the build machine.

 I firmly believe that openjdk build files should only contain
 instructions for building openjdk source code. The alt-src mechanism is
 a simple mechanism to let us override an open source file with a
 closed one. This mechanism is available to anyone who wants to
 customize their OpenJDK without hacking the main OpenJDK sources.

And the configure equivalent to alt-src is called
--with-add-source-root=/--with-override-source-root=

 My concern, hence my question about needing to read/understand this
 file, is what happens if it doesn't work on a system? How do we debug
 the issue? Sure we can just run autoconf to generate a new (and
 hopefully working) version, but how do we determine what needs to get
 checked back into the repo?

You debug it, usually by adding echo debugme=$VARTODEBUG
in configure.ac, regenerating configure, and checking the output.

The complexity of the generated configure script is that it is
cross-shell compatible.
I.e. it runs on many different versions of shells, not just bash and
if you use macros like AC_LINK_IFELSE, then clearly you are happy
that you did not have to write the expanded code yourself.

We should standardize on a version of autoconf to use, to minimize
the changes to the configure script, when an update is made. However
it is unnecessaru to worry too much about the configure diff, since a small
change in configure.ac can cause a large change in the configure
scripts, it is after all compiled code.

But the configure.ac program itself, is not complex, as programs go.
Just one test after another and some if statements. However there are
a lot of tests to do, which reflects of course the complexity of setting
up the OpenJDK build on different platforms.

//Fredrik


Re: Review Request: Build-infra M1

2012-03-23 Thread Kelly O'Hair

On Mar 22, 2012, at 4:51 PM, David Holmes wrote:

 Not wanting to go too OT here but I see the build-deps server as something to 
 be used at most per machine rather than per developer. We have build servers 
 internally that can be used by dozens of developers and we don't want 
 multiple copies of toolsets. Even in the new build system I would expect to 
 see the toolsets (for cross-compilation) installed on shared NFS mounts for 
 use by these build servers. But at worse I would expect to have one 
 installation per machine.

Unless it is done properly, having multiple developers updating a single 
machine copy of build dependency files
could be a disaster. Not all developers would be working on source bases with 
the exact same dependencies.
And NFS mounts create even more complications, creating a network dependence 
and similar update issues.

If you don't have control over these dependencies, every build you do could 
result in different bits, and if the
build dependencies do need to change, it's important that the individual 
developer knows that they did change,
and how to back it out or realize why things changed.

It has been my view that local disk space is not an issue on most modern 
systems, and having many copies is
not a problem if it is managed automatically and not manually, i.e. they really 
are the right copies.
Having it local and unique to that developer would provide the most predictable 
results, but only if we can get
the automatic install/update logic reliable.

I'm currently having a great deal of problem with our internal buildtest 
system and it's all related to the systems
changing out from under us all the time. Automatic updates being installed, 
automatic virus definitions changing,
automatic defragmentation of the disks every week, services that keep other 
services running, and automatic reboots
for a variety of reasons. Virtual machines also come with mixed blessings, it's 
a complicated world.
Stability and predictability is hard in an ever changing world. So I'm 
frequently trying to make sure that we
are dealing with fewer variables and more constants, and if the constants need 
to change, change them carefully.

-kto

Re: Review Request: Build-infra M1

2012-03-23 Thread Fredrik Öhrström
in increasing order of verbosity

make VERBOSE=
make VERBOSE=-d
make VERBOSE=-d -p


Den fredagen den 23:e mars 2012 skrev Michael McMahon
michael.x.mcma...@oracle.com:
 Is it possible to get a more verbose style of echoing the complete
compile/build commands
 like the old build ?

 - Michael

 On 21/03/12 14:07, Erik Joelsson wrote:

 As outlined in [1], the build-infra project would like to push the
current work into jdk8 in order to expose it to a wider audience. The
webrevs are made against the jdk8/build forest. In each repository, there
are two kinds of changes:

 1. Changes to old makefiles and source code to be compatible with the new
build.
 2. The new makefiles

 For corba, jaxp and jaxws, all changes of category 1 have already gone
in. For langtools, we are awaiting one more change for introducing the
GenerateNativeHeader annotation. For hotspot, all necessary changes have
been pushed into hotspot-rt. For jdk, there are two webrevs, one with
everything and one with just the category 1 changes, to make it easier to
see them. Finally for the root repository there are only new files in the
common subdir.

 root, configure script and makefiles:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/

 langtools, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/

 langtools, GenerateNativeHeader annotation (this is already going in
through tools, but adding it here for reference as the jdk changes depend
on it)

http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/

 corba, 1 new makefile:
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/

 jaxp, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/

 jaxws, 1 new makefile
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/

 jdk, just the changes to old files
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/

 jdk, all changes including a partial copy of the old makefiles.
 http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/

 Of course, if you prefer you can look at the new makefiles directly in
the build-infra/jdk8 repository forest too.

 These changes should not affect the old build at all. To build using the
new build system, change directory to common/makefiles and:

 ../autoconf/configure
 make
 (make images)

 State of the new build (the old build should of course be unaffected):

 Linux 32bit: Works
 Linux 64bit: Works
 Windows 32bit: Works
 Windows 64bit: Works
 Solaris i586: Builds but launchers currently unusable

 Some notes:

 The old and new build (on linux x64) produce very close to equal
results.  There is a comparison script in common/bin/compareimage.sh with
which this can be checked.
 Not all makefiles in jdk have been converted yet, for those that haven't
been, a copy of the old files are used.
 Not all promised features in the java compilation are active and ready in
this milestone. Most notably, it's still not using more than one cpu and
the nifty new dependency tracking is disabled. A clean build is still
pretty fast, but incremental builds aren't as good as they will be yet.
 On windows, only cygwin is currently supported.

 Now please share your feedback!

 /Erik

 [1]
http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html





Re: Review Request: Build-infra M1

2012-03-23 Thread Fredrik Öhrström
- ahug...@redhat.com skrev:
 I know that's the current status quo.  It seemed to be being
 suggested that the closed rules be removed from the public Makefiles and kept
 separately.  Maybe I misunderstood.

Well, I guess I would like the closed rules be so simple that
the default add/override functionality in the configure script
is enough. 

 With IcedTea, most of the changes are build changes for obvious
 reasons, so nearly every commit was regenerating configure :-)

The goal for the new build system must be, that for normal OpenJDK development,
there should rarely be any need to regenerate configure. The configure script
and the makefiles should deal with any normal change/addition/removal of source 
code
and new modules. Configure should only change to manage new platforms, new
compilers etc.

//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Fredrik Öhrström
- david.hol...@oracle.com skrev:
 
 My major concern with the transition here is being able to take
 existing knowledge of the build system and be able to figure out where in the
 new system certain things are handled. How can I tell if a Makefile is
 part of the old build or the new build? Are some both?

You read the file named LegacyMakefiles.gmk
and you will understand that the contents of java, javax, sun and com
contain the remaining legacy makefiles. The contents of these
will be brought up to the makefiles toplevel and put into CompileNativeLibraries
and or some of the other toplevel makefiles. This coming together is a necessary
step to add correct dependencies and to prepare for the Jigsaw split into 
modules
in the future.
 
 It is still unclear to me how cross-compilation is to be set up.

You can cross compile from x64 linux to ia32 linux, with the following
commandline:
 
../autoconf/configure \
   --host=i686-unknown-linux-gnu \
   
--with-builddeps-conf=/home/ohrstrom/jdk8/common/autoconf/builddeps.conf.example
 \
   --with-builddeps-server=buildtools.se.oracle.com/buildtools/openjdk \
   --with-builddeps-dir=/home/ohrstrom/builddeps \
   --with-jvm-variants=client,server

For those outside of Oracle, the builddeps server is not available, you have
to have i686-unknown-linux-gnu-gcc et al in your path, and drop the builddeps 
options.

Sounds silly to cross compile from x64 to ia32, yes, but the command above
exercising everything that is needed for cross compilation. What remains
is to find the correct CC for compiling to/for the build platform (legacy name 
HOSTCC), 
in configure for the hotspot build. By running from x64 linux to ia32 linux, I 
cheat since the 
i686-unknown-linux-gnu-gcc works for the build platform as well.
 
 It is unclear to me how the src/closed and make/closed repositories
 are supported/handled. Going forward much of what pertains to Oracle JDK 
 proprietary features, should be moved out of the OpenJDK repository in
 my opinion.

The new makefiles do build the closed jdk, even though it has to use the current
totally broken way of injecting source code repositories smack in the middle of 
the 
openjdk sources. 

Of course, there should be no trace of closed jdk code, neither in the 
makefiles,
nor in the source code. And there is a solution for this in the configure 
script,
ie the add/override source roots commands. But that potential solution is 
irrelevant as long 
as the open/closed source code repositories are structured the way they are.

 
 Is there a cheat sheet for how to run configure? There are many
 options 
 that seems completely irrelevant to what would normally be part of a
 JDK 
 build; conversely some obvious flags seem to be missing eg
 ALT_OUTPUTDIR.

You set the OUTPUTDIR by running the configure script from the outputdir,
then run make from the outputdir. This was explained during the tech talk
and the information was available to you as a pdf. (Since you refused to have
a paper version sent to you.)

 Is it intended that any single person actually understand the contents 
 of configure and need to edit it? It has strange contents (like
 multiple 
 file copyright headers in places ???).

Reading the configure script is like reading the bytecode of a Java program
or reading the machine code generate from a c-compiler. Go ahead if you want
to, but most people would prefer to read the source. ie configure.ac

 The BUILD_HEADLESS_ONLY option is not for what it has been used. A 
 normal JDK build will build a JDK that has both headful and headless 
 support (property: java.awt.headless=true). The BUILD_HEADLESS_ONLY
 flag 
 was an artifact from our embedded build systems for use on platforms 
 where it was simply not possible to build anything pertaining to the
 GUI 
 systems ie no X11 headers or libraries. As has been pointed out
 recently 
 BUILD_HEADLESS_ONLY doesn't actually work in current jdk8 (and likely
 jdk7 too).

Undoubtedly. But this is one of many,many typical problems when digging
through the current makefiles.   A lot of options, like env variables, 
that are not commented, have no verification if they are set correctly,
and in some cases, do not even work. Clearly it would be beneficial
to be able to build a headless version of the jdk. Thus the option
exists in the configure script. If the original makefiles are broken,
well that is just something that we need to fix.

 common/makefiles/Makefile 
 I may be misreading something but the help has
   161 $(info make ALL # build images for all 
 configurations)
 but the all: target only builds jdk, not images.

True, a mistake in the comment. I'll fix.

 
 common/makefiles/compress.post
 common/makefiles/compress.pre
 ??? These are just weird. What role do they serve? Were they
 autogenerated?
 common/makefiles/uncompress.sed
 ??? what is this? Is it autogenerated? How do I know if I need to add
 anything to it?
 

If you read the comments in the Makefile 

Re: Review Request: Build-infra M1

2012-03-22 Thread Erik Joelsson

Hello,

Fredrik already answered most of this but I will add my own comments.

On 2012-03-22 07:15, David Holmes wrote:

Hi Erik,

My major concern with the transition here is being able to take 
existing knowledge of the build system and be able to figure out where 
in the new system certain things are handled. How can I tell if a 
Makefile is part of the old build or the new build? Are some both?


We have created a new directory in each repository called makefiles 
and that's where the new makefiles are. In the root, we needed more than 
just makefiles and created common for all of the new files. It is our 
intention to move the root Makefile from common/makefiles to the root 
when we actually make the switch.


The jdk repo is a special case where we copied over much of the old 
makefiles from jdk/make to jdk/makefiles while doing the conversion. We 
needed a copy of the files to be able to change them without affecting 
the old build. (Typical changes would be removing them when converted 
and removing the subdirs-call to removed files and also sometimes 
removing partly converted functionality.) When we are done, all of the 
copied old files will be gone.

It is still unclear to me how cross-compilation is to be set up.

As Fredrik demonstrated, cross compilation has been in the design from 
early on, but we haven't put effort into actually solving the embedded 
build yet.
It is unclear to me how the src/closed and make/closed repositories 
are supported/handled. Going forward much of what pertains to Oracle 
JDK proprietary features, should be moved out of the OpenJDK 
repository in my opinion.


I completely agree that we should remove all (or as much as possible) 
traces of the proprietary Oracle stuff from the open makefiles. For now, 
we have just used the old ifndef OPENJDK, but this is something we plan 
on attacking.
Is there a cheat sheet for how to run configure? There are many 
options that seems completely irrelevant to what would normally be 
part of a JDK build; conversely some obvious flags seem to be missing 
eg ALT_OUTPUTDIR.


We don't have such documentation yet unfortunately. It would be a great 
help for us if you could give us a list of the variables that you 
usually need to tinker with so that we can make sure those have options.
Is it intended that any single person actually understand the contents 
of configure and need to edit it? It has strange contents (like 
multiple file copyright headers in places ???).


The configure script is generated using autoconf. The main input file is 
configure.ac which in turn imports a couple of more files (*.m4).

common/makefiles/compress.post
common/makefiles/compress.pre

common/makefiles/uncompress.sed

??? what is this? Is it autogenerated? How do I know if I need to add 
anything to it?


These are used in an elaborate hack to work around command line length 
limits. Not meant to be read by a sane human, but the resulting make 
macro for outputting large amounts of parameters to a command is pretty 
neat.


Does this pertain only to the new javac server or is this a general 
enhancement to javac for 8?


As I understand it, javac is getting a new shiny flag (-h I think) that 
will generate the headerfiles automatically for classes that either have 
native methods or are annotated with the GenerateNativeHeaders annotation.

jdk, just the changes to old files
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/
http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-other/


Most of these changes seem to be related to tool changes rather than 
being build system changes.


Yes, we needed to change the APIs to some of the build tools to be able 
to write more effective make rules for them. If I remember correctly, 
there are two kinds of changes. 1: Make the tool work from one file to 
another instead of changing a file in place and 2: Change the parameter 
for supplying a file containing the command line to use @file which 
seems to be standard among a lot of tools. The latter was needed to make 
the tools compatible with the uncygdrive utility.


Why do I have to cd to common/makefiles ?
As I described above, we want to keep the new build system out of the 
way for now to not disrupt anything for the existing build. When we make 
the switch, the common/makefiles/Makefile will move down to the root. 
It's also possible to build from the outputdir if you prefer that.


I tried this today and got a javac error compiling a Java2D demo - as 
report to the build-infra list.
I saw your mail and will try to figure out what's wrong. I haven't seen 
this problem before.


/Erik


Re: Review Request: Build-infra M1

2012-03-22 Thread David Holmes

Hi Fredrik,

On 22/03/2012 5:05 PM, Fredrik Öhrström wrote:

- david.hol...@oracle.com skrev:

It is still unclear to me how cross-compilation is to be set up.


You can cross compile from x64 linux to ia32 linux, with the following
commandline:

../autoconf/configure \
--host=i686-unknown-linux-gnu \

--with-builddeps-conf=/home/ohrstrom/jdk8/common/autoconf/builddeps.conf.example
 \
--with-builddeps-server=buildtools.se.oracle.com/buildtools/openjdk \
--with-builddeps-dir=/home/ohrstrom/builddeps \
--with-jvm-variants=client,server

For those outside of Oracle, the builddeps server is not available, you have
to have i686-unknown-linux-gnu-gcc et al in your path, and drop the builddeps 
options.


I couldn't access /home/ohrstrom either :(

I guess this needs to be taken up internally to see how this build-deps 
stuff is to be setup, configured, and maintained. Something for M2 perhaps.



Sounds silly to cross compile from x64 to ia32, yes, but the command above


Not silly at all, we have an issue with that right now.


exercising everything that is needed for cross compilation. What remains
is to find the correct CC for compiling to/for the build platform (legacy name 
HOSTCC),
in configure for the hotspot build. By running from x64 linux to ia32 linux, I 
cheat since the
i686-unknown-linux-gnu-gcc works for the build platform as well.


Ok, so as Erik added we're not quite there yet - but the pieces are 
lining up.



It is unclear to me how the src/closed and make/closed repositories
are supported/handled. Going forward much of what pertains to Oracle JDK
proprietary features, should be moved out of the OpenJDK repository in
my opinion.


The new makefiles do build the closed jdk, even though it has to use the current
totally broken way of injecting source code repositories smack in the middle of 
the
openjdk sources.

Of course, there should be no trace of closed jdk code, neither in the 
makefiles,
nor in the source code. And there is a solution for this in the configure 
script,
ie the add/override source roots commands. But that potential solution is 
irrelevant as long
as the open/closed source code repositories are structured the way they are.


Ok I see how src/closed is handled. What I can't see is how make/closed 
is handled, or more specifically how we factor out proprietary details 
into a distinct set of closed makefiles.



Is there a cheat sheet for how to run configure? There are many
options
that seems completely irrelevant to what would normally be part of a
JDK
build; conversely some obvious flags seem to be missing eg
ALT_OUTPUTDIR.


You set the OUTPUTDIR by running the configure script from the outputdir,
then run make from the outputdir. This was explained during the tech talk
and the information was available to you as a pdf. (Since you refused to have
a paper version sent to you.)


Yes - Guilty as charged - I have a PDF somewhere. But it was a general 
question for everyone's benefit.


Plus, if I run configure from common/makefiles that does not become the 
outputdir, it instead creates a top-level build directory in the repo 
(though config.log and config.status do pollute the current directory).



Is it intended that any single person actually understand the contents
of configure and need to edit it? It has strange contents (like
multiple
file copyright headers in places ???).


Reading the configure script is like reading the bytecode of a Java program
or reading the machine code generate from a c-compiler. Go ahead if you want
to, but most people would prefer to read the source. ie configure.ac


I'll take that as a No. ;-)


common/makefiles/compress.post
common/makefiles/compress.pre
??? These are just weird. What role do they serve? Were they
autogenerated?
common/makefiles/uncompress.sed
??? what is this? Is it autogenerated? How do I know if I need to add
anything to it?



If you read the comments in the Makefile where these commands are put to use,
You will find in MakeBase.gmk that these tools are necessary to workaround
command line length limitations on platforms like Solaris and Cygwin.


Thanks for the pointer. It is not evident from the the webrev where/how 
these get used.



Does this pertain only to the new javac server or is this a general
enhancement to javac for 8?


It is an enhancement for jdk8.


Why do I have to cd to common/makefiles ?


Because we want to keep the original makefiles in place, for the time
being. Thus the new build system does not affect the old build system at
all.


The question was why do I have to cd into common/makefiles to run the 
configure script. I think the answer is because if you are in 
common/makefiles then a build directory will be created at the top-level 
of the repo forest; otherwise the pwd will be treated as the intended 
outputdir.


Thanks,
David



//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread David Holmes

On 22/03/2012 6:35 PM, Fredrik Öhrström wrote:


- david.hol...@oracle.com skrev:


I tried this today and got a javac error compiling a Java2D demo - as
report to the build-infra list.


You are building a closed demo. The fix that written by Alan 2 weeks ago:
Java2Demo breaks build, incompatible method in the same class
has not been integrated into build-infra closed yet.


Is there a flag to disable building this? I just grabbed a fresh clone 
of open and closed build-infra repos to try. Or should I remove the 
closed repos for now?


Thanks,
David


//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Fredrik Öhrström

- david.hol...@oracle.com skrev:
 
 I tried this today and got a javac error compiling a Java2D demo - as 
 report to the build-infra list.

You are building a closed demo. The fix that written by Alan 2 weeks ago:
Java2Demo breaks build, incompatible method in the same class
has not been integrated into build-infra closed yet. 
 
//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Fredrik Öhrström

- david.hol...@oracle.com skrev:

 I couldn't access /home/ohrstrom either :(

You can replace my home directory with yours. ;-)

 I guess this needs to be taken up internally to see how this
 build-deps 
 stuff is to be setup, configured, and maintained. Something for M2
 perhaps.

Yes, absolutely.

 
  Sounds silly to cross compile from x64 to ia32, yes, but the command
 above
 
 Not silly at all, we have an issue with that right now.

:-)

 
  exercising everything that is needed for cross compilation. What
 remains
  is to find the correct CC for compiling to/for the build platform
 (legacy name HOSTCC),
  in configure for the hotspot build. By running from x64 linux to
 ia32 linux, I cheat since the
  i686-unknown-linux-gnu-gcc works for the build platform as well.
 
 Ok, so as Erik added we're not quite there yet - but the pieces are 
 lining up.
 

They are indeed, and there are a lot of them, that is why these
makefiles have to go into jdk8 now, because it will take a few
iterations to have them aligned perfectly.
 
 Yes - Guilty as charged - I have a PDF somewhere. But it was a general
 question for everyone's benefit.

We will definitely create a nice cheat sheet! Some of the options available
to configure are there as of default. Most of the options are not needed
by the daily openjdk developer.

  to, but most people would prefer to read the source. ie
  configure.ac
 
 I'll take that as a No. ;-)

Its got a lot of tasty comments... :-)

 
 The question was why do I have to cd into common/makefiles to run the
 
 configure script. I think the answer is because if you are in 
 common/makefiles then a build directory will be created at the
 top-level 
 of the repo forest; otherwise the pwd will be treated as the intended 
 outputdir.

That is another good answer. But we want the configure script and
the makefile to be in the root in the future, but we cant put it there
since it would interfere with the old Makefile in place.

//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Fredrik Öhrström

Until we have done the integration later today. Please just build the openjdk.

Thanks!

//Fredrik

- david.hol...@oracle.com skrev:

 On 22/03/2012 6:35 PM, Fredrik Öhrström wrote:
 
  - david.hol...@oracle.com skrev:
 
  I tried this today and got a javac error compiling a Java2D demo -
 as
  report to the build-infra list.
 
  You are building a closed demo. The fix that written by Alan 2 weeks
 ago:
  Java2Demo breaks build, incompatible method in the same class
  has not been integrated into build-infra closed yet.
 
 Is there a flag to disable building this? I just grabbed a fresh clone
 
 of open and closed build-infra repos to try. Or should I remove the 
 closed repos for now?
 
 Thanks,
 David
 
  //Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Erik Joelsson



On 2012-03-22 09:32, David Holmes wrote:


The question was why do I have to cd into common/makefiles to run the 
configure script. I think the answer is because if you are in 
common/makefiles then a build directory will be created at the 
top-level of the repo forest; otherwise the pwd will be treated as the 
intended outputdir.


Actually, you can run configure from the root, common/, common/makefiles 
or common/autoconf and it will behave the same. I chose to not give 
multiple options in the build instructions to avoid confusion. Instead I 
opted for common/makefiles since you would probably want to run make 
from there afterwards anyway.


/Erik


Re: Review Request: Build-infra M1

2012-03-22 Thread Erik Joelsson
I just noticed that due to a hg config error, my last integ didn't get 
pushed to this particular repo. Fixed now.


/Erik

On 2012-03-22 09:37, David Holmes wrote:

On 22/03/2012 6:35 PM, Fredrik Öhrström wrote:


- david.hol...@oracle.com skrev:


I tried this today and got a javac error compiling a Java2D demo - as
report to the build-infra list.


You are building a closed demo. The fix that written by Alan 2 weeks 
ago:

Java2Demo breaks build, incompatible method in the same class
has not been integrated into build-infra closed yet.


Is there a flag to disable building this? I just grabbed a fresh clone 
of open and closed build-infra repos to try. Or should I remove the 
closed repos for now?


Thanks,
David


//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Dalibor Topic
On 3/22/12 5:34 PM, Fredrik Öhrström wrote:
 I know, but the benefit of having the configure script executable
 in the repo is tremendous, so the extra hassle is worth it. 
 In particular if you want to use builddeps to bootstrap the build 
 environment on for example a Solaris machine.

Not to mention the care and feeding of build bots running Windows, where 
running autoreconf just-in-time before starting the build process could be
a lengthy text adventure ... ;)

cheers,
dalibor topic

-- 
Oracle http://www.oracle.com
Dalibor Topic | Principal Product Manager
Phone: +494089091214 tel:+494089091214 | Mobile: +491737185961 
tel:+491737185961
Oracle Java Platform Group

ORACLE Deutschland B.V.  Co. KG | Nagelsweg 55 | 20097 Hamburg

ORACLE Deutschland B.V.  Co. KG
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher

Green Oracle http://www.oracle.com/commitment Oracle is committed to 
developing practices and products that help protect the environment


Re: Review Request: Build-infra M1

2012-03-22 Thread David Holmes

A few specific comments ...

On 23/03/2012 2:34 AM, Fredrik Öhrström wrote:

- ahug...@redhat.com skrev:


What is this builddeps server?  Is it something that's worth emulating
elsewhere?

snip

This feature to easily acquire the build dependencies is very useful
for us, since it makes it easy to have the same compiler on all
developer/build-server platforms. You can easily build the exact
same bits on your desktop, as is built on the build-farm, since
you use the exact same compiler. The old makefiles uses an nfs-mount
(/java) to store the builddeps, which unfortunately prevents
non-networked builds.


The old makefiles use NFS mounted paths by default but you can of course 
override them for your local environment - that is what the ALT_* 
variables are for. In the new build you would simply define the 
non-default paths once as part of the configure process.


Not wanting to go too OT here but I see the build-deps server as 
something to be used at most per machine rather than per developer. We 
have build servers internally that can be used by dozens of developers 
and we don't want multiple copies of toolsets. Even in the new build 
system I would expect to see the toolsets (for cross-compilation) 
installed on shared NFS mounts for use by these build servers. But at 
worse I would expect to have one installation per machine.



It's not clear to me why it's a good idea to remove traces of the
'closed' JDK from the makefiles.  Wouldn't this only cause more divergence and
mean that the core OpenJDK makefiles aren't being tested as much?


Not at all, we strive to have all makefiles in the open. We build entirely
based on the OpenJDK makefiles, in fact I do not think there are any closed 
makefiles.
The hacks needed to insert closed code are arbitrary and visible inside the 
OpenJDK
makefiles. We simply believe that a better solution can be found.


I firmly believe that openjdk build files should only contain 
instructions for building openjdk source code. The alt-src mechanism is 
a simple mechanism to let us override an open source file with a 
closed one. This mechanism is available to anyone who wants to 
customize their OpenJDK without hacking the main OpenJDK sources.


However we also have a number of build files that relate only to 
building things outside the openjdk repositories - eg the 
Release-embedded.gmk and Defs-embedded.gmk files for our SE Embedded 
product. This are in the openjdk repository for our convenience. My 
mission is to move all such build information out of the openjdk into 
our closed repositories where it belongs. I previously started an 
email thread on this:


http://mail.openjdk.java.net/pipermail/build-dev/2012-January/005383.html

Unfortunately while we have a make/closed repository in the JDK repo it 
isn't used much; and it doesn't exist at all for hotspot. So the task is 
non-trivial. I also wanted to avoid doing the work twice and so have 
been waiting/watching this build-infra work. But I'm unclear how I would 
go about this separation in the build-infra world (mainly because the 
files I mention above have yet to be converted :) ).



Yes! That is the intent, a standard way of building that everyone recognizes.


That's a somewhat biased definition of everyone ;-) It's been 12 years 
since I've had to work with autoconf etc and I don't miss it. :)



The configure script is generated using the autoconf tool and is
pieced together by the insertion and expansion of various m4 macros.  To
change it, you alter configure.ac and then run autoconf.  This was
the focus of my last question, as having configure checked into the
repository means that everyone has to be using the same autoconf
to generate, to avoid superfluous changes.


I know, but the benefit of having the configure script executable
in the repo is tremendous, so the extra hassle is worth it.
In particular if you want to use builddeps to bootstrap the build
environment on for example a Solaris machine.


My concern, hence my question about needing to read/understand this 
file, is what happens if it doesn't work on a system? How do we debug 
the issue? Sure we can just run autoconf to generate a new (and 
hopefully working) version, but how do we determine what needs to get 
checked back into the repo?


Cheers,
David


//Fredrik


Re: Review Request: Build-infra M1

2012-03-22 Thread Alan Bateman

On 22/03/2012 21:21, Fredrik Öhrström wrote:

Yes, of course, I just pushed a fix.

Thanks, I just wanted to check as it is the webrev.

Have you changed the class analyzer to output a text file with the 
mapping of the sources? e.g.


java/lang/Object.java jdk.base/java/langObject.java
We should probably move this part of the discussion to jigsaw-dev but we 
do want to get to the point soon where the class analyzer isn't run as 
part of the build.


-Alan


Review Request: Build-infra M1

2012-03-21 Thread Erik Joelsson


  
  
As outlined in [1], the build-infra project would like to push the
current work into jdk8 in order to expose it to a wider audience.
The webrevs are made against the jdk8/build forest. In each
repository, there are two kinds of changes: 

1. Changes to old makefiles and source code to be compatible with
the new build.
2. The new makefiles

For corba, jaxp and jaxws, all changes of category 1 have already
gone in. For langtools, we are awaiting one more change for
introducing the GenerateNativeHeader annotation. For hotspot, all
necessary changes have been pushed into hotspot-rt. For jdk, there
are two webrevs, one with everything and one with just the category
1 changes, to make it easier to see them. Finally for the root
repository there are only new files in the common subdir.

root, configure script and makefiles:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/

langtools, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/

langtools, GenerateNativeHeader annotation (this is already going in
through tools, but adding it here for reference as the jdk changes
depend on it)
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/

corba, 1 new makefile:
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/

jaxp, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/

jaxws, 1 new makefile
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/

jdk, just the changes to old files
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/

jdk, all changes including a partial copy of the old makefiles.
http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/

Of course, if you prefer you can look at the new makefiles directly
in the build-infra/jdk8 repository forest too.

These changes should not affect the old build at all. To build using
the new build system, change directory to "common/makefiles" and:

../autoconf/configure
make
(make images)

State of the new build (the old build should of course be
unaffected):

  Linux 32bit: Works
  
  Linux 64bit: Works
  Windows 32bit: Works
  
  Windows 64bit: Works
  Solaris i586: Builds but launchers currently unusable

Some notes:

  The old and new build (on linux x64) produce very close to
equal results. There is a comparison script in
common/bin/compareimage.sh with which this can be checked.
  Not all makefiles in jdk have been converted yet, for those
that haven't been, a copy of the old files are used.
  Not all promised features in the java compilation are active
and ready in this milestone. Most notably, it's still not using
more than one cpu and the nifty new dependency tracking is
disabled. A clean build is still pretty fast, but incremental
builds aren't as good as they will be yet.
  On windows, only cygwin is currently supported. 
  

Now please share your feedback!

/Erik

[1]
http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html

  



Re: Review Request: Build-infra M1

2012-03-21 Thread Fredrik Öhrström
2012-03-21 16:43, Andrew Hughes skrev:
 I haven't tried this out yet, but I'll try and give it a spin in build-infra.

 One thing that did stand out from the patch is that generated files such as
 configure are being checked in.  For updates to this, is there a plan to
 mandate the use of a specific version of autoconf?  Otherwise, we're going
 to get changes simply because someone generated the file using a different
 version.  Alternatively, we could just require that the user has autoconf
 installed and runs it prior to configure.

The configure script must be checked in. Until now, we have used
different autoconf
versions (2.61 or later), depending on which platform we have update the
configure script.
The mac has one version, my workstation another etc etc.

You are right that in the future we will have to standardize on a
specific version,
and even mandate a commit check in hg for it.

//Fredrik