From 4821c37ebebfb8c8d5837258b968356dfe689d25 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Mar 13 2017 15:31:11 +0000 Subject: Sync with f25 --- diff --git a/.gitignore b/.gitignore index dde235b..d8c2025 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ /openjdk8-forests-latest-shenandoah-aarch64-shenandoah-jdk8u121-b14.tar.xz /aarch64-port-jdk8u-aarch64-jdk8u121-b14.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-02-20.tar.xz +/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-03-09.tar.xz diff --git a/1417266.patch b/1417266.patch deleted file mode 100644 index 82a5b16..0000000 --- a/1417266.patch +++ /dev/null @@ -1,130 +0,0 @@ - -# HG changeset patch -# User roland -# Date 1487208397 28800 -# Node ID 35db0413819a18edd6718dd42e7536182c42aa8b -# Parent ac559f3ccca81de373f18ac7c4b2d813d0278920 -8174164: SafePointNode::_replaced_nodes breaks with irreducible loops -Reviewed-by: kvn - -diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/callnode.hpp ---- openjdk/hotspot/src/share/vm/opto/callnode.hpp Wed Feb 15 11:14:45 2017 +0100 -+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp Wed Feb 15 17:26:37 2017 -0800 -@@ -452,8 +452,8 @@ - void delete_replaced_nodes() { - _replaced_nodes.reset(); - } -- void apply_replaced_nodes() { -- _replaced_nodes.apply(this); -+ void apply_replaced_nodes(uint idx) { -+ _replaced_nodes.apply(this, idx); - } - void merge_replaced_nodes_with(SafePointNode* sfpt) { - _replaced_nodes.merge_with(sfpt->_replaced_nodes); -# I was informed that this hunk is not necessary in jdk8 -#diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/library_call.cpp -#--- openjdk/hotspot/src/share/vm/opto/library_call.cpp Wed Feb 15 11:14:45 2017 +0100 -#+++ openjdk/hotspot/src/share/vm/opto/library_call.cpp Wed Feb 15 17:26:37 2017 -0800 -#@@ -277,7 +277,8 @@ -# AllocateArrayNode* tightly_coupled_allocation(Node* ptr, -# RegionNode* slow_region); -# JVMState* arraycopy_restore_alloc_state(AllocateArrayNode* alloc, int& saved_reexecute_sp); -#- void arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp); -#+ void arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp, -#+ uint new_idx); -# -# typedef enum { LS_get_add, LS_get_set, LS_cmp_swap, LS_cmp_swap_weak, LS_cmp_exchange } LoadStoreKind; -# MemNode::MemOrd access_kind_to_memord_LS(AccessKind access_kind, bool is_store); -#@@ -4882,7 +4883,8 @@ -# // deoptimize. This is possible because tightly_coupled_allocation() -# // guarantees there's no observer of the allocated array at this point -# // and the control flow is simple enough. -#-void LibraryCallKit::arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp) { -#+void LibraryCallKit::arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, -#+ int saved_reexecute_sp, uint new_idx) { -# if (saved_jvms != NULL && !stopped()) { -# assert(alloc != NULL, "only with a tightly coupled allocation"); -# // restore JVM state to the state at the arraycopy -#@@ -4891,7 +4893,7 @@ -# assert(saved_jvms->map()->i_o() == map()->i_o(), "IO state changed?"); -# // If we've improved the types of some nodes (null check) while -# // emitting the guards, propagate them to the current state -#- map()->replaced_nodes().apply(saved_jvms->map()); -#+ map()->replaced_nodes().apply(saved_jvms->map(), new_idx); -# set_jvms(saved_jvms); -# _reexecute_sp = saved_reexecute_sp; -# -#@@ -4949,6 +4951,7 @@ -# Node* dest_offset = argument(3); // type: int -# Node* length = argument(4); // type: int -# -#+ uint new_idx = C->unique(); -# -# // Check for allocation before we add nodes that would confuse -# // tightly_coupled_allocation() -#@@ -5164,7 +5167,7 @@ -# } -# } -# -#- arraycopy_move_allocation_here(alloc, dest, saved_jvms, saved_reexecute_sp); -#+ arraycopy_move_allocation_here(alloc, dest, saved_jvms, saved_reexecute_sp, new_idx); -# -# if (stopped()) { -# return true; -diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/parse1.cpp ---- openjdk/hotspot/src/share/vm/opto/parse1.cpp Wed Feb 15 11:14:45 2017 +0100 -+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp Wed Feb 15 17:26:37 2017 -0800 -@@ -1086,7 +1086,7 @@ - kit.make_dtrace_method_exit(method()); - } - if (_replaced_nodes_for_exceptions) { -- kit.map()->apply_replaced_nodes(); -+ kit.map()->apply_replaced_nodes(_new_idx); - } - // Done with exception-path processing. - ex_map = kit.make_exception_state(ex_oop); -@@ -1107,7 +1107,7 @@ - _exits.add_exception_state(ex_map); - } - } -- _exits.map()->apply_replaced_nodes(); -+ _exits.map()->apply_replaced_nodes(_new_idx); - } - - //-----------------------------create_entry_map------------------------------- -diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/replacednodes.cpp ---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp Wed Feb 15 11:14:45 2017 +0100 -+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp Wed Feb 15 17:26:37 2017 -0800 -@@ -92,13 +92,17 @@ - } - - // Perfom node replacement (used when returning to caller) --void ReplacedNodes::apply(Node* n) { -+void ReplacedNodes::apply(Node* n, uint idx) { - if (is_empty()) { - return; - } - for (int i = 0; i < _replaced_nodes->length(); i++) { - ReplacedNode replaced = _replaced_nodes->at(i); -- n->replace_edge(replaced.initial(), replaced.improved()); -+ // Only apply if improved node was created in a callee to avoid -+ // issues with irreducible loops in the caller -+ if (replaced.improved()->_idx >= idx) { -+ n->replace_edge(replaced.initial(), replaced.improved()); -+ } - } - } - -diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/replacednodes.hpp ---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp Wed Feb 15 11:14:45 2017 +0100 -+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp Wed Feb 15 17:26:37 2017 -0800 -@@ -71,7 +71,7 @@ - void record(Node* initial, Node* improved); - void transfer_from(const ReplacedNodes& other, uint idx); - void reset(); -- void apply(Node* n); -+ void apply(Node* n, uint idx); - void merge_with(const ReplacedNodes& other); - bool is_empty() const; - void dump(outputStream *st) const; - diff --git a/1423421.patch b/1423421.patch deleted file mode 100644 index 384c52a..0000000 --- a/1423421.patch +++ /dev/null @@ -1,33 +0,0 @@ -# HG changeset patch -# User ksrini -# Date 1414764176 25200 -# Fri Oct 31 07:02:56 2014 -0700 -# Node ID 9fd9a50e7994a9659c5ef21296d0baee4c2eecff -# Parent fd59a2d4313440077fce3fbf39174755a15d285a -8061305: Javadoc crashes when method name ends with "Property" -Reviewed-by: jjg - -diff --git jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java ---- jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java -+++ jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java -@@ -656,6 +656,9 @@ - // properties aren't named setA* or getA* - private final Pattern pattern = Pattern.compile("[sg]et\\p{Upper}.*"); - private boolean isPropertyMethod(MethodDoc method) { -+ if (!configuration.javafx) { -+ return false; -+ } - if (!method.name().endsWith("Property")) { - return false; - } -@@ -667,7 +670,9 @@ - if (pattern.matcher(method.name()).matches()) { - return false; - } -- -+ if (method.typeParameters().length > 0) { -+ return false; -+ } - return 0 == method.parameters().length - && !"void".equals(method.returnType().simpleTypeName()); - } diff --git a/8061305-pr3335-rh1423421.patch b/8061305-pr3335-rh1423421.patch new file mode 100644 index 0000000..384c52a --- /dev/null +++ b/8061305-pr3335-rh1423421.patch @@ -0,0 +1,33 @@ +# HG changeset patch +# User ksrini +# Date 1414764176 25200 +# Fri Oct 31 07:02:56 2014 -0700 +# Node ID 9fd9a50e7994a9659c5ef21296d0baee4c2eecff +# Parent fd59a2d4313440077fce3fbf39174755a15d285a +8061305: Javadoc crashes when method name ends with "Property" +Reviewed-by: jjg + +diff --git jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java +--- jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java ++++ jdk8/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java +@@ -656,6 +656,9 @@ + // properties aren't named setA* or getA* + private final Pattern pattern = Pattern.compile("[sg]et\\p{Upper}.*"); + private boolean isPropertyMethod(MethodDoc method) { ++ if (!configuration.javafx) { ++ return false; ++ } + if (!method.name().endsWith("Property")) { + return false; + } +@@ -667,7 +670,9 @@ + if (pattern.matcher(method.name()).matches()) { + return false; + } +- ++ if (method.typeParameters().length > 0) { ++ return false; ++ } + return 0 == method.parameters().length + && !"void".equals(method.returnType().simpleTypeName()); + } diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch new file mode 100644 index 0000000..82a5b16 --- /dev/null +++ b/8174164-pr3334-rh1417266.patch @@ -0,0 +1,130 @@ + +# HG changeset patch +# User roland +# Date 1487208397 28800 +# Node ID 35db0413819a18edd6718dd42e7536182c42aa8b +# Parent ac559f3ccca81de373f18ac7c4b2d813d0278920 +8174164: SafePointNode::_replaced_nodes breaks with irreducible loops +Reviewed-by: kvn + +diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/callnode.hpp +--- openjdk/hotspot/src/share/vm/opto/callnode.hpp Wed Feb 15 11:14:45 2017 +0100 ++++ openjdk/hotspot/src/share/vm/opto/callnode.hpp Wed Feb 15 17:26:37 2017 -0800 +@@ -452,8 +452,8 @@ + void delete_replaced_nodes() { + _replaced_nodes.reset(); + } +- void apply_replaced_nodes() { +- _replaced_nodes.apply(this); ++ void apply_replaced_nodes(uint idx) { ++ _replaced_nodes.apply(this, idx); + } + void merge_replaced_nodes_with(SafePointNode* sfpt) { + _replaced_nodes.merge_with(sfpt->_replaced_nodes); +# I was informed that this hunk is not necessary in jdk8 +#diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/library_call.cpp +#--- openjdk/hotspot/src/share/vm/opto/library_call.cpp Wed Feb 15 11:14:45 2017 +0100 +#+++ openjdk/hotspot/src/share/vm/opto/library_call.cpp Wed Feb 15 17:26:37 2017 -0800 +#@@ -277,7 +277,8 @@ +# AllocateArrayNode* tightly_coupled_allocation(Node* ptr, +# RegionNode* slow_region); +# JVMState* arraycopy_restore_alloc_state(AllocateArrayNode* alloc, int& saved_reexecute_sp); +#- void arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp); +#+ void arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp, +#+ uint new_idx); +# +# typedef enum { LS_get_add, LS_get_set, LS_cmp_swap, LS_cmp_swap_weak, LS_cmp_exchange } LoadStoreKind; +# MemNode::MemOrd access_kind_to_memord_LS(AccessKind access_kind, bool is_store); +#@@ -4882,7 +4883,8 @@ +# // deoptimize. This is possible because tightly_coupled_allocation() +# // guarantees there's no observer of the allocated array at this point +# // and the control flow is simple enough. +#-void LibraryCallKit::arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, int saved_reexecute_sp) { +#+void LibraryCallKit::arraycopy_move_allocation_here(AllocateArrayNode* alloc, Node* dest, JVMState* saved_jvms, +#+ int saved_reexecute_sp, uint new_idx) { +# if (saved_jvms != NULL && !stopped()) { +# assert(alloc != NULL, "only with a tightly coupled allocation"); +# // restore JVM state to the state at the arraycopy +#@@ -4891,7 +4893,7 @@ +# assert(saved_jvms->map()->i_o() == map()->i_o(), "IO state changed?"); +# // If we've improved the types of some nodes (null check) while +# // emitting the guards, propagate them to the current state +#- map()->replaced_nodes().apply(saved_jvms->map()); +#+ map()->replaced_nodes().apply(saved_jvms->map(), new_idx); +# set_jvms(saved_jvms); +# _reexecute_sp = saved_reexecute_sp; +# +#@@ -4949,6 +4951,7 @@ +# Node* dest_offset = argument(3); // type: int +# Node* length = argument(4); // type: int +# +#+ uint new_idx = C->unique(); +# +# // Check for allocation before we add nodes that would confuse +# // tightly_coupled_allocation() +#@@ -5164,7 +5167,7 @@ +# } +# } +# +#- arraycopy_move_allocation_here(alloc, dest, saved_jvms, saved_reexecute_sp); +#+ arraycopy_move_allocation_here(alloc, dest, saved_jvms, saved_reexecute_sp, new_idx); +# +# if (stopped()) { +# return true; +diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/parse1.cpp +--- openjdk/hotspot/src/share/vm/opto/parse1.cpp Wed Feb 15 11:14:45 2017 +0100 ++++ openjdk/hotspot/src/share/vm/opto/parse1.cpp Wed Feb 15 17:26:37 2017 -0800 +@@ -1086,7 +1086,7 @@ + kit.make_dtrace_method_exit(method()); + } + if (_replaced_nodes_for_exceptions) { +- kit.map()->apply_replaced_nodes(); ++ kit.map()->apply_replaced_nodes(_new_idx); + } + // Done with exception-path processing. + ex_map = kit.make_exception_state(ex_oop); +@@ -1107,7 +1107,7 @@ + _exits.add_exception_state(ex_map); + } + } +- _exits.map()->apply_replaced_nodes(); ++ _exits.map()->apply_replaced_nodes(_new_idx); + } + + //-----------------------------create_entry_map------------------------------- +diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/replacednodes.cpp +--- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp Wed Feb 15 11:14:45 2017 +0100 ++++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp Wed Feb 15 17:26:37 2017 -0800 +@@ -92,13 +92,17 @@ + } + + // Perfom node replacement (used when returning to caller) +-void ReplacedNodes::apply(Node* n) { ++void ReplacedNodes::apply(Node* n, uint idx) { + if (is_empty()) { + return; + } + for (int i = 0; i < _replaced_nodes->length(); i++) { + ReplacedNode replaced = _replaced_nodes->at(i); +- n->replace_edge(replaced.initial(), replaced.improved()); ++ // Only apply if improved node was created in a callee to avoid ++ // issues with irreducible loops in the caller ++ if (replaced.improved()->_idx >= idx) { ++ n->replace_edge(replaced.initial(), replaced.improved()); ++ } + } + } + +diff -r ac559f3ccca8 -r 35db0413819a src/share/vm/opto/replacednodes.hpp +--- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp Wed Feb 15 11:14:45 2017 +0100 ++++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp Wed Feb 15 17:26:37 2017 -0800 +@@ -71,7 +71,7 @@ + void record(Node* initial, Node* improved); + void transfer_from(const ReplacedNodes& other, uint idx); + void reset(); +- void apply(Node* n); ++ void apply(Node* n, uint idx); + void merge_with(const ReplacedNodes& other); + bool is_empty() const; + void dump(outputStream *st) const; + diff --git a/generate_source_tarball.sh b/generate_source_tarball.sh index e47b8ca..bc019a1 100755 --- a/generate_source_tarball.sh +++ b/generate_source_tarball.sh @@ -121,7 +121,7 @@ mv -v ecc_impl.h jdk/src/share/native/sun/security/ec/impl echo "Syncing EC list with NSS" if [ "x$PR2126" = "x" ] ; then -# get pr2126.patch (from http://icedtea.classpath.org//hg/icedtea?cmd=changeset;node=8d2c9a898f50) from most correct tag +# get pr2126.patch (from http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=8d2c9a898f50) from most correct tag # Do not push it or publish it (see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2126) wget http://icedtea.classpath.org/hg/icedtea8/raw-file/tip/patches/pr2126.patch patch -Np1 < pr2126.patch diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec index eb09832..afb6f2b 100644 --- a/java-1.8.0-openjdk.spec +++ b/java-1.8.0-openjdk.spec @@ -35,7 +35,7 @@ %endif # on intels, we build shenandoah htspot -%ifarch x86_64 +%ifarch x86_64 %{aarch64} %global use_shenandoah_hotspot 1 %else %global use_shenandoah_hotspot 0 @@ -514,7 +514,6 @@ exit 0 %{_jvmprivdir}/* %{jvmjardir %%1} %dir %{_jvmdir}/%{jredir %%1}/lib/security -%{_jvmdir}/%{jredir %%1}/lib/security/cacerts %config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/US_export_policy.jar %config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/local_policy.jar %config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/java.policy @@ -791,7 +790,7 @@ URL: http://openjdk.java.net/ # aarch64-port now contains integration forest of both aarch64 and normal jdk # Source from upstream OpenJDK8 project. To regenerate, use -# VERSION=aarch64-jdk8u101-b14 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION} +# VERSION=aarch64-jdk8u121-b14 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION} # REPO_ROOT= generate_source_tarball.sh # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} Source0: %{project}-%{repo}-%{revision}.tar.xz @@ -826,8 +825,9 @@ Source20: repackReproduciblePolycies.sh # New versions of config files with aarch64 support. This is not upstream yet. Source100: config.guess Source101: config.sub -# shenandoah hotpost -Source999: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-02-20.tar.xz + +# Shenandoah HotSpot +Source999: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-03-09.tar.xz # RPM/distribution specific patches @@ -866,6 +866,11 @@ Patch509: rh1176206-root.patch Patch523: pr2974-rh1337583.patch # PR3083, RH1346460: Regression in SSL debug output without an ECC provider Patch528: pr3083-rh1346460.patch +# Patches 204 and 205 stop the build adding .gnu_debuglink sections to unstripped files +Patch204: hotspot-remove-debuglink.patch +Patch205: dont-add-unnecessary-debug-links.patch +# Enable debug information for assembly code files +Patch206: hotspot-assembler-debuginfo.patch # Arch-specific upstreamable patches # PR2415: JVM -Xmx requirement is too high on s390 @@ -898,6 +903,10 @@ Patch400: 8154313.patch Patch526: 6260348-pr3066.patch # S8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation Patch532: 8162384-pr3122-rh1358661.patch +# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops" +Patch537: 8174164-pr3334-rh1417266.patch +# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property" +Patch538: 8061305-pr3335-rh1423421.patch # Patches upstream and appearing in 8u131 # 8170888, PR3314, RH1390708: [linux] Experimental support for cgroup memory limits in container (ie Docker) environments @@ -906,16 +915,11 @@ Patch536: 8170888-pr3314-rh1390708.patch # Patches upstream and appearing in 8u152 # 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command Patch535: 8153711-pr3313-rh1284948.patch -Patch537: 1417266.patch -Patch538: 1423421.patch # Patches ineligible for 8u # 8043805: Allow using a system-installed libjpeg Patch201: system-libjpeg.patch -# Pathces 204-206 are serving for better check of debug symbols in native liraries -Patch204: hotspot-remove-debuglink.patch -Patch205: dont-add-unnecessary-debug-links.patch -Patch206: hotspot-assembler-debuginfo.patch +# custom securities Patch207: PR3183.patch # Local fixes @@ -925,6 +929,8 @@ Patch525: pr1834-rh1022017.patch Patch533: rh1367357.patch # Turn on AssumeMP by default on RHEL systems Patch534: always_assumemp.patch +# PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) +Patch539: pr2888.patch # Non-OpenJDK fixes @@ -955,7 +961,13 @@ BuildRequires: nss-devel BuildRequires: pkgconfig BuildRequires: xorg-x11-proto-devel BuildRequires: zip +# Use OpenJDK 7 where available (on RHEL) to avoid +# having to use the rhel-7.x-java-unsafe-candidate hack +%if 0%{?rhel} +BuildRequires: java-1.7.0-openjdk-devel +%else BuildRequires: java-1.8.0-openjdk-devel +%endif # Zero-assembler build requirement. %ifnarch %{jit_arches} BuildRequires: libffi-devel @@ -966,8 +978,6 @@ BuildRequires: gcc >= 4.8.3-8 # Build requirements for SunEC system NSS support BuildRequires: nss-softokn-freebl-devel >= 3.16.1 -# cacerts build requirement. -BuildRequires: openssl %if %{with_systemtap} BuildRequires: systemtap-sdt-devel %endif @@ -1262,6 +1272,7 @@ sh %{SOURCE12} %patch536 %patch537 %patch538 +%patch539 # RHEL-only patches %if 0%{?rhel} @@ -1542,13 +1553,8 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/client/ popd %endif - # Install cacerts symlink. + # Remove empty cacerts database. rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts - pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security - RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \ - %{_jvmdir}/%{jredir $suffix}/lib/security) - ln -sf $RELATIVE/cacerts . - popd # Install extension symlinks. install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix} @@ -1901,7 +1907,14 @@ require "copy_jdk_configs.lua" %changelog * Mon Mar 13 2017 jvanek - 1:1.8.0.121-10.b14 -- rhbz#1423751 - removed -fno-split-loops worakround as building agaiiinst newer GCC7 +- sync from rhel, reordered patches, enabled shenanoah on aarch64 +- Patch OpenJDK to check the system cacerts database directly +- Remove unneeded symlink to the system cacerts database +- Drop outdated openssl dependency from when the RPM built the cacerts database +- udpated to latest stable shenandoah hotspot + +* Mon Mar 13 2017 jvanek - 1:1.8.0.121-10.b14 +- rhbz#1423751 - removed -fno-split-loops worakround as building against newer GCC7 * Tue Feb 28 2017 jvanek - 1:1.8.0.121-9.b14 - updated to latest stable shenandoah hotspot diff --git a/pr2888.patch b/pr2888.patch new file mode 100644 index 0000000..fc8f981 --- /dev/null +++ b/pr2888.patch @@ -0,0 +1,60 @@ +# HG changeset patch +# User andrew +# Date 1459487045 -3600 +# Fri Apr 01 06:04:05 2016 +0100 +# Node ID 3334efeacd8327a14b7d2f392f4546e3c29c594b +# Parent 6b81fd2227d14226f2121f2d51b464536925686e +PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) + +diff --git a/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java b/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java +--- openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java ++++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java +@@ -174,15 +174,20 @@ + storeFile = new File(storeFileName); + fis = getFileInputStream(storeFile); + } else { +- String javaHome = props.get("javaHome"); +- storeFile = new File(javaHome + sep + "lib" + sep +- + "security" + sep + +- "jssecacerts"); ++ /* Check system cacerts DB first; /etc/pki/java/cacerts */ ++ storeFile = new File(sep + "etc" + sep + "pki" + sep ++ + "java" + sep + "cacerts"); + if ((fis = getFileInputStream(storeFile)) == null) { ++ String javaHome = props.get("javaHome"); + storeFile = new File(javaHome + sep + "lib" + sep +- + "security" + sep + +- "cacerts"); +- fis = getFileInputStream(storeFile); ++ + "security" + sep + ++ "jssecacerts"); ++ if ((fis = getFileInputStream(storeFile)) == null) { ++ storeFile = new File(javaHome + sep + "lib" + sep ++ + "security" + sep + ++ "cacerts"); ++ fis = getFileInputStream(storeFile); ++ } + } + } + +diff --git a/src/share/classes/sun/security/tools/KeyStoreUtil.java b/src/share/classes/sun/security/tools/KeyStoreUtil.java +--- openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java ++++ openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java +@@ -87,9 +87,14 @@ + throws Exception + { + String sep = File.separator; +- File file = new File(System.getProperty("java.home") + sep +- + "lib" + sep + "security" + sep +- + "cacerts"); ++ /* Check system cacerts DB first; /etc/pki/java/cacerts */ ++ File file = new File(sep + "etc" + sep + "pki" + sep ++ + "java" + sep + "cacerts"); ++ if (!file.exists()) { ++ file = new File(System.getProperty("java.home") + sep ++ + "lib" + sep + "security" + sep ++ + "cacerts"); ++ } + if (!file.exists()) { + return null; + } diff --git a/sources b/sources index a10e03a..83169bd 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (systemtap-tapset-3.1.0.tar.xz) = e3558dc9d56dff5125a869807135e84ca73a2640d8d8fff2f45dc0dd7d153b81b48c08480e09a75667eba62362f74091465fac622aa0d9b104bfb18b4eba80e1 -SHA512 (aarch64-port-jdk8u-aarch64-jdk8u121-b14.tar.xz) = 2fbda6c3b0b4269d75e0c79db55b851f616d7ba07614cfa60e85f17d3503cc8765083f5ff6e2657e9c3b08055169130dc6419bcad312b98d18829e147645d516 -SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-02-20.tar.xz) = 850e883281b4695bdb8728fba5bb96753cb740efa3bac760ca3b9a036c0268541aa3e8c1366f6add01735de8fbff1d3809452cf0731a8f6b99c07c5a9f566487 +SHA512 (aarch64-port-jdk8u-aarch64-jdk8u121-b14.tar.xz) = 9c97b5a79c5af698e3d12d69c89ae761b2ef5db6f6ea4ac94504f4ab492eb0b233b874e0a829fb7dbbe44064b49b269a6b4fffed826ada9466df77d196d16994 +SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-03-09.tar.xz) = 0e544ffee3d9968c8e77e1a48a136e5de7defa5fe6be0ab60082f9674a050690a1a70b9c2b0c05b3e70787c4e06f30dce45935c000245ba20ec5f97d9fb1563c diff --git a/update_package.sh b/update_package.sh index e2d9899..71803c7 100755 --- a/update_package.sh +++ b/update_package.sh @@ -109,7 +109,7 @@ if [ "x$VERSION" = "xtip" ] ; then VERSION="tip" else #hardcoding version for anything else except tip - VERSION="aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-02-20" + VERSION="aarch64-shenandoah-jdk8u121-b14-shenandoah-merge-2017-03-09" fi MAIN_REPO_NAME=$REPO_NAME REPO_NAME=jdk8u-shenandoah