Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Mohan Pakkurti
Hi Steve,

The initial proposal was aimed to address issues in the existing build process 
that we felt could be improved in the short term. The idea was to share some 
ideas and experiments we have done and invite discussion on these approaches. 
Starting the project will give us a set of repos to do these experiments. 

The list that Kelly presented could be done in one or two short projects. We 
want to do this in a relatively short time, since these could potentially 
affect almost every makefile and build script. We want to minimize the impact 
that it will have on other projects, for example porting. 

If the use cases you present can be done in the same time as the list in the 
proposal, we might want to consider them for this project. If not we should  be 
careful to not make choices that will make it difficult to support these use 
cases as possible next steps. This will be clearer when we discuss the 
approaches to solving the project goals.

Mohan

On May 3, 2011, at 11:18 AM, Steve Poole wrote:

 On 30/04/11 00:05, Kelly O'Hair wrote:
 
 On Apr 29, 2011, at 1:31 PM, Steve Poole wrote:
 
 On 26/04/11 15:54, Kelly O'Hair wrote:
 
 On Apr 26, 2011, at 12:59 AM, Steve Poole wrote:
 
  
 
   * Allow for use of more portable build tools (compilers etc.) where 
 possible
 
Can I add support for alternative JVM's ?
 
 Seems a bit out of scope to me.
 
 Sorry, it was  a bit of a flippant one liner,  I owe you more details. 
 
 There are three usecases I see that require the OpenJDK build process to be 
 modified to accommodate:
 
 The first is bootstrapping a build.   I'd like to be able to build OpenJDK 
 on a new platform without the need for a previous SDK build to be present. 
 In this usecase it's possible that an simple interpreter based JVM would be 
 sufficient (ie Zero)   (or even  maybe a cross compiling mode)
 
 The second  is  getting OpenJDK to build on a platform where a hotspot JVM 
 doesn't exist and may never exist.   As you guess I'm thinking of IBM 
 platforms specifically. I'm don't expect to port Hotspot to AIX so I need 
 to be able to make the OpenJDK build work with J9.
 
 The third (a variant of the 2nd)  is where another JVM vendor wants to get 
 OpenJDK working with their JVM - regardless of the availability of a 
 Hotspot JVM on the target platform.
 
 To be clear.  I'm not suggesting that this project step up to defining the 
 interfaces between JVM and classes.   This is simple pragmatics. The 
 Hotspot JVM is the starting point for the mould and I would expect to make 
 J9 (or any new JVM) fit into it as much as possible.   However there will 
 be changes needed.  These are mostly simple,  like parameterising  JVM 
 command line options,  to the more complicated like separating out  JVM 
 intrinsic classes such as String.java, Object.java,  Thread.java etc so 
 that the right versions get build and packaged.
 
 I certainly can understand these needs, but it is still seems beyond the 
 initial scope of this project.
 Maybe in a phase 2?
 
 Hmm, maybe doing all of them in one go may be a stretch :-) The 2nd usecase 
 is fundamental though to supporting IBM platforms, something you mentioned 
 you wanted to do.  Is there any reason why realising that usecase is beyond 
 phase 1?
 
 
 
 -kto
 
 



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Kelly O'Hair
Timeframes...  Humm...  

Initially I would like to start with a set of jdk7 repositories, go as far as 
we can with that, hopefully
show some major improvements in overall build time, then set it aside for 
potential inclusion into jdk7u2
(that would require lots of verifications that the end results are the same), 
and then move it into jdk8 work
and setting up for module building.

-kto

On Apr 29, 2011, at 9:30 PM, Georges Saab wrote:

 Hey Kelly,
 
One thing that might be useful is to understand the kind of timeframe you 
 are thinking about for this project?
 
   /GES
 
 On 29 apr 2011, at 16.05, Kelly O'Hair wrote:
 
 
 On Apr 29, 2011, at 1:31 PM, Steve Poole wrote:
 
 On 26/04/11 15:54, Kelly O'Hair wrote:
 
 
 On Apr 26, 2011, at 12:59 AM, Steve Poole wrote:
 
 
   * Allow for use of more portable build tools (compilers etc.) where 
 possible
