Hi David,

thanks again for your efforts.

Here is a version that ran successfully through jdk-submit 
(mach5-one-clanger-JDK-8234185-3-20191205-1051-7247172): 
http://cr.openjdk.java.net/~clanger/webrevs/8234185.2/

I avoid the inclusion of jdk_util.h in 
src/java.base/windows/native/libjava/canonicalize_md.c. Do you think this is 
good to go?

Somebody in Oracle could then eventually clean up things by decoupling the 
installer from OpenJDK's canonicalize_md.c. I'd open a bug for this.

Thanks
Christoph

> -----Original Message-----
> From: David Holmes <david.hol...@oracle.com>
> Sent: Dienstag, 3. Dezember 2019 23:52
> To: Langer, Christoph <christoph.lan...@sap.com>
> Cc: core-libs-dev@openjdk.java.net; hotspot-runtime-
> d...@openjdk.java.net; Alan Bateman <alan.bate...@oracle.com>; gerard
> ziemski <gerard.ziem...@oracle.com>
> Subject: Re: RFR: 8234185: Cleanup usage of canonicalize function between
> libjava, hotspot and libinstrument
> 
> Hi Christoph,
> 
> On 3/12/2019 7:26 pm, Langer, Christoph wrote:
> > Hi David,
> >
> > thanks for taking care of this.
> >
> > This would be my updated patch that could hopefully be enabled by just
> adding the include directory where "jdk_util.h" is located. It would be really
> great if that'd work. I think it would open up a path to automatically include
> io_util_md.h by including io_util.h.
> >
> > http://cr.openjdk.java.net/~clanger/webrevs/8234185.1/
> 
> I'm afraid I cannot get this to work at our end. I get the following errors:
> 
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> error C2143: syntax error: missing ')' before '*'
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> error C2143: syntax error: missing '{' before '*'
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> warning C4142: 'size_t': benign redefinition of type
> C:\ade\mesos\work_dir\jib-
> ma~1\install\jpg\infra\buildd~1\devkit~1\vs2017~3.0\devkit~1.gz\VC\includ
> e\vcruntime.h(184):
> note: see declaration of 'size_t'
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> error C2370: 'size_t': redefinition; different storage class
> C:\ade\mesos\work_dir\jib-
> ma~1\install\jpg\infra\buildd~1\devkit~1\vs2017~3.0\devkit~1.gz\VC\includ
> e\vcruntime.h(184):
> note: see declaration of 'size_t'
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> error C2146: syntax error: missing ';' before identifier 'info_size'
> t:\workspace\open\src\java.base\share\native\libjava\jdk_util.h(46):
> error C2059: syntax error: ')'
> 
> This pertains to the line:
> 
> JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size);
> 
> There is also a second problem in our closed code that will take more
> effort from someone familiar with that code to resolve. I will file an
> issue for our install team to pick up.
> 
> I would ask that this not be pushed for the moment while others figure
> out how best to handle this.
> 
> Thanks,
> David
> -----
> 
> 
> > Cheers
> > Christoph
> >
> >
> >> -----Original Message-----
> >> From: David Holmes <david.hol...@oracle.com>
> >> Sent: Dienstag, 3. Dezember 2019 03:13
> >> To: Langer, Christoph <christoph.lan...@sap.com>; Alan Bateman
> >> <alan.bate...@oracle.com>; gerard ziemski
> <gerard.ziem...@oracle.com>
> >> Cc: core-libs-dev@openjdk.java.net; hotspot-runtime-
> >> d...@openjdk.java.net
> >> Subject: Re: RFR: 8234185: Cleanup usage of canonicalize function
> between
> >> libjava, hotspot and libinstrument
> >>
> >> Hi Christoph,
> >>
> >> Can you please post your updated patch for review and I will use it to
> >> check the fix for our internal build. Once you have your fix reviewed I
> >> will push both fixes together.
> >>
> >> Thanks,
> >> David
> >>
> >> On 25/11/2019 10:41 pm, David Holmes wrote:
> >>> Hi Christoph,
> >>>
> >>> On 25/11/2019 10:38 pm, Langer, Christoph wrote:
> >>>> Hi David,
> >>>>
> >>>> thanks for your investigation. I'll prepare a fix to move back
> >>>> getPrefixed into canonicalize_md.c. However, could you please still
> >>>> fix your internal build in terms that it would have 'jdk_util.h' in
> >>>> the include path?
> >>>
> >>> That should be simple enough to do.
> >>>
> >>> David
> >>>
> >>>> Thanks
> >>>> Christoph
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: David Holmes <david.hol...@oracle.com>
> >>>>> Sent: Montag, 25. November 2019 01:02
> >>>>> To: Langer, Christoph <christoph.lan...@sap.com>; Alan Bateman
> >>>>> <alan.bate...@oracle.com>; gerard ziemski
> >> <gerard.ziem...@oracle.com>
> >>>>> Cc: core-libs-dev@openjdk.java.net; hotspot-runtime-
> >>>>> d...@openjdk.java.net
> >>>>> Subject: Re: RFR: 8234185: Cleanup usage of canonicalize function
> >>>>> between
> >>>>> libjava, hotspot and libinstrument
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 25/11/2019 8:45 am, David Holmes wrote:
> >>>>>> On 25/11/2019 7:49 am, David Holmes wrote:
> >>>>>>> On 25/11/2019 7:33 am, David Holmes wrote:
> >>>>>>>> Hi Christoph,
> >>>>>>>>
> >>>>>>>> On 23/11/2019 12:04 am, Langer, Christoph wrote:
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> I'd like to push this change. However, running it through jdk-
> submit
> >>>>>>>>> shows reproducible errors:
> >>>>>>>>>
> >>>>>>>>> Job: mach5-one-clanger-JDK-8234185-1-20191122-0927-6913189
> >>>>>>>>> BuildId: 2019-11-22-0926373.christoph.langer.source
> >>>>>>>>> No failed tests
> >>>>>>>>> Tasks Summary
> >>>>>>>>> •    NA: 0
> >>>>>>>>> •    NOTHING_TO_RUN: 0
> >>>>>>>>> •    KILLED: 0
> >>>>>>>>> •    PASSED: 76
> >>>>>>>>> •    UNABLE_TO_RUN: 0
> >>>>>>>>> •    EXECUTED_WITH_FAILURE: 1
> >>>>>>>>> •    FAILED: 0
> >>>>>>>>> •    HARNESS_ERROR: 0
> >>>>>>>>> Build
> >>>>>>>>> 1 Executed with failure
> >>>>>>>>> o    windows-x64-install-windows-x64-build-19 error while
> building,
> >>>>>>>>> return value: 2
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Job: mach5-one-clanger-JDK-8234185-20191121-2313-6898791
> >>>>>>>>> BuildId: 2019-11-21-2311357.christoph.langer.source
> >>>>>>>>> No failed tests
> >>>>>>>>> Tasks Summary
> >>>>>>>>> •    NA: 0
> >>>>>>>>> •    NOTHING_TO_RUN: 0
> >>>>>>>>> •    KILLED: 0
> >>>>>>>>> •    PASSED: 76
> >>>>>>>>> •    UNABLE_TO_RUN: 0
> >>>>>>>>> •    EXECUTED_WITH_FAILURE: 1
> >>>>>>>>> •    FAILED: 0
> >>>>>>>>> •    HARNESS_ERROR: 0
> >>>>>>>>> Build
> >>>>>>>>> 1 Executed with failure
> >>>>>>>>> o    windows-x64-install-windows-x64-build-19 error while
> building,
> >>>>>>>>> return value: 2
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> David already had a look and let me know that the following was
> >> the
> >>>>>>>>> reason:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>
> >>
> t:/workspace/open/src/java.base/windows/native/libjava/canonicalize_md.
> >>>>> c(41):
> >>>>>>>>> fatal error C1083: Cannot open include file: 'jdk_util.h': No such
> >>>>>>>>> file or directory
> >>>>>>>>>
> >>>>>>>>> This is not explainable to me as I see this running through my
> local
> >>>>>>>>> build and our nightly builds without problems. I also can't explain
> >>>>>>>>> jdk_util.h can't be opened at this place - it should be there and
> >>>>>>>>> part of the include directories...
> >>>>>>>>>
> >>>>>>>>> I'd appreciate any help...
> >>>>>>>>
> >>>>>>>> I just dug a little deeper and this is failing in part of our closed
> >>>>>>>> build for the install repo. There is a library there that is using
> >>>>>>>> canonicalize_md.c directly - i.e. it adds that file to its source
> >>>>>>>> files list. The build instructions don't include that directory on
> >>>>>>>> the include directory list - hence the failure. But it will also fail
> >>>>>>>> due to the name change you made.
> >>>>>>>
> >>>>>>> Actually it appears that the other source code doesn't actually refer
> >>>>>>> to the canonicalize function at all, so a simple fix may be possible
> >>>>>>> at the build level on our side. I'm testing that now.
> >>>>>>
> >>>>>> It isn't the canonicalize function that is used, it is getPrefixed,
> >>>>>> which has now been moved to the io_util_md.c file. So a fix will be a
> >>>>>> bit more involved.
> >>>>>
> >>>>> I tried adding io_util_md.c to the library source list instead of
> >>>>> canonicalize_md.c but that just caused a slew of other compilation
> >>>>> failures, so I don't see any quick fix for us here.
> >>>>>
> >>>>> David
> >>>>>
> >>>>>>
> >>>>>> David
> >>>>>>
> >>>>>>>
> >>>>>>> David
> >>>>>>> -----
> >>>>>>>
> >>>>>>>> Someone will need to work with you to make the necessary
> changes
> >> to
> >>>>>>>> our code.
> >>>>>>>>
> >>>>>>>> David
> >>>>>>>>
> >>>>>>>>> Thanks
> >>>>>>>>> Christoph
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> -----Original Message-----
> >>>>>>>>>> From: Langer, Christoph
> >>>>>>>>>> Sent: Donnerstag, 21. November 2019 14:19
> >>>>>>>>>> To: Alan Bateman <alan.bate...@oracle.com>; core-libs-
> >>>>>>>>>> d...@openjdk.java.net; hotspot-runtime-
> d...@openjdk.java.net
> >>>>>>>>>> Subject: RE: RFR: 8234185: Cleanup usage of canonicalize
> function
> >>>>>>>>>> between
> >>>>>>>>>> libjava, hotspot and libinstrument
> >>>>>>>>>>
> >>>>>>>>>> Hi Alan,
> >>>>>>>>>>
> >>>>>>>>>> thanks for the review. I'll push it then after running through
> >>>>>>>>>> jdk-submit.
> >>>>>>>>>>
> >>>>>>>>>> /Christoph
> >>>>>>>>>>
> >>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>> From: Alan Bateman <alan.bate...@oracle.com>
> >>>>>>>>>>> Sent: Donnerstag, 21. November 2019 09:51
> >>>>>>>>>>> To: Langer, Christoph <christoph.lan...@sap.com>; core-libs-
> >>>>>>>>>>> d...@openjdk.java.net; hotspot-runtime-
> >> d...@openjdk.java.net
> >>>>>>>>>>> Subject: Re: RFR: 8234185: Cleanup usage of canonicalize
> >> function
> >>>>>>>>>>> between
> >>>>>>>>>>> libjava, hotspot and libinstrument
> >>>>>>>>>>>
> >>>>>>>>>>> On 14/11/2019 15:37, Langer, Christoph wrote:
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> please review this cleanup change regarding function
> >>>>>>>>>>>> "canonicalize" of
> >>>>>>>>>>> libjava.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8234185
> >>>>>>>>>>>> Webrev:
> >> http://cr.openjdk.java.net/~clanger/webrevs/8234185.0/
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> The goal is to cleanup how this function is defined and used.
> >> One
> >>>>>>>>>>>> thing is,
> >>>>>>>>>>> that there was an unnecessary wrapper function
> "Canonicalize"
> >> in
> >>>>>>>>>>> jni_util.c.
> >>>>>>>>>>> It wrapped the call to "canonicalize". We can get rid of this
> >>>>>>>>>>> wrapper.
> >>>>>>>>>>> Unfortunately, it is not possible to just export "canonicalize"
> >>>>>>>>>>> since this will
> >>>>>>>>>>> conflict with a method signature from the math library, at
> least
> >>>>>>>>>>> on modern
> >>>>>>>>>>> Linuxes. So I decided to call the method JDK_Canonicalize and
> >> will
> >>>>>>>>>>> correctly
> >>>>>>>>>>> define it in jdk_util.h which can be included everywhere.
> >>>>>>>>>>>>
> >>>>>>>>>>> I think this change is okay. My main concern when initially
> seeing
> >>>>>>>>>>> this
> >>>>>>>>>>> go by was that it would leak the \\?\ or \\?\UNC\ prefix into
> the
> >>>>>>>>>>> canonical File when it wasn't there previously, this would of
> >>>>>>>>>>> course
> >>>>>>>>>>> have several implications. But I think you have it right and this
> >>>>>>>>>>> is, as
> >>>>>>>>>>> you position, just refactoring/cleanup.
> >>>>>>>>>>>
> >>>>>>>>>>> -Alan

Reply via email to