[RFR] [8u] 8189761: COMPANY_NAME, IMPLEMENTOR, BUNDLE_VENDOR, VENDOR, but no configure flag

Severin Gehwolf sgehwolf at redhat.com
Tue Mar 26 11:37:14 UTC 2019


Hi Andrew,

On Tue, 2019-03-26 at 01:59 +0000, Andrew John Hughes wrote:
> Bug: https://bugs.openjdk.java.net/browse/JDK-8189761
> Webrev(s):
> https://cr.openjdk.java.net/~andrew/openjdk8/8189761/hotspot/

 105 CXXFLAGS/vm_version.o += ${JRE_VERSION}
 106 CXXFLAGS/arguments.o += ${VERSION_CFLAGS}

This got me curious why VERSION_CFLAGS would only be needed for
arguments.o. This hunk:

+ifneq ($(COMPANY_NAME),)
+  # COMPANY_NAME is set to "N/A" in $AUTOCONF_DIR/version-numbers by default,
+  # but can be customized with the '--with-vendor-name' configure option.
+  # Only export "VENDOR" to the build if COMPANY_NAME contains a real value.
+  # Otherwise the default value for VENDOR, which is used to set the "java.vendor"
+  # and "java.vm.vendor" properties is hard-coded into the source code (i.e. in
+  # System.c in the jdk for "vm.vendor" and vm_version.cpp in the VM for "java.vm.vendor")
+  ifneq ($(COMPANY_NAME), N/A)
+    VERSION_CFLAGS += -DVENDOR='"$(COMPANY_NAME)"'
+  endif
+endif

... mentions System.c (jdk) and vm_version.cpp (hotspot). Indeed,
java.vm.vendor doesn't change when --with-vendor-name="Red Hat Inc." is
being passed for a patched JDK 8u:

$ ./bin/java -XshowSettings -version 2>&1 | grep vendor
    java.specification.vendor = Oracle Corporation
    java.vendor = Red Hat Inc.
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    java.vm.specification.vendor = Oracle Corporation
    java.vm.vendor = Oracle Corporation

That's different from a JDK 11u build:

$ ./bin/java -XshowSettings -version 2>&1 | grep vendor

bin/java -XshowSettings -version 2>&1 | grep vendor
    java.specification.vendor = Oracle Corporation
    java.vendor = Red Hat Inc.
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.java.com/bugreport/
    java.vendor.version = 18.9
    java.vm.specification.vendor = Oracle Corporation
    java.vm.vendor = Red Hat Inc.

This should fix it:

CXXFLAGS/vm_version.o += ${JRE_VERSION} ${VERSION_CFLAGS}

Thanks,
Severin



More information about the build-dev mailing list