Can I add support for alternative JVM's ?
 
 Seems a bit out of scope to me.
 
 Sorry, it was  a bit of a flippant one liner,  I owe you more details. 
 
 There are three usecases I see that require the OpenJDK build process to be 
 modified to accommodate:
 
 The first is bootstrapping a build.   I'd like to be able to build OpenJDK 
 on a new platform without the need for a previous SDK build to be present. 
 In this usecase it's possible that an simple interpreter based JVM would be 
 sufficient (ie Zero)   (or even  maybe a cross compiling mode)
 
 
 The second  is  getting OpenJDK to build on a platform where a hotspot JVM 
 doesn't exist and may never exist.   As you guess I'm thinking of IBM 
 platforms specifically. I'm don't expect to port Hotspot to AIX so I need 
 to be able to make the OpenJDK build work with J9.
 
 The third (a variant of the 2nd)  is where another JVM vendor wants to get 
 OpenJDK working with their JVM - regardless of the availability of a 
 Hotspot JVM on the target platform.
 
 To be clear.  I'm not suggesting that this project step up to defining the 
 interfaces between JVM and classes.   This is simple pragmatics. The 
 Hotspot JVM is the starting point for the mould and I would expect to make 
 J9 (or any new JVM) fit into it as much as possible.   However there will 
 be changes needed.  These are mostly simple,  like parameterising  JVM 
 command line options,  to the more complicated like separating out  JVM 
 intrinsic classes such as String.java, Object.java,  Thread.java etc so 
 that the right versions get build and packaged.
 
 I certainly can understand these needs, but it is still seems beyond the 
 initial scope of this project.
 Maybe in a phase 2?
 
 -kto
 
 



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Kelly O'Hair

On May 3, 2011, at 2:18 AM, Steve Poole wrote:

 On 30/04/11 00:05, Kelly O'Hair wrote:
 
 
 On Apr 29, 2011, at 1:31 PM, Steve Poole wrote:
 
 On 26/04/11 15:54, Kelly O'Hair wrote:
 
 
 On Apr 26, 2011, at 12:59 AM, Steve Poole wrote:
 
 
   * Allow for use of more portable build tools (compilers etc.) where 
 possible
Can I add support for alternative JVM's ?
 
 Seems a bit out of scope to me.
 
 Sorry, it was  a bit of a flippant one liner,  I owe you more details. 
 
 There are three usecases I see that require the OpenJDK build process to be 
 modified to accommodate:
 
 The first is bootstrapping a build.   I'd like to be able to build OpenJDK 
 on a new platform without the need for a previous SDK build to be present. 
 In this usecase it's possible that an simple interpreter based JVM would be 
 sufficient (ie Zero)   (or even  maybe a cross compiling mode)
 
 
 The second  is  getting OpenJDK to build on a platform where a hotspot JVM 
 doesn't exist and may never exist.   As you guess I'm thinking of IBM 
 platforms specifically. I'm don't expect to port Hotspot to AIX so I need 
 to be able to make the OpenJDK build work with J9.
 
 The third (a variant of the 2nd)  is where another JVM vendor wants to get 
 OpenJDK working with their JVM - regardless of the availability of a 
 Hotspot JVM on the target platform.
 
 To be clear.  I'm not suggesting that this project step up to defining the 
 interfaces between JVM and classes.   This is simple pragmatics. The 
 Hotspot JVM is the starting point for the mould and I would expect to make 
 J9 (or any new JVM) fit into it as much as possible.   However there will 
 be changes needed.  These are mostly simple,  like parameterising  JVM 
 command line options,  to the more complicated like separating out  JVM 
 intrinsic classes such as String.java, Object.java,  Thread.java etc so 
 that the right versions get build and packaged.
 
 I certainly can understand these needs, but it is still seems beyond the 
 initial scope of this project.
 Maybe in a phase 2?
 
 Hmm, maybe doing all of them in one go may be a stretch :-) The 2nd usecase 
 is fundamental though to supporting IBM platforms, something you mentioned 
 you wanted to do.  Is there any reason why realising that usecase is beyond 
 phase 1?

