Re: build failure in perfMemory_solaris.cpp?

2015-01-23 Thread Volker Simonis
Hi,

we can see the same in our nightly OpenJDK 8/9 builds
(http://cr.openjdk.java.net/~simonis/ppc-aix-port/) and would be
interested in a solution as well.

Thanks,
Volker

On Fri, Jan 23, 2015 at 5:19 AM, David Holmes david.hol...@oracle.com wrote:
 Hi Anthony,


 On 23/01/2015 10:33 AM, Anthony Scarpino wrote:

 Hi,

 I just pulled the jdk9/dev gate today and hit a build failure on SPARC
 Solaris 11.1 when compiling perfMemory_solaris.cpp in hotspot.  I'm
 using SS12u3 compilers.  Anyone else see a similar error or know what
 might be going wrong?

 ...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 337: Error:
 dd_fd is not a member of DIR.
 ...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 369: Error:
 dd_fd is not a member of DIR.
 gmake[8]: *** [perfMemory_solaris.o] Error 2


 This code was brought in via the recent CPU integration of bug 8050807. (Hi
 Jerry! - cc'd)

 It looks like Solaris has two potential definitions of DIR:

 #if defined(__USE_LEGACY_PROTOTYPES__)
 /* traditional SVR4 definition */
 typedef struct {
 int dd_fd;  /* file descriptor */
 int dd_loc; /* offset in block */
 int dd_size;/* amount of valid data */
 char*dd_buf;/* directory block */
 } DIR;  /* stream data from opendir() */
 #else
 /* default definition (POSIX conformant) */
 typedef struct {
 int d_fd;   /* file descriptor */
 int d_loc;  /* offset in block */
 int d_size; /* amount of valid data */
 char*d_buf; /* directory block */
 } DIR;  /* stream data from opendir() */
 #endif  /* __USE_LEGACY_PROTOTYPES__ */

 I can't see what controls __USE_LEGACY_PROTOTYPES__ but presumably either
 something in Solaris 11.1, or something in SS12u3 is causing this
 difference.

 David

 thanks

 Tony


Re: build failure in perfMemory_solaris.cpp?

2015-01-23 Thread Bradford Wetmore
Is there a bug id yet?  I haven't seen one showing up in a quick search 
for dd_fd or perfMemory_solaris.cpp.


For the record, I'm on what I think is the required platform/compilers:

% uname -a
SunOS sca00bkv 5.11 11.1 sun4v sparc sun4v

% more /etc/release
Oracle Solaris 11.1 SPARC
  Copyright (c) 1983, 2013, Oracle and/or its affiliates.  All rights 
reserved.

   Assembled 06 November 2013

% grep BUILD_CC out.txt
BUILD_CC:= /java/devtools/sparc/SUNWspro/SS12u3/bin/cc

Brad



On 1/23/2015 8:32 AM, Volker Simonis wrote:

Hi,

we can see the same in our nightly OpenJDK 8/9 builds
(http://cr.openjdk.java.net/~simonis/ppc-aix-port/) and would be
interested in a solution as well.

Thanks,
Volker

On Fri, Jan 23, 2015 at 5:19 AM, David Holmes david.hol...@oracle.com wrote:

Hi Anthony,


On 23/01/2015 10:33 AM, Anthony Scarpino wrote:


Hi,

I just pulled the jdk9/dev gate today and hit a build failure on SPARC
Solaris 11.1 when compiling perfMemory_solaris.cpp in hotspot.  I'm
using SS12u3 compilers.  Anyone else see a similar error or know what
might be going wrong?

...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 337: Error:
dd_fd is not a member of DIR.
...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 369: Error:
dd_fd is not a member of DIR.
gmake[8]: *** [perfMemory_solaris.o] Error 2



This code was brought in via the recent CPU integration of bug 8050807. (Hi
Jerry! - cc'd)

It looks like Solaris has two potential definitions of DIR:

#if defined(__USE_LEGACY_PROTOTYPES__)
/* traditional SVR4 definition */
typedef struct {
 int dd_fd;  /* file descriptor */
 int dd_loc; /* offset in block */
 int dd_size;/* amount of valid data */
 char*dd_buf;/* directory block */
} DIR;  /* stream data from opendir() */
#else
/* default definition (POSIX conformant) */
typedef struct {
 int d_fd;   /* file descriptor */
 int d_loc;  /* offset in block */
 int d_size; /* amount of valid data */
 char*d_buf; /* directory block */
} DIR;  /* stream data from opendir() */
#endif  /* __USE_LEGACY_PROTOTYPES__ */

I can't see what controls __USE_LEGACY_PROTOTYPES__ but presumably either
something in Solaris 11.1, or something in SS12u3 is causing this
difference.

David


thanks

Tony


Re: build failure in perfMemory_solaris.cpp?

2015-01-23 Thread Anthony Scarpino

I created one:

https://bugs.openjdk.java.net/browse/JDK-8071501

Tony

On 01/23/2015 10:07 AM, Bradford Wetmore wrote:

Is there a bug id yet?  I haven't seen one showing up in a quick search
for dd_fd or perfMemory_solaris.cpp.

For the record, I'm on what I think is the required platform/compilers:

% uname -a
SunOS sca00bkv 5.11 11.1 sun4v sparc sun4v

% more /etc/release
 Oracle Solaris 11.1 SPARC
   Copyright (c) 1983, 2013, Oracle and/or its affiliates.  All rights
reserved.
Assembled 06 November 2013

% grep BUILD_CC out.txt
BUILD_CC:= /java/devtools/sparc/SUNWspro/SS12u3/bin/cc

Brad



On 1/23/2015 8:32 AM, Volker Simonis wrote:

Hi,

we can see the same in our nightly OpenJDK 8/9 builds
(http://cr.openjdk.java.net/~simonis/ppc-aix-port/) and would be
interested in a solution as well.

Thanks,
Volker

On Fri, Jan 23, 2015 at 5:19 AM, David Holmes
david.hol...@oracle.com wrote:

Hi Anthony,


On 23/01/2015 10:33 AM, Anthony Scarpino wrote:


Hi,

I just pulled the jdk9/dev gate today and hit a build failure on SPARC
Solaris 11.1 when compiling perfMemory_solaris.cpp in hotspot.  I'm
using SS12u3 compilers.  Anyone else see a similar error or know what
might be going wrong?

...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 337: Error:
dd_fd is not a member of DIR.
...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 369: Error:
dd_fd is not a member of DIR.
gmake[8]: *** [perfMemory_solaris.o] Error 2



This code was brought in via the recent CPU integration of bug
8050807. (Hi
Jerry! - cc'd)

It looks like Solaris has two potential definitions of DIR:

#if defined(__USE_LEGACY_PROTOTYPES__)
/* traditional SVR4 definition */
typedef struct {
 int dd_fd;  /* file descriptor */
 int dd_loc; /* offset in block */
 int dd_size;/* amount of valid data */
 char*dd_buf;/* directory block */
} DIR;  /* stream data from opendir() */
#else
/* default definition (POSIX conformant) */
typedef struct {
 int d_fd;   /* file descriptor */
 int d_loc;  /* offset in block */
 int d_size; /* amount of valid data */
 char*d_buf; /* directory block */
} DIR;  /* stream data from opendir() */
#endif  /* __USE_LEGACY_PROTOTYPES__ */

I can't see what controls __USE_LEGACY_PROTOTYPES__ but presumably
either
something in Solaris 11.1, or something in SS12u3 is causing this
difference.

David


thanks

Tony




Re: build failure in perfMemory_solaris.cpp?

2015-01-23 Thread Alejandro E Murillo


by the timing when this started to happen, I believe
this  was caused by the CPU changes integrated into jdk9/dev
on Wednesday (they didn't come through jdk9/hs).
I went to check those changesets and this looks like the prime suspect:

Changeset: c656c7540cb1
Author:gthornbr
Date:  2014-11-17 15:51 -0500
URL:http://hg.openjdk.java.net/jdk9/hs/hotspot/rev/c656c7540cb1

8050807: Better performing performance data handling
Reviewed-by: dcubed, pnauman, ctornqvi, dholmes, mschoene
Contributed-by:gerald.thornbr...@oracle.com

! src/os/bsd/vm/perfMemory_bsd.cpp
! src/os/linux/vm/perfMemory_linux.cpp
! src/os/solaris/vm/perfMemory_solaris.cpp
! src/share/vm/utilities/vmError.cpp


Jerry, I'm assigning the bug to you. Check it out and reassign if needed

Alejandro

On 1/23/2015 11:26 AM, Anthony Scarpino wrote:

I created one:

https://bugs.openjdk.java.net/browse/JDK-8071501

Tony

On 01/23/2015 10:07 AM, Bradford Wetmore wrote:

Is there a bug id yet?  I haven't seen one showing up in a quick search
for dd_fd or perfMemory_solaris.cpp.

For the record, I'm on what I think is the required platform/compilers:

% uname -a
SunOS sca00bkv 5.11 11.1 sun4v sparc sun4v

% more /etc/release
 Oracle Solaris 11.1 SPARC
   Copyright (c) 1983, 2013, Oracle and/or its affiliates.  All rights
reserved.
Assembled 06 November 2013

% grep BUILD_CC out.txt
BUILD_CC:= /java/devtools/sparc/SUNWspro/SS12u3/bin/cc

Brad



On 1/23/2015 8:32 AM, Volker Simonis wrote:

Hi,

we can see the same in our nightly OpenJDK 8/9 builds
(http://cr.openjdk.java.net/~simonis/ppc-aix-port/) and would be
interested in a solution as well.

Thanks,
Volker

On Fri, Jan 23, 2015 at 5:19 AM, David Holmes
david.hol...@oracle.com wrote:

Hi Anthony,


On 23/01/2015 10:33 AM, Anthony Scarpino wrote:


Hi,

I just pulled the jdk9/dev gate today and hit a build failure on 
SPARC

Solaris 11.1 when compiling perfMemory_solaris.cpp in hotspot.  I'm
using SS12u3 compilers.  Anyone else see a similar error or know what
might be going wrong?

...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 337: 
Error:

dd_fd is not a member of DIR.
...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 369: 
Error:

dd_fd is not a member of DIR.
gmake[8]: *** [perfMemory_solaris.o] Error 2



This code was brought in via the recent CPU integration of bug
8050807. (Hi
Jerry! - cc'd)

It looks like Solaris has two potential definitions of DIR:

#if defined(__USE_LEGACY_PROTOTYPES__)
/* traditional SVR4 definition */
typedef struct {
 int dd_fd;  /* file descriptor */
 int dd_loc; /* offset in block */
 int dd_size;/* amount of valid data */
 char*dd_buf;/* directory block */
} DIR;  /* stream data from opendir() */
#else
/* default definition (POSIX conformant) */
typedef struct {
 int d_fd;   /* file descriptor */
 int d_loc;  /* offset in block */
 int d_size; /* amount of valid data */
 char*d_buf; /* directory block */
} DIR;  /* stream data from opendir() */
#endif  /* __USE_LEGACY_PROTOTYPES__ */

I can't see what controls __USE_LEGACY_PROTOTYPES__ but presumably
either
something in Solaris 11.1, or something in SS12u3 is causing this
difference.

David


thanks

Tony




--
Alejandro



Re: RFR: JDK-8069261: Create make dependencies on make variable values

2015-01-23 Thread Erik Joelsson

Hello,

New webrev:

On 2015-01-23 13:34, Magnus Ihse Bursie wrote:

On 2015-01-23 12:17, Erik Joelsson wrote:
* Added test-make to the all target so that it gets tested in JPRT. 
It takes close to no time to run.
While I do like to see the make tests being run more frequently, I'm 
not sure I like the idea of adding them to the all target. I think 
building and testing should be kept as separate as possible, even if 
it matters testing the build system.


If your goal is to get it run in JPRT, why not add it to the JPRT 
bundles target instead?



Removed it for now.


* For SetupArchive, I discovered that for vardeps changes, we have to 
force a full recreation of the jar to be sure those changes are 
really picked up. I also discovered that we currently didn't rebuild 
a jar if the manifest template file was changed. (I'm happy I had 
test-make tests for SetupArchive when fixing this.)


Great! :-)

Seems like it could be a good thing to add a test that changes to the 
manifest file trigger a build? :-) (The current test seems to bundle 
manifest updating with other changes which could by themselves trigger 
the update.)



Implemented.

/Erik


Re: RFR: JDK-8069261: Create make dependencies on make variable values

2015-01-23 Thread Erik Joelsson

And the webrev link: http://cr.openjdk.java.net/~erikj/8069261/webrev.03/

/Erik

On 2015-01-23 14:35, Erik Joelsson wrote:

Hello,

New webrev:

On 2015-01-23 13:34, Magnus Ihse Bursie wrote:

On 2015-01-23 12:17, Erik Joelsson wrote:
* Added test-make to the all target so that it gets tested in JPRT. 
It takes close to no time to run.
While I do like to see the make tests being run more frequently, I'm 
not sure I like the idea of adding them to the all target. I think 
building and testing should be kept as separate as possible, even if 
it matters testing the build system.


If your goal is to get it run in JPRT, why not add it to the JPRT 
bundles target instead?



Removed it for now.


* For SetupArchive, I discovered that for vardeps changes, we have 
to force a full recreation of the jar to be sure those changes are 
really picked up. I also discovered that we currently didn't rebuild 
a jar if the manifest template file was changed. (I'm happy I had 
test-make tests for SetupArchive when fixing this.)


Great! :-)

Seems like it could be a good thing to add a test that changes to the 
manifest file trigger a build? :-) (The current test seems to bundle 
manifest updating with other changes which could by themselves 
trigger the update.)



Implemented.

/Erik




Re: build failure in perfMemory_solaris.cpp?

2015-01-23 Thread David Holmes
The Solaris problem doesn't appear when using our S10u6 devkits so 
wasn't noticed internally. It isn't clear exactly when Solaris decided 
to switch from SVR4 definition to POSIX definition. Not sure if we want 
ugly ifdefs or wait until our official compiler set encounters the problem.


Can't comment on the AIX situation.

David

On 24/01/2015 8:07 AM, Alejandro E Murillo wrote:


by the timing when this started to happen, I believe
this  was caused by the CPU changes integrated into jdk9/dev
on Wednesday (they didn't come through jdk9/hs).
I went to check those changesets and this looks like the prime suspect:

Changeset: c656c7540cb1
Author:gthornbr
Date:  2014-11-17 15:51 -0500
URL:http://hg.openjdk.java.net/jdk9/hs/hotspot/rev/c656c7540cb1

8050807: Better performing performance data handling
Reviewed-by: dcubed, pnauman, ctornqvi, dholmes, mschoene
Contributed-by:gerald.thornbr...@oracle.com

! src/os/bsd/vm/perfMemory_bsd.cpp
! src/os/linux/vm/perfMemory_linux.cpp
! src/os/solaris/vm/perfMemory_solaris.cpp
! src/share/vm/utilities/vmError.cpp


Jerry, I'm assigning the bug to you. Check it out and reassign if needed

Alejandro

On 1/23/2015 11:26 AM, Anthony Scarpino wrote:

I created one:

https://bugs.openjdk.java.net/browse/JDK-8071501

Tony

On 01/23/2015 10:07 AM, Bradford Wetmore wrote:

Is there a bug id yet?  I haven't seen one showing up in a quick search
for dd_fd or perfMemory_solaris.cpp.

For the record, I'm on what I think is the required platform/compilers:

% uname -a
SunOS sca00bkv 5.11 11.1 sun4v sparc sun4v

% more /etc/release
 Oracle Solaris 11.1 SPARC
   Copyright (c) 1983, 2013, Oracle and/or its affiliates.  All rights
reserved.
Assembled 06 November 2013

% grep BUILD_CC out.txt
BUILD_CC:= /java/devtools/sparc/SUNWspro/SS12u3/bin/cc

Brad



On 1/23/2015 8:32 AM, Volker Simonis wrote:

Hi,

we can see the same in our nightly OpenJDK 8/9 builds
(http://cr.openjdk.java.net/~simonis/ppc-aix-port/) and would be
interested in a solution as well.

Thanks,
Volker

On Fri, Jan 23, 2015 at 5:19 AM, David Holmes
david.hol...@oracle.com wrote:

Hi Anthony,


On 23/01/2015 10:33 AM, Anthony Scarpino wrote:


Hi,

I just pulled the jdk9/dev gate today and hit a build failure on
SPARC
Solaris 11.1 when compiling perfMemory_solaris.cpp in hotspot.  I'm
using SS12u3 compilers.  Anyone else see a similar error or know what
might be going wrong?

...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 337:
Error:
dd_fd is not a member of DIR.
...hotspot/src/os/solaris/vm/perfMemory_solaris.cpp, line 369:
Error:
dd_fd is not a member of DIR.
gmake[8]: *** [perfMemory_solaris.o] Error 2



This code was brought in via the recent CPU integration of bug
8050807. (Hi
Jerry! - cc'd)

It looks like Solaris has two potential definitions of DIR:

#if defined(__USE_LEGACY_PROTOTYPES__)
/* traditional SVR4 definition */
typedef struct {
 int dd_fd;  /* file descriptor */
 int dd_loc; /* offset in block */
 int dd_size;/* amount of valid data */
 char*dd_buf;/* directory block */
} DIR;  /* stream data from opendir() */
#else
/* default definition (POSIX conformant) */
typedef struct {
 int d_fd;   /* file descriptor */
 int d_loc;  /* offset in block */
 int d_size; /* amount of valid data */
 char*d_buf; /* directory block */
} DIR;  /* stream data from opendir() */
#endif  /* __USE_LEGACY_PROTOTYPES__ */

I can't see what controls __USE_LEGACY_PROTOTYPES__ but presumably
either
something in Solaris 11.1, or something in SS12u3 is causing this
difference.

David


thanks

Tony






Re: Problem with Windows build - freetype.dll: %1 is not a valid Win32 application

2015-01-23 Thread Magnus Ihse Bursie

On 2015-01-19 09:39, Mads Bondo Dydensborg wrote:

Hi there

As written about earlier, I have compiled OpenJDK on Windows 7 64 bit, using 
Visual Studio 2010 Express SP 1, under Cygwin. (eventually: make clean images). 
AFAIK, VS Express will only build a 32 bit image, and has done. A simple 
HelloWorld test seems to work. However, if I try to run anything graphical, I 
get a linker error regarding Freetype:

mbd@LT01666 
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/demo/jfc/FileChooserDemo
$ ../../../bin/java.exe -jar FileChooserDemo.jar
jan. 19, 2015 8:39:41 AM FileChooserDemo main
SEVERE: null
java.lang.reflect.InvocationTargetException
 at java.awt.EventQueue.invokeAndWait(EventQueue.java:1300)
 at java.awt.EventQueue.invokeAndWait(EventQueue.java:1275)
 at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
 at FileChooserDemo.main(FileChooserDemo.java:796)
Caused by: java.lang.UnsatisfiedLinkError: 
C:\apps\cygwin\home\mbd\Compile\openjdk-8-src-b132-03_mar_2014\openjdk\build\windows-x86-normal-server-release\images\j2sdk-image\jre\bin\freetype.dll:
 %1 is not a valid Win32 application
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
(lots of FontManager = ClassLoader$NativeLibrary stuff).

I am a bit new to Windows, but checking the lib in question:

mbd@LT01666 
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/jre/bin
$ file freetype.dll
freetype.dll: current ar archive

mbd@LT01666 
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/jre/bin
$ ldd freetype.dll
 ntdll.dll = /cygdrive/c/windows/SysWOW64/ntdll.dll (0x77e7)
 kernel32.dll = /cygdrive/c/windows/syswow64/kernel32.dll (0x7590)
 KERNELBASE.dll = /cygdrive/c/windows/syswow64/KERNELBASE.dll 
(0x75a1)

I am not sure if it is 32 or 64 bit, really...

As part of the build process, I had to create a copy of freetype.dll.a - this 
was installed in the X86 part of the Windows Program Files directory - I 
assumed that it was 32 bit.

Any help/hints much appreciated.


Freetype on Windows has long been a frustrating source of problems.

In JDK9 there is a new configure option, --with-freetype-src, which 
helps out a lot with the problematic freetype on Windows. It just 
requires you to download the freetype source code and it will 
automatically compile a correct freetype library for use by OpenJDK.


AFAIK this patch has not been backported to JDK8, however. But if you 
can switch to JDK9 I highly recommend  it. An alternative solution might 
be to download JDK9 just to use this feature, and then point to the 
newly built freetype library using configure in JDK8.


/Magnus


Re: RFR: JDK-8071329: Stop exporting INCLUDE and LIB when building on windows

2015-01-23 Thread Magnus Ihse Bursie

On 2015-01-22 15:40, Erik Joelsson wrote:

Hello,

The new LDFLAGS requires unpack200.exe to stop being linked 
differently to all other executables. There is no reason for this 
discrepancy that I can find, it just seems like someone did a bit of a 
quick hack getting it to build long ago in the old build, and we 
wanted to keep it equivalent in build-infra.


I like the cleanup. Nevertheless, it would be good to check this by the 
group owning unpack200. Is it core libs?


The hotspot build still requires the variables to be exported, so they 
are still being defined in hotspot-spec.gmk.


While working on this, I stumbled on a problem when running make 
reconfigure. The PATH variable value, since exported in make, would 
get longer and longer for each time you run reconfigure. I fixed this 
by saving the original path and resetting it before running configure 
from make.


Apart from wanting a second opinion on the unpack200 stuff, it looks 
good to me. Nice work!


/Magnus


Re: RFR: JDK-8071329: Stop exporting INCLUDE and LIB when building on windows

2015-01-23 Thread Erik Joelsson
Adding Kumar since he has history in the unpack200 executable and I'm 
changing how it is being linked on Windows.


In the old build, unpack200.exe was linked with cl.exe instead of 
link.exe like all other executables and libraries. Since the formatting 
of options is completely different, the same linker flags were not used. 
In this change, I'm removing this special treatment of unpack200.exe so 
that it is linked just like all other executables.


/Erik

On 2015-01-22 15:40, Erik Joelsson wrote:

Hello,

Please review this patch, which makes it possible to take a compile 
command line from the make debug log on Windows, and rerun it in a 
normal cygwin environment, without the need for running vsvars*.bat 
first.


When building native code on windows, using Visual Studio, configure 
extracts the build environment from the setup .bat file provided by VS 
and sets 3 variables in spec.gmk: PATH, INCLUDE and LIB. These 3 
variables are also exported into the environment in spec.gmk, so that 
every tool run by the build will see them. While this is convenient, 
it makes the command lines used by the build unusable outside of the 
build, unless you also export these variables with the correct values.


I have removed the need for INCLUDE and LIB to be exported, by 
converting their contents into compiler and linker flags. These flags 
conceptually fit well in the recent SYSROOT_CFLAGS and SYSROOT_LDFLAGS 
variables.


The PATH variable would be nice to not have to set, and while not 
setting it seems to work most of the time, I suspect that there are 
cases when it won't work. More specifically, in certain environments, 
some dll needed by the compiler program might not be on the path 
without it. So I left it being set for now.


The new LDFLAGS requires unpack200.exe to stop being linked 
differently to all other executables. There is no reason for this 
discrepancy that I can find, it just seems like someone did a bit of a 
quick hack getting it to build long ago in the old build, and we 
wanted to keep it equivalent in build-infra.


The hotspot build still requires the variables to be exported, so they 
are still being defined in hotspot-spec.gmk.


While working on this, I stumbled on a problem when running make 
reconfigure. The PATH variable value, since exported in make, would 
get longer and longer for each time you run reconfigure. I fixed this 
by saving the original path and resetting it before running configure 
from make.


Bug: https://bugs.openjdk.java.net/browse/JDK-8071329
Webrevs:
http://cr.openjdk.java.net/~erikj/8071329/webrev.root.01/
http://cr.openjdk.java.net/~erikj/8071329/webrev.jdk.01/

/Erik




Re: Building open jdk 8 from source fails

2015-01-23 Thread Magnus Ihse Bursie

On 2015-01-18 04:47, lee json wrote:

I switch to cloning repository at
http://hg.openjdk.java.net/jdk8u/jdk8u-dev/ by command `hg clone
http://hg.openjdk.java.net/jdk8u/jdk8u-dev`

Then build with command line `bash ./configure
--with-boot-jdk=/home/jason/jdk1.7.0_6` or `bash ./configure`. And
then execute `make` or `make all` command.

The first step i.e. configure successfully completes. Its output looks
as the section configure. But failing compile source as the section of
make, when calling make/ make all. With or wihtout make clean before
make/ make all doesn't make any differences.

How to fix such errors? Thanks


It looks like you have not gotten all source code correctly. Just 
cloning the top-level repo is not enough.


Try running bash get_source.sh.

/Magnus



Re: RFR (XS) 8031064: build_vm_def.sh not working correctly for new build cross compile

2015-01-23 Thread Dean Long

David and Dmitry, thanks for the reviews!

dl

On 1/22/2015 11:41 PM, David Holmes wrote:

On 23/01/2015 5:36 PM, Dean Long wrote:

On 1/22/2015 11:01 PM, David Holmes wrote:



On 23/01/2015 4:01 AM, Dean Long wrote:

On 1/22/2015 2:19 AM, David Holmes wrote:

On 22/01/2015 8:39 AM, Dean Long wrote:

Thanks Dmitry.  The updated webrev is here:

 http://cr.openjdk.java.net/~dlong/8031064/webrev.3/


This looks weird:

+ VMDEF_PAT  = ^_ZTV
+ VMDEF_PAT := ^gHotSpotVM|$(VMDEF_PAT)
+ VMDEF_PAT := ^UseSharedSpaces$$|$(VMDEF_PAT)
+ VMDEF_PAT := ^_ZN9Arguments17SharedArchivePathE$$|$(VMDEF_PAT)

but I can sort of see why you wanted to do it that way.



Do you have a suggestion for a less-weird-looking way to do it?


Only the obvious but hard to read:

VMDEF_PAT :=
^_ZN9Arguments17SharedArchivePathE$$|^UseSharedSpaces$$|^gHotSpotVM|^_ZTV 





Sure, I will do that.  Can I count that as reviewed?  And do I need
another Reviewer for this change, or am I good to go?


If you change it you will have to redo all your testing. Just leave 
as-is - the readability wins here. Up to you though.


Dmitry and I have reviewed this. So you have one Reviewer and one 
reviewer :)


Thanks,
David


dl


I assume you have verified the results are identical?



Yes.


I would be good to see this applied uniformly across all platforms as
well (except windows).



I suppose, but isn't linux the only platform where we might be
cross-compiling?  I'm not setup to
build for aix, bsd, or solaris, and if I build in JPRT, I'm not 
sure it

will save the vm.def or mapfile to
make a comparison against.  Can we make cleaning up the other 
platforms

a separate RFE?


Getting rid of shell scripts from the build is a Good Thing(TM)! But
yes we can make this a separate RFE.

Thanks,
David



dl


Thanks,
David


dl

On 1/21/2015 12:11 AM, Dmitry Samersoff wrote:

Dean,

vm.make  ll. 247

1. *.o should be  $(Obj_Files)

2.

$(NM) --defined-only *.o | sort -k3 -u |
  awk '/$(VMDEF_PAT)/{ print \t $$3 ; }'

should give you the same result with less efforts

-Dmitry

On 2015-01-21 07:59, Dean Long wrote:

Here's version 2, which does everything in vm.make and doesn't do
anything that is shell-specific:

http://cr.openjdk.java.net/~dlong/8031064//webrev.2/

thanks,

dl












Re: RFR: JDK-8069261: Create make dependencies on make variable values

2015-01-23 Thread Erik Joelsson

Hello,

Thanks for the comments. Here is a new version:
http://cr.openjdk.java.net/~erikj/8069261/webrev.02/

In addition to fixing the concerns below, I fixed the following:

* Added test-make to the all target so that it gets tested in JPRT. It 
takes close to no time to run.


* Added 1 second sleeps in the tests when running on macosx, since the 
filesystem on mac only has 1 second resolution. (WOW!)


* Changed WriteFile to use printf instead of echo since echo on Solaris 
interprets things like '\t', which messes up comparisons.


* Reworked how DependOnVariable is used in JavaCompilation.gmk. Instead 
of just blindly adding all input variables, I moved the definitions 
closer to the recipes, like in NativeCompilation.gmk. I think this is 
generally better, but the triggering reason was that too much unneeded 
stuff got into the vardep variable value and the command line got too 
long on Windows.


* For SetupArchive, I discovered that for vardeps changes, we have to 
force a full recreation of the jar to be sure those changes are really 
picked up. I also discovered that we currently didn't rebuild a jar if 
the manifest template file was changed. (I'm happy I had test-make tests 
for SetupArchive when fixing this.)


/Erik

On 2015-01-21 15:42, Magnus Ihse Bursie wrote:


Some minor comments.
The name standard of the new vardeps files seems a bit vague. :) I 
suggest the following:


* In JavaCompilation:
  $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, $$(dir 
$$($1_JAR))_the.$$($1_JARNAME)_vardeps)

Use .vardeps instead

* In MakeBase:
DependOnVariableFileName = \
$(strip $(if $(strip $2), $2, \
$(MAKESUPPORT_OUTPUTDIR)/vardeps/$(DependOnVariableDirName)/$(strip 
$1).value))

Use .vardeps instead

* Also, in Tools.gmk the additions:
CFLAGS_windows := -nologo, \
seems to have crept in by mistake.

* In NativeCompilation, the line:
 $$($1_RES): $$($1_VERSIONINFO_RESOURCE) $$($1_RES_VARDEPS_FILE)
is mis-indented

* Perhaps you can add some comment clarifying that $1_COMPILE_VARDEPS 
contains exactly the variables that add_native_source depend on,

and that $1_COMPILE_VARDEPS_FILE is used by add_native_source?

Otherwise, it looks all very good!

/Magnus




Re: RFR: JDK-8055190: Cleanup include and exclude of core-libs native libraries after source code restructure

2015-01-23 Thread Alan Bateman

On 23/01/2015 14:35, Erik Joelsson wrote:

Hello,

Please review this build patch, cleaning up some in the native 
compilation of some core libraries. After the source code restructure 
into modules, the need for explicit exclude and include of source 
files was reduced. This patch moves some OS specific files to OS 
specific source dirs and adjusts the makefiles. It's based on Magnus' 
review comments on the source code restructure change.


Bug: https://bugs.openjdk.java.net/browse/JDK-8055190
Webrev: http://cr.openjdk.java.net/~erikj/8055190/webrev.01/

/Erik
This looks a good clean-up and demonstrates the usefulness of the new 
source layout.


Can refs.allowed be removed? I thought we removed the JDK 8 dependency 
checker early in JDK 9 so this file shouldn't be needed.


-Alan


Re: RFR: JDK-8069261: Create make dependencies on make variable values

2015-01-23 Thread Magnus Ihse Bursie

On 2015-01-23 14:35, Erik Joelsson wrote:

Hello,

New webrev:

On 2015-01-23 13:34, Magnus Ihse Bursie wrote:

On 2015-01-23 12:17, Erik Joelsson wrote:
* Added test-make to the all target so that it gets tested in JPRT. 
It takes close to no time to run.
While I do like to see the make tests being run more frequently, I'm 
not sure I like the idea of adding them to the all target. I think 
building and testing should be kept as separate as possible, even if 
it matters testing the build system.


If your goal is to get it run in JPRT, why not add it to the JPRT 
bundles target instead?



Removed it for now.


* For SetupArchive, I discovered that for vardeps changes, we have 
to force a full recreation of the jar to be sure those changes are 
really picked up. I also discovered that we currently didn't rebuild 
a jar if the manifest template file was changed. (I'm happy I had 
test-make tests for SetupArchive when fixing this.)


Great! :-)

Seems like it could be a good thing to add a test that changes to the 
manifest file trigger a build? :-) (The current test seems to bundle 
manifest updating with other changes which could by themselves 
trigger the update.)



Implemented.


Looks good to me.

/Magnus


RFR: JDK-8055190: Cleanup include and exclude of core-libs native libraries after source code restructure

2015-01-23 Thread Erik Joelsson

Hello,

Please review this build patch, cleaning up some in the native 
compilation of some core libraries. After the source code restructure 
into modules, the need for explicit exclude and include of source files 
was reduced. This patch moves some OS specific files to OS specific 
source dirs and adjusts the makefiles. It's based on Magnus' review 
comments on the source code restructure change.


Bug: https://bugs.openjdk.java.net/browse/JDK-8055190
Webrev: http://cr.openjdk.java.net/~erikj/8055190/webrev.01/

/Erik


Re: RFR: JDK-8055190: Cleanup include and exclude of core-libs native libraries after source code restructure

2015-01-23 Thread Erik Joelsson

On 2015-01-23 15:41, Alan Bateman wrote:

On 23/01/2015 14:35, Erik Joelsson wrote:

Hello,

Please review this build patch, cleaning up some in the native 
compilation of some core libraries. After the source code restructure 
into modules, the need for explicit exclude and include of source 
files was reduced. This patch moves some OS specific files to OS 
specific source dirs and adjusts the makefiles. It's based on Magnus' 
review comments on the source code restructure change.


Bug: https://bugs.openjdk.java.net/browse/JDK-8055190
Webrev: http://cr.openjdk.java.net/~erikj/8055190/webrev.01/

/Erik
This looks a good clean-up and demonstrates the usefulness of the new 
source layout.



Thanks
Can refs.allowed be removed? I thought we removed the JDK 8 dependency 
checker early in JDK 9 so this file shouldn't be needed.


I was wondering what it was and could not find any usages. With your 
confirmation I have opted to remove it completely instead.


Updated webrev: http://cr.openjdk.java.net/~erikj/8055190/webrev.02/

/Erik


Re: RFR: JDK-8069261: Create make dependencies on make variable values

2015-01-23 Thread Magnus Ihse Bursie

On 2015-01-23 12:17, Erik Joelsson wrote:

Hello,

Thanks for the comments. Here is a new version:
http://cr.openjdk.java.net/~erikj/8069261/webrev.02/

In addition to fixing the concerns below, I fixed the following:

* Added test-make to the all target so that it gets tested in JPRT. It 
takes close to no time to run.
While I do like to see the make tests being run more frequently, I'm not 
sure I like the idea of adding them to the all target. I think 
building and testing should be kept as separate as possible, even if it 
matters testing the build system.


If your goal is to get it run in JPRT, why not add it to the JPRT 
bundles target instead?


* Added 1 second sleeps in the tests when running on macosx, since the 
filesystem on mac only has 1 second resolution. (WOW!)


* Changed WriteFile to use printf instead of echo since echo on 
Solaris interprets things like '\t', which messes up comparisons.


* Reworked how DependOnVariable is used in JavaCompilation.gmk. 
Instead of just blindly adding all input variables, I moved the 
definitions closer to the recipes, like in NativeCompilation.gmk. I 
think this is generally better, but the triggering reason was that too 
much unneeded stuff got into the vardep variable value and the command 
line got too long on Windows.


* For SetupArchive, I discovered that for vardeps changes, we have to 
force a full recreation of the jar to be sure those changes are really 
picked up. I also discovered that we currently didn't rebuild a jar if 
the manifest template file was changed. (I'm happy I had test-make 
tests for SetupArchive when fixing this.)


Great! :-)

Seems like it could be a good thing to add a test that changes to the 
manifest file trigger a build? :-) (The current test seems to bundle 
manifest updating with other changes which could by themselves trigger 
the update.)


/Magnus



/Erik

On 2015-01-21 15:42, Magnus Ihse Bursie wrote:


Some minor comments.
The name standard of the new vardeps files seems a bit vague. :) I 
suggest the following:


* In JavaCompilation:
  $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, $$(dir 
$$($1_JAR))_the.$$($1_JARNAME)_vardeps)

Use .vardeps instead

* In MakeBase:
DependOnVariableFileName = \
$(strip $(if $(strip $2), $2, \
$(MAKESUPPORT_OUTPUTDIR)/vardeps/$(DependOnVariableDirName)/$(strip 
$1).value))

Use .vardeps instead

* Also, in Tools.gmk the additions:
CFLAGS_windows := -nologo, \
seems to have crept in by mistake.

* In NativeCompilation, the line:
 $$($1_RES): $$($1_VERSIONINFO_RESOURCE) $$($1_RES_VARDEPS_FILE)
is mis-indented

* Perhaps you can add some comment clarifying that $1_COMPILE_VARDEPS 
contains exactly the variables that add_native_source depend on,

and that $1_COMPILE_VARDEPS_FILE is used by add_native_source?

Otherwise, it looks all very good!

/Magnus