The contract or plumbing design between the JVM implementation and the JDK 
itself, in my opinion, belongs
with the JVM teams.
If there was a detailed specification with regards to how a JVM plumbs into a 
JDK, we could certainly use that
as part of the build process, Right now, it's just a list of files that get 
built by the hotspot repository build,
and placed in specific locations of the JDK install image. The export/import 
process defined in the makefiles
now, rather haphazardly, perhaps we can clean it up. But as I understand it, 
there is no formal spec here.
The actual native 'extern' symbol contracts between the JDK and JVM might be 
fairly well-defined, but
I'm not sure where, that's a deeper micro plumbing issue beyond building.

When the langtools, corba, jaxp, and jaxws sources were split out of the 
original j2se Teamware workspace,
I tried to define a simple delivery mechanism for these repositories, such that 
after they built, the files in their
dist/ directory would be the delivery into the overall JDK image. A 
classes.zip and a src.zip in the simpliest
cases (this will likely become a bundle of modules in the jdk8 timeframe).
With hotspot, it wasn't as simple, and it currently constructs a sparse 
JDK-like install image for delivery into
the overall JDK build process. So we know what hotspot contributes to the JDK 
build, it's just not very well documented.
We can certainly try to clean that up and provide some documentation, assuming 
we can enforce updating the
documents when developers change things.

I was going to say that building hotspot does NOT require a Boot JDK to build, 
but I would be wrong, it does,
but I agree, it probably should not. As I recall, there is some XML processing, 
the stupid gamma launcher Queens use,
and building the extra java code for the Serviceability Agent and something 
else I forget the name of.
I would prefer that building hotspot not rely on a JDK at all, but I can't 
promise anything there.
As we get more into cross compilation for embedded building, we will need to 
address these issues cleanly, and I
suspect that what you want may fall out of that work.

So I would like to say that anything we do should be an improvement for J9 
plugging in.
But predictions of the future have always been a problem for me, I'm trying 
Tarot cards, no luck so far.

-kto

 
 
 
 -kto
 
 



Re: Request for review: 7036525 Disable alternative source mechanism for OPENJDK builds

2011-05-03 Thread John Coomes
David Holmes (david.hol...@oracle.com) wrote:
 Hi John,
 
 Fresh webrev at:
 
 http://cr.openjdk.java.net/~dholmes/7036525/webrev.1/

Looks good to me.

-John

 David Holmes said the following on 04/30/11 10:09:
  Thanks John. Currently sitting here shaking my head is disbelief. I'll 
  try this again.
  
  David
  
  John Coomes said the following on 04/30/11 03:47:
  David Holmes (david.hol...@oracle.com) wrote:
  http://cr.openjdk.java.net/~dholmes/7036525/webrev/
 
  Simple but crude. If OPENJDK is defined then the Hotspot alternative 
  source mechanism is effectively disabled by checking for a 
  non-existent path. This allows people using the alt-src mechanism to 
  select which type of build they want in a way that is consistent with 
  how builds of OPENJDK are done in the rest of the JDK.
 
  Tested by checking the errorReporter.cpp location in builds 
  with/without OPENJDK set, and with/without src/closed present.
 
  This will be pushed into hotspot-rt/hotspot for hs21-b11
 
  Hi David,
 
38 ifneq ($(OPENJDK),true)
39   HS_ALT_SRC_REL=src/closed
40 else
41   HS_ALT_SRC=NO_SUCH_PATH
42 endif
43 HS_COMMON_SRC=$(GAMMADIR)/$(HS_COMMON_SRC_REL)
44 HS_ALT_SRC=$(GAMMADIR)/$(HS_ALT_SRC_REL)
 
  The 'if' block sets HS_ALT_SRC_*REL*, but the else block sets
  HS_ALT_SRC (no *REL*), and that is overwritten on line 44.
 
  I think it works because after line 44, HS_ALT_SRC == $(GAMMADIR)/,
  but I doubt that was intended.
 
  You could change line 41 to
 
  HS_ALT_SRC_REL=$(HS_COMMON_SRC_REL)
 
  Then when OPENJDK=true, HS_ALT_SRC==HS_COMMON_SRC, and you don't have
  to rely on NO_SUCH_PATH.
 
  -John


Re: Request for review: 7036525 Disable alternative source mechanism for OPENJDK builds

2011-05-03 Thread John Coomes
David Holmes (david.hol...@oracle.com) wrote:
 Hi Keith,
 
 Keith McGuigan said the following on 05/03/11 02:13:
  On Apr 29, 2011, at 1:47 PM, John Coomes wrote:
  
  David Holmes (david.hol...@oracle.com) wrote:
  http://cr.openjdk.java.net/~dholmes/7036525/webrev/
 
  Simple but crude. If OPENJDK is defined then the Hotspot alternative
  source mechanism is effectively disabled by checking for a non-existent
  path. This allows people using the alt-src mechanism to select which
  type of build they want in a way that is consistent with how builds of
  OPENJDK are done in the rest of the JDK.
 
  Tested by checking the errorReporter.cpp location in builds
  with/without OPENJDK set, and with/without src/closed present.
 
  This will be pushed into hotspot-rt/hotspot for hs21-b11
 
  Hi David,
 
   38 ifneq ($(OPENJDK),true)
   39   HS_ALT_SRC_REL=src/closed
   40 else
   41   HS_ALT_SRC=NO_SUCH_PATH
   42 endif
   43 HS_COMMON_SRC=$(GAMMADIR)/$(HS_COMMON_SRC_REL)
   44 HS_ALT_SRC=$(GAMMADIR)/$(HS_ALT_SRC_REL)
 
  The 'if' block sets HS_ALT_SRC_*REL*, but the else block sets
  HS_ALT_SRC (no *REL*), and that is overwritten on line 44.
 
  I think it works because after line 44, HS_ALT_SRC == $(GAMMADIR)/,
  but I doubt that was intended.
 
  You could change line 41 to
 
  HS_ALT_SRC_REL=$(HS_COMMON_SRC_REL)
 
  Then when OPENJDK=true, HS_ALT_SRC==HS_COMMON_SRC, and you don't have
  to rely on NO_SUCH_PATH.
  
  I'd prefer to leave it as NO_SUCH_PATH.  That way tests for the 
  existence of that directory (or files in those directories) will 
  correctly fail and won't mistakenly indicates that alt-srcs exist.  I 
  believe there are a number of tests like that already, but I'll bet it 
  currently works fine (unintentionally) if HS_ALT_SRC == HS_COMMON_SRC.
 
 I've just made the change as John suggested and to be honest I don't 
 know why I didn't think of that myself. I do see your point though, by 
 setting it the same the build will always use the ALT_SRC in the OpenJDK 
 case - but this will be fine because it is the same as COMMON_SRC. This 
 is only used to generate the Makefiles during the buildtree phase so I 
 don't think it is really a concern either way.

FWIW, I prefer the change you've made, but don't feel that strongly
about it.

 To be honest I'm doubting the whole rationale for this change as it 
 means that an OPENJDK build will never use the alt-src mechanism, when 
 according to the comments alt-src was also intended to be used by others 
 for introducing alternative code into their builds/distributions. In 
 those cases you may well want both alt-src and OPENJDK (given that 
 OPENJDK could be being set at the top-level JDK makefile).

IMHO, better if an OPENJDK build doesn't use alt-src, at least by
default.  And I suspect you can override HS_ALT_SRC_REL from the gmake
command line, even when OPENJDK==true (haven't tried it, though).

-John


Re: JDK8 Preliminary Repository Layout

2011-05-03 Thread Kelly O'Hair

On Apr 28, 2011, at 2:48 AM, Fredrik Öhrström wrote:

 2011/3/11 Kelly O'Hair kelly.oh...@oracle.com
 in the repository. If there are frequent pushes going on, either from too 
 much activity or too many developers,
 someone may experience a:
   hg push# fails because you need to do a pull too many heads message
   hg pull -u  hg merge  hg commit -m Merge#  Or hg fetch
   hg push   # fails because you took too long and someone else pushed a new 
 one
   hg pull -u  hg merge  hg commit -m Merge#  Or hg fetch
   hg push   # fails because you took too long and someone else pushed a new 
 one
 
 I suppose this is related to the fact that mercurial has developed over time.
 But today, using merge to solve this problem would be ill advised.
 I think it is much better to use the rebase extension to do 
 hg pull --rebase
 
 This will move your outgoing changes to the tip and avoid the creation of an 
 unnecessary merge node.

This rebase extension (which is an extension that needs to be enabled) has not 
always existed, it's a nice addition
and will be very useful. But  it does come with come cautions, effectively 
a rebase will regenerate
changesets, and anything that regenerates changesets needs to be used with 
great care, just like rollbacks.
And hidden in the rebase, is a merge, potentially many merges, potentially 
merges where file
changes actually need to be resolved. With rebase, the merges just get folded 
into a new changeset.

There are dumb merge changesets, where no files were in conflict, which the 
rebase can easily fix,
but when there are file conflicts, you may run a risk here of mis-merging if 
you are not careful.
And once rebased, your new changeset might not be the same changeset that you 
originally created,
so great care is always advised with a 'hg pull', regardless of how you manage 
the merge.
Depending on how much you pulled over, re-builds and re-tests may be important.

 
 Assuming that you have a large number of committers at work at the same time, 
 a simple solution
 is to have the committers add themselves to a queue, then they get a message 
 (IM,mail or otherwise)
 when they have exclusive access. When they are done, they relinquish their 
 exclusive acces or
 it will be revoked automatically after 5 minutes.

In my opinion, a collision between 2 developers in a small window of time (say 
3mins) should be
rare, and it's easily resolved. If it happens frequently, I would tend to 
question what is going on.
That many changesets being pushed in at the same time may be a sign of 
something seriously wrong
with development, the number of changesets per day should not be in the 1,000's.

Yes, I see John mentioned the stuffed animal Teamware tokens, representing 
locks on workspaces, I remember those. ;^)
With the old Teamware workspaces, the equivalent pull/merge was often very very 
slow, 30mins
sometimes 60mins. But with Mercurial, the time to push is measured in minutes, 
sometimes seconds.
I just don't see a need for locks. More important in my mind, is making sure we 
get good changeset pushes.

-kto

 
 Fredrik Öhrström



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Keith McGuigan


On May 3, 2011, at 12:05 PM, Kelly O'Hair wrote:

I was going to say that building hotspot does NOT require a Boot JDK  
to build, but I would be wrong, it does,
but I agree, it probably should not. As I recall, there is some XML  
processing, the stupid gamma launcher Queens use,


Whoops... little typo here.  Shouldn't say stupid gamma launcher, it  
should be, incredibly-useful-for-debugging-the-JVM gamma launcher.   
Easy mistake to make, though:  the keys are, like, right next to each  
other.  :)


--
- Keith



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Kelly O'Hair

On May 3, 2011, at 10:16 AM, Keith McGuigan wrote:

 
 On May 3, 2011, at 12:05 PM, Kelly O'Hair wrote:
 
 I was going to say that building hotspot does NOT require a Boot JDK to 
 build, but I would be wrong, it does,
 but I agree, it probably should not. As I recall, there is some XML 
 processing, the stupid gamma launcher Queens use,
 
 Whoops... little typo here.  Shouldn't say stupid gamma launcher, it should 
 be, incredibly-useful-for-debugging-the-JVM gamma launcher.  Easy mistake 
 to make, though:  the keys are, like, right next to each other.  :)

No doubt it's been useful, but seriously, you just built a hotspot for jdk7, 
with a completely different
C++ compiler, and a different C++ runtime dependency, and you plop it down into 
a jdk6 image (that
was built with a different C++ compiler, and maybe using a different C++ 
runtime) and you guys'
expect it to work reliably? It doesn't, and likely won't run in a cross compile 
environment at all.
At a minimum, you should be plopping it into a jdk7 image, a jdk7 image built 
for the target arch you
are building and can run, and when it comes down to it, isn't this actually a 
test of your build?

The number of issues with that gamma/Queens makefile logic is too high, and 
it's not something we ship
anyway. In my opinion, we should be restricting ourselves to building what we 
ship as part of the product,
or what we need to make that build happen.
So in my opinion, the whole thing needs to be moved to the hotspot/test area.

In addition, the gamma launcher code is riddled with troublesome/buggy code 
that gets little attention, mostly
because it isn't shipped as part of the product. If you guys want this code as 
part of the build, it needs
some attention. If it is just a test case, then isolate it and make it one.

We need to do a better job of separating out the building logic from the 
testing logic.

Just my 2 cents... ;^)

-kto

 
 --
 - Keith
 



hg: jdk7/build/jdk: 8 new changesets

2011-05-03 Thread michael . fang
Changeset: 1c31b35e9408
Author:ogino
Date:  2011-04-26 21:46 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/1c31b35e9408

7036955: Japanese man pages in linux should be in utf-8 encoding
Reviewed-by: ohair, mfang

! make/common/Defs-linux.gmk
! make/common/Release.gmk

Changeset: 00e485efd9e0
Author:mfang
Date:  2011-04-27 23:11 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/00e485efd9e0

6501385: ColorChooser demo - two elemets have same mnemonic in it locale, GTK 
LF
Reviewed-by: yhuang

! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties

Changeset: 4fcbaf9fb837
Author:mfang
Date:  2011-04-27 23:18 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/4fcbaf9fb837

7038803: [CCJK] Incorrect mnemonic key (0) is displayed on cancel button on 
messagedialog of JOptionPane
Reviewed-by: yhuang

! src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties

Changeset: 4b197be687dc
Author:mfang
Date:  2011-04-27 23:28 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/4b197be687dc

Merge


Changeset: fddcc29ed8f8
Author:mfang
Date:  2011-04-28 14:30 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/fddcc29ed8f8

Merge

! make/common/Defs-linux.gmk
! make/common/Release.gmk
- src/share/classes/sun/security/ssl/DefaultSSLContextImpl.java
- src/share/native/sun/font/layout/Features.h
- test/javax/swing/text/GlyphView/6539700/bug6539700.java

Changeset: 5f0455522852
Author:mfang
Date:  2011-04-28 20:15 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/5f0455522852

7040228: [zh_TW] extra (C) on cancel button on File Chooser dialog
Reviewed-by: yhuang

! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties
! src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties
! 
src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties

Changeset: a604668a7a64
Author:mfang
Date:  2011-04-28 21:43 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/a604668a7a64

7040257: [pt_BR,fr] Print dialog has duplicate mnemonic key.
Reviewed-by: psun

! src/share/classes/sun/print/resources/serviceui_fr.properties
! src/share/classes/sun/print/resources/serviceui_pt_BR.properties

Changeset: 5b7d35a6e1b3
Author:mfang
Date:  2011-05-02 13:55 -0700
URL:   http://hg.openjdk.java.net/jdk7/build/jdk/rev/5b7d35a6e1b3

Merge




Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Mike Swingler
On May 3, 2011, at 11:27 AM, Kelly O'Hair wrote:

 On May 3, 2011, at 10:16 AM, Keith McGuigan wrote:
 
 On May 3, 2011, at 12:05 PM, Kelly O'Hair wrote:
 
 I was going to say that building hotspot does NOT require a Boot JDK to 
 build, but I would be wrong, it does,
 but I agree, it probably should not. As I recall, there is some XML 
 processing, the stupid gamma launcher Queens use,
 
 Whoops... little typo here.  Shouldn't say stupid gamma launcher, it 
 should be, incredibly-useful-for-debugging-the-JVM gamma launcher.  Easy 
 mistake to make, though:  the keys are, like, right next to each other.  :)
 
 No doubt it's been useful, but seriously, you just built a hotspot for jdk7, 
 with a completely different
 C++ compiler, and a different C++ runtime dependency, and you plop it down 
 into a jdk6 image (that
 was built with a different C++ compiler, and maybe using a different C++ 
 runtime) and you guys'
 expect it to work reliably? It doesn't, and likely won't run in a cross 
 compile environment at all.
 At a minimum, you should be plopping it into a jdk7 image, a jdk7 image built 
 for the target arch you
 are building and can run, and when it comes down to it, isn't this actually a 
 test of your build?
 
 The number of issues with that gamma/Queens makefile logic is too high, and 
 it's not something we ship
 anyway. In my opinion, we should be restricting ourselves to building what we 
 ship as part of the product,
 or what we need to make that build happen.
 So in my opinion, the whole thing needs to be moved to the hotspot/test area.
 
 In addition, the gamma launcher code is riddled with troublesome/buggy code 
 that gets little attention, mostly
 because it isn't shipped as part of the product. If you guys want this code 
 as part of the build, it needs
 some attention. If it is just a test case, then isolate it and make it one.
 
 We need to do a better job of separating out the building logic from the 
 testing logic.
 
 Just my 2 cents... ;^)

Here here!

In the macosx-port we explicitly added a hook to ignore the gamma test because 
cross compiling with the Apple Java SE 6 (which is how _everyone_ gets off the 
ground) is impossible otherwise.

We've also had to workaround these things in our internal builds for years and 
years. If these tests were properly factored into a /tests directory, we could 
have removed some really ugly hacks to get the product to build itself.

Cheers,
Mike Swingler
Java Engineering
Apple Inc.



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Dmitry Samersoff

On 2011-05-03 22:27, Kelly O'Hair wrote:

No doubt it's been useful, but seriously, you just built a hotspot for jdk7, 
with a completely different
C++ compiler, and a different C++ runtime dependency, and you plop it down into 
a jdk6 image (that
was built with a different C++ compiler, and maybe using a different C++ 
runtime) and you guys'
expect it to work reliably? It doesn't, and likely won't run in a cross compile 
environment at all.


We did it for years for jdk 5 - HS reference platform for jdk5 is 
different from JDK one.



The number of issues with that gamma/Queens makefile logic is too high, and 
it's not something we ship
anyway. In my opinion, we should be restricting ourselves to building what we 
ship as part of the product,
or what we need to make that build happen.
So in my opinion, the whole thing needs to be moved to the hotspot/test area.


Generally I agree that gamma launcher should be in hotspot test but 
minimal smoke test at the end of the build is quite useful. The build 
system not always handle correctly incremental build and Queens test 
usually catch it at the earliest possible point.


So I would like to:

a) make gamma test JDK independent
b) move it to hotspot/test
c) keep it as part of build process

-Dmitry

--
Dmitry Samersoff
Java Hotspot development team, SPB04
* There will come soft rains ...


Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Omair Majid

On 05/03/2011 04:13 PM, Mike Swingler wrote:

On May 3, 2011, at 11:27 AM, Kelly O'Hair wrote:


On May 3, 2011, at 10:16 AM, Keith McGuigan wrote:

The number of issues with that gamma/Queens makefile logic is too
high, and it's not something we ship anyway. In my opinion, we
should be restricting ourselves to building what we ship as part of
the product, or what we need to make that build happen. So in my
opinion, the whole thing needs to be moved to the hotspot/test
area.

In addition, the gamma launcher code is riddled with
troublesome/buggy code that gets little attention, mostly because
it isn't shipped as part of the product. If you guys want this code
as part of the build, it needs some attention. If it is just a test
case, then isolate it and make it one.

We need to do a better job of separating out the building logic
from the testing logic.

Just my 2 cents... ;^)


Here here!

In the macosx-port we explicitly added a hook to ignore the gamma
test because cross compiling with the Apple Java SE 6 (which is how
_everyone_ gets off the ground) is impossible otherwise.



We have the same problem in IcedTea. We have a patch that disables the 
gamma test so we can bootstrap openjdk with gcj. A proper way to skip 
the gamma test will be very useful.


Cheers,
Omair


Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Kelly O'Hair

On May 3, 2011, at 2:08 PM, Dmitry Samersoff wrote:

 Generally I agree that gamma launcher should be in hotspot test but minimal 
 smoke test at the end of the build is quite useful. The build system not 
 always handle correctly incremental build and Queens test usually catch it at 
 the earliest possible point.
 
 So I would like to:
 
 a) make gamma test JDK independent
 b) move it to hotspot/test
 c) keep it as part of build process
 
 -Dmitry

I have a hard time with c) but I understand you want some heartbeat test or 
indication the hotspot build is sane.
But when that 'smoke' test starts impacting everyone else, then it needs to be 
isolated out of the default build.
I know that having tests (heartbeat and smoke) run during the build is a 
somewhat common practice, but
it really needs to go.

And Queens is a fine little test, but it's really not enough.
I would like to see a 'cd hotspot/make  make  make test'  where the 'test' 
target runs your Queens test and
maybe even a few other quick tests that the developers find helpful.

Let the default 'make' be just a build, and running tests is a trivial 'make 
test'.

I'd like to make that a general rule:

  #1 Do not run tests as part of the build process

:^)

-kto

Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Mike Swingler
On May 3, 2011, at 3:31 PM, Kelly O'Hair wrote:

 On May 3, 2011, at 2:08 PM, Dmitry Samersoff wrote:
 
 Generally I agree that gamma launcher should be in hotspot test but minimal 
 smoke test at the end of the build is quite useful. The build system not 
 always handle correctly incremental build and Queens test usually catch it 
 at the earliest possible point.
 
 So I would like to:
 
 a) make gamma test JDK independent
 b) move it to hotspot/test
 c) keep it as part of build process
 
 -Dmitry
 
 I have a hard time with c) but I understand you want some heartbeat test or 
 indication the hotspot build is sane.
 But when that 'smoke' test starts impacting everyone else, then it needs to 
 be isolated out of the default build.
 I know that having tests (heartbeat and smoke) run during the build is a 
 somewhat common practice, but
 it really needs to go.
 
 And Queens is a fine little test, but it's really not enough.
 I would like to see a 'cd hotspot/make  make  make test'  where the 
 'test' target runs your Queens test and
 maybe even a few other quick tests that the developers find helpful.
 
 Let the default 'make' be just a build, and running tests is a trivial 'make 
 test'.
 
 I'd like to make that a general rule:
 
   #1 Do not run tests as part of the build process
 
 :^)
 
 -kto

Agreed. Can this be done within the JDK7 timeframe?

Curious,
Mike Swingler
Java Engineering
Apple Inc.



Re: Project Proposal: Build Infrastructure Changes

2011-05-03 Thread Kelly O'Hair

On May 3, 2011, at 3:40 PM, Mike Swingler wrote:

 
 I'd like to make that a general rule:
 
   #1 Do not run tests as part of the build process
 
 :^)
 
 -kto
 
 Agreed. Can this be done within the JDK7 timeframe?

That will be tricky. JDK7 changes are now restricted, and I doubt any changes 
like this
would be acceptable now.

As far as the Build Infrastructure Changes if we start with a jdk7 repository 
set, it might be
possible to integrate the changes into jdk7u2, but that may be a pipe dream on 
my part.

There are multiple events of interest for this, and I have no idea when they 
will all happen:
  * When we get something working (and hotspot is not first)
  * When the jdk8 repositories become available, we may want to shift focus at 
that time
  * When and where the mac-port changes get integrated in jdk7uN? or jdk8?
- Maybe we piggyback any Build Infrastructure Changes for jdk7uN with the 
mac-port changes? ;^)
  * When the jigsaw module changes get integrated into jdk8 (a major event)
- This will likely be a big merge effort, could be a horse race as to who 
gets into jdk8 first. ;^)

My latest Tarot card reading says I'm in for a positive experience, so far so 
good.  ;^)

-kto

 
 Curious,
 Mike Swingler
 Java Engineering
 Apple Inc.
 



Re: Request for review: 7036525 Disable alternative source mechanism for OPENJDK builds

2011-05-03 Thread David Holmes

John Coomes said the following on 05/04/11 02:37:

David Holmes (david.hol...@oracle.com) wrote:
I've just made the change as John suggested and to be honest I don't 
know why I didn't think of that myself. I do see your point though, by 
setting it the same the build will always use the ALT_SRC in the OpenJDK 
case - but this will be fine because it is the same as COMMON_SRC. This 
is only used to generate the Makefiles during the buildtree phase so I 
don't think it is really a concern either way.


FWIW, I prefer the change you've made, but don't feel that strongly
about it.

To be honest I'm doubting the whole rationale for this change as it 
means that an OPENJDK build will never use the alt-src mechanism, when 
according to the comments alt-src was also intended to be used by others 
for introducing alternative code into their builds/distributions. In 
those cases you may well want both alt-src and OPENJDK (given that 
OPENJDK could be being set at the top-level JDK makefile).


IMHO, better if an OPENJDK build doesn't use alt-src, at least by
default.  And I suspect you can override HS_ALT_SRC_REL from the gmake
command line, even when OPENJDK==true (haven't tried it, though).


No. Unless you use -e a variable's value from the environment will be 
overridden by an explicit assignment in the Makefile. Which means that 
the better fix here is:


+ 36 ifndef HS_ALT_SRC_REL
  37   ifneq ($(OPENJDK),true)
  38 # This needs to be changed to a more generic location, but we 
keep it as this

  39 # for now for compatibility
  40
  41 HS_ALT_SRC_REL=src/closed
  42   else
  43 HS_ALT_SRC_REL=$(HS_COMMON_SRC_REL)
  44   endif
+ 45 endif

David