From 93b65a682502b99e0debb751b9bb7242b5758d98 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Tue, 6 Jun 2017 15:11:19 +0200 Subject: [PATCH] Updated rh1448880 patch, enabled commented out system nss --- 8175813-pr3394-rh1448880.patch | 282 ++++++++++++++++++++++++++++++ 8181055-pr3394-rh1448880.patch | 115 ++++++++++++ enableCommentedOutSystemNss.patch | 11 ++ java-1.8.0-openjdk.spec | 31 +++- update_package.sh | 2 +- 5 files changed, 435 insertions(+), 6 deletions(-) create mode 100644 8175813-pr3394-rh1448880.patch create mode 100644 8181055-pr3394-rh1448880.patch create mode 100644 enableCommentedOutSystemNss.patch diff --git a/8175813-pr3394-rh1448880.patch b/8175813-pr3394-rh1448880.patch new file mode 100644 index 0000000..6baf79c --- /dev/null +++ b/8175813-pr3394-rh1448880.patch @@ -0,0 +1,282 @@ +# HG changeset patch +# User gromero +# Date 1495057954 14400 +# Wed May 17 17:52:34 2017 -0400 +# Node ID 74c81011375b5f432df155dcd7b3c9a668b45740 +# Parent 4d9931ebf8617b1b06adbc1beee6ed1b58661a8b +8175813: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used + +diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp +@@ -2736,8 +2736,9 @@ + bool os::numa_topology_changed() { return false; } + + size_t os::numa_get_groups_num() { +- int max_node = Linux::numa_max_node(); +- return max_node > 0 ? max_node + 1 : 1; ++ // Return just the number of nodes in which it's possible to allocate memory ++ // (in numa terminology, configured nodes). ++ return Linux::numa_num_configured_nodes(); + } + + int os::numa_get_group_id() { +@@ -2751,11 +2752,33 @@ + return 0; + } + ++int os::Linux::get_existing_num_nodes() { ++ size_t node; ++ size_t highest_node_number = Linux::numa_max_node(); ++ int num_nodes = 0; ++ ++ // Get the total number of nodes in the system including nodes without memory. ++ for (node = 0; node <= highest_node_number; node++) { ++ if (isnode_in_existing_nodes(node)) { ++ num_nodes++; ++ } ++ } ++ return num_nodes; ++} ++ + size_t os::numa_get_leaf_groups(int *ids, size_t size) { +- for (size_t i = 0; i < size; i++) { +- ids[i] = i; +- } +- return size; ++ size_t highest_node_number = Linux::numa_max_node(); ++ size_t i = 0; ++ ++ // Map all node ids in which is possible to allocate memory. Also nodes are ++ // not always consecutively available, i.e. available from 0 to the highest ++ // node number. ++ for (size_t node = 0; node <= highest_node_number; node++) { ++ if (Linux::isnode_in_configured_nodes(node)) { ++ ids[i++] = node; ++ } ++ } ++ return i; + } + + bool os::get_page_info(char *start, page_info* info) { +@@ -2825,18 +2848,28 @@ + libnuma_dlsym(handle, "numa_node_to_cpus"))); + set_numa_max_node(CAST_TO_FN_PTR(numa_max_node_func_t, + libnuma_dlsym(handle, "numa_max_node"))); ++ set_numa_num_configured_nodes(CAST_TO_FN_PTR(numa_num_configured_nodes_func_t, ++ libnuma_dlsym(handle, "numa_num_configured_nodes"))); + set_numa_available(CAST_TO_FN_PTR(numa_available_func_t, + libnuma_dlsym(handle, "numa_available"))); + set_numa_tonode_memory(CAST_TO_FN_PTR(numa_tonode_memory_func_t, + libnuma_dlsym(handle, "numa_tonode_memory"))); + set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t, +- libnuma_dlsym(handle, "numa_interleave_memory"))); ++ libnuma_dlsym(handle, "numa_interleave_memory"))); + set_numa_set_bind_policy(CAST_TO_FN_PTR(numa_set_bind_policy_func_t, +- libnuma_dlsym(handle, "numa_set_bind_policy"))); +- ++ libnuma_dlsym(handle, "numa_set_bind_policy"))); ++ set_numa_bitmask_isbitset(CAST_TO_FN_PTR(numa_bitmask_isbitset_func_t, ++ libnuma_dlsym(handle, "numa_bitmask_isbitset"))); ++ set_numa_distance(CAST_TO_FN_PTR(numa_distance_func_t, ++ libnuma_dlsym(handle, "numa_distance"))); + + if (numa_available() != -1) { + set_numa_all_nodes((unsigned long*)libnuma_dlsym(handle, "numa_all_nodes")); ++ set_numa_all_nodes_ptr((struct bitmask **)libnuma_dlsym(handle, "numa_all_nodes_ptr")); ++ set_numa_nodes_ptr((struct bitmask **)libnuma_dlsym(handle, "numa_nodes_ptr")); ++ // Create an index -> node mapping, since nodes are not always consecutive ++ _nindex_to_node = new (ResourceObj::C_HEAP, mtInternal) GrowableArray(0, true); ++ rebuild_nindex_to_node_map(); + // Create a cpu -> node mapping + _cpu_to_node = new (ResourceObj::C_HEAP, mtInternal) GrowableArray(0, true); + rebuild_cpu_to_node_map(); +@@ -2847,6 +2880,17 @@ + return false; + } + ++void os::Linux::rebuild_nindex_to_node_map() { ++ int highest_node_number = Linux::numa_max_node(); ++ ++ nindex_to_node()->clear(); ++ for (int node = 0; node <= highest_node_number; node++) { ++ if (Linux::isnode_in_existing_nodes(node)) { ++ nindex_to_node()->append(node); ++ } ++ } ++} ++ + // rebuild_cpu_to_node_map() constructs a table mapping cpud id to node id. + // The table is later used in get_node_by_cpu(). + void os::Linux::rebuild_cpu_to_node_map() { +@@ -2866,16 +2910,46 @@ + + cpu_to_node()->clear(); + cpu_to_node()->at_grow(cpu_num - 1); +- size_t node_num = numa_get_groups_num(); +- ++ ++ size_t node_num = get_existing_num_nodes(); ++ ++ int distance = 0; ++ int closest_distance = INT_MAX; ++ int closest_node = 0; + unsigned long *cpu_map = NEW_C_HEAP_ARRAY(unsigned long, cpu_map_size, mtInternal); + for (size_t i = 0; i < node_num; i++) { +- if (numa_node_to_cpus(i, cpu_map, cpu_map_size * sizeof(unsigned long)) != -1) { ++ // Check if node is configured (not a memory-less node). If it is not, find ++ // the closest configured node. ++ if (!isnode_in_configured_nodes(nindex_to_node()->at(i))) { ++ closest_distance = INT_MAX; ++ // Check distance from all remaining nodes in the system. Ignore distance ++ // from itself and from another non-configured node. ++ for (size_t m = 0; m < node_num; m++) { ++ if (m != i && isnode_in_configured_nodes(nindex_to_node()->at(m))) { ++ distance = numa_distance(nindex_to_node()->at(i), nindex_to_node()->at(m)); ++ // If a closest node is found, update. There is always at least one ++ // configured node in the system so there is always at least one node ++ // close. ++ if (distance != 0 && distance < closest_distance) { ++ closest_distance = distance; ++ closest_node = nindex_to_node()->at(m); ++ } ++ } ++ } ++ } else { ++ // Current node is already a configured node. ++ closest_node = nindex_to_node()->at(i); ++ } ++ ++ // Get cpus from the original node and map them to the closest node. If node ++ // is a configured node (not a memory-less node), then original node and ++ // closest node are the same. ++ if (numa_node_to_cpus(nindex_to_node()->at(i), cpu_map, cpu_map_size * sizeof(unsigned long)) != -1) { + for (size_t j = 0; j < cpu_map_valid_size; j++) { + if (cpu_map[j] != 0) { + for (size_t k = 0; k < BitsPerCLong; k++) { + if (cpu_map[j] & (1UL << k)) { +- cpu_to_node()->at_put(j * BitsPerCLong + k, i); ++ cpu_to_node()->at_put(j * BitsPerCLong + k, closest_node); + } + } + } +@@ -2893,14 +2967,20 @@ + } + + GrowableArray* os::Linux::_cpu_to_node; ++GrowableArray* os::Linux::_nindex_to_node; + os::Linux::sched_getcpu_func_t os::Linux::_sched_getcpu; + os::Linux::numa_node_to_cpus_func_t os::Linux::_numa_node_to_cpus; + os::Linux::numa_max_node_func_t os::Linux::_numa_max_node; ++os::Linux::numa_num_configured_nodes_func_t os::Linux::_numa_num_configured_nodes; + os::Linux::numa_available_func_t os::Linux::_numa_available; + os::Linux::numa_tonode_memory_func_t os::Linux::_numa_tonode_memory; + os::Linux::numa_interleave_memory_func_t os::Linux::_numa_interleave_memory; + os::Linux::numa_set_bind_policy_func_t os::Linux::_numa_set_bind_policy; ++os::Linux::numa_bitmask_isbitset_func_t os::Linux::_numa_bitmask_isbitset; ++os::Linux::numa_distance_func_t os::Linux::_numa_distance; + unsigned long* os::Linux::_numa_all_nodes; ++struct bitmask* os::Linux::_numa_all_nodes_ptr; ++struct bitmask* os::Linux::_numa_nodes_ptr; + + bool os::pd_uncommit_memory(char* addr, size_t size) { + uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE, +diff --git a/src/os/linux/vm/os_linux.hpp b/src/os/linux/vm/os_linux.hpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp ++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp +@@ -67,6 +67,7 @@ + static bool _supports_fast_thread_cpu_time; + + static GrowableArray* _cpu_to_node; ++ static GrowableArray* _nindex_to_node; + + protected: + +@@ -94,7 +95,9 @@ + static void set_is_floating_stack() { _is_floating_stack = true; } + + static void rebuild_cpu_to_node_map(); ++ static void rebuild_nindex_to_node_map(); + static GrowableArray* cpu_to_node() { return _cpu_to_node; } ++ static GrowableArray* nindex_to_node() { return _nindex_to_node; } + + static size_t find_large_page_size(); + static size_t setup_large_page_size(); +@@ -243,28 +246,41 @@ + typedef int (*sched_getcpu_func_t)(void); + typedef int (*numa_node_to_cpus_func_t)(int node, unsigned long *buffer, int bufferlen); + typedef int (*numa_max_node_func_t)(void); ++ typedef int (*numa_num_configured_nodes_func_t)(void); + typedef int (*numa_available_func_t)(void); + typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node); + typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask); + typedef void (*numa_set_bind_policy_func_t)(int policy); ++ typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n); ++ typedef int (*numa_distance_func_t)(int node1, int node2); + + static sched_getcpu_func_t _sched_getcpu; + static numa_node_to_cpus_func_t _numa_node_to_cpus; + static numa_max_node_func_t _numa_max_node; ++ static numa_num_configured_nodes_func_t _numa_num_configured_nodes; + static numa_available_func_t _numa_available; + static numa_tonode_memory_func_t _numa_tonode_memory; + static numa_interleave_memory_func_t _numa_interleave_memory; + static numa_set_bind_policy_func_t _numa_set_bind_policy; ++ static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset; ++ static numa_distance_func_t _numa_distance; + static unsigned long* _numa_all_nodes; ++ static struct bitmask* _numa_all_nodes_ptr; ++ static struct bitmask* _numa_nodes_ptr; + + static void set_sched_getcpu(sched_getcpu_func_t func) { _sched_getcpu = func; } + static void set_numa_node_to_cpus(numa_node_to_cpus_func_t func) { _numa_node_to_cpus = func; } + static void set_numa_max_node(numa_max_node_func_t func) { _numa_max_node = func; } ++ static void set_numa_num_configured_nodes(numa_num_configured_nodes_func_t func) { _numa_num_configured_nodes = func; } + static void set_numa_available(numa_available_func_t func) { _numa_available = func; } + static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; } + static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; } + static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; } ++ static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; } ++ static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; } + static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; } ++ static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = *ptr; } ++ static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = *ptr; } + static int sched_getcpu_syscall(void); + public: + static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; } +@@ -272,6 +288,9 @@ + return _numa_node_to_cpus != NULL ? _numa_node_to_cpus(node, buffer, bufferlen) : -1; + } + static int numa_max_node() { return _numa_max_node != NULL ? _numa_max_node() : -1; } ++ static int numa_num_configured_nodes() { ++ return _numa_num_configured_nodes != NULL ? _numa_num_configured_nodes() : -1; ++ } + static int numa_available() { return _numa_available != NULL ? _numa_available() : -1; } + static int numa_tonode_memory(void *start, size_t size, int node) { + return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1; +@@ -286,7 +305,25 @@ + _numa_set_bind_policy(policy); + } + } ++ static int numa_distance(int node1, int node2) { ++ return _numa_distance != NULL ? _numa_distance(node1, node2) : -1; ++ } + static int get_node_by_cpu(int cpu_id); ++ static int get_existing_num_nodes(); ++ // Check if numa node is configured (non-zero memory node). ++ static bool isnode_in_configured_nodes(unsigned int n) { ++ if (_numa_bitmask_isbitset != NULL && _numa_all_nodes_ptr != NULL) { ++ return _numa_bitmask_isbitset(_numa_all_nodes_ptr, n); ++ } else ++ return 0; ++ } ++ // Check if numa node exists in the system (including zero memory nodes). ++ static bool isnode_in_existing_nodes(unsigned int n) { ++ if (_numa_bitmask_isbitset != NULL && _numa_nodes_ptr != NULL) { ++ return _numa_bitmask_isbitset(_numa_nodes_ptr, n); ++ } else ++ return 0; ++ } + }; + + diff --git a/8181055-pr3394-rh1448880.patch b/8181055-pr3394-rh1448880.patch new file mode 100644 index 0000000..593159d --- /dev/null +++ b/8181055-pr3394-rh1448880.patch @@ -0,0 +1,115 @@ +# HG changeset patch +# User zgu +# Date 1496236768 14400 +# Wed May 31 09:19:28 2017 -0400 +# Node ID 8330ff7914ec54c46fd19300221f72d774423405 +# Parent 55a34e4962e10c822affe8f89273a87e84cade92 +8181055: PPC64: "mbind: Invalid argument" still seen after 8175813 +Summary: Use numa_interleave_memory v2 api when available +Reviewed-by: dholmes, shade + +diff -r 74c81011375b src/os/linux/vm/os_linux.cpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed May 17 17:52:34 2017 -0400 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed May 31 12:27:00 2017 -0400 +@@ -2819,11 +2819,8 @@ + extern "C" JNIEXPORT void numa_error(char *where) { } + extern "C" JNIEXPORT int fork1() { return fork(); } + +- +-// If we are running with libnuma version > 2, then we should +-// be trying to use symbols with versions 1.1 +-// If we are running with earlier version, which did not have symbol versions, +-// we should use the base version. ++// Handle request to load libnuma symbol version 1.1 (API v1). If it fails ++// load symbol from base version instead. + void* os::Linux::libnuma_dlsym(void* handle, const char *name) { + void *f = dlvsym(handle, name, "libnuma_1.1"); + if (f == NULL) { +@@ -2832,6 +2829,12 @@ + return f; + } + ++// Handle request to load libnuma symbol version 1.2 (API v2) only. ++// Return NULL if the symbol is not defined in this particular version. ++void* os::Linux::libnuma_v2_dlsym(void* handle, const char* name) { ++ return dlvsym(handle, name, "libnuma_1.2"); ++} ++ + bool os::Linux::libnuma_init() { + // sched_getcpu() should be in libc. + set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t, +@@ -2856,6 +2859,8 @@ + libnuma_dlsym(handle, "numa_tonode_memory"))); + set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t, + libnuma_dlsym(handle, "numa_interleave_memory"))); ++ set_numa_interleave_memory_v2(CAST_TO_FN_PTR(numa_interleave_memory_v2_func_t, ++ libnuma_v2_dlsym(handle, "numa_interleave_memory"))); + set_numa_set_bind_policy(CAST_TO_FN_PTR(numa_set_bind_policy_func_t, + libnuma_dlsym(handle, "numa_set_bind_policy"))); + set_numa_bitmask_isbitset(CAST_TO_FN_PTR(numa_bitmask_isbitset_func_t, +@@ -2975,6 +2980,7 @@ + os::Linux::numa_available_func_t os::Linux::_numa_available; + os::Linux::numa_tonode_memory_func_t os::Linux::_numa_tonode_memory; + os::Linux::numa_interleave_memory_func_t os::Linux::_numa_interleave_memory; ++os::Linux::numa_interleave_memory_v2_func_t os::Linux::_numa_interleave_memory_v2; + os::Linux::numa_set_bind_policy_func_t os::Linux::_numa_set_bind_policy; + os::Linux::numa_bitmask_isbitset_func_t os::Linux::_numa_bitmask_isbitset; + os::Linux::numa_distance_func_t os::Linux::_numa_distance; +diff -r 74c81011375b src/os/linux/vm/os_linux.hpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed May 17 17:52:34 2017 -0400 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed May 31 12:27:00 2017 -0400 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -190,6 +190,9 @@ + static void libpthread_init(); + static bool libnuma_init(); + static void* libnuma_dlsym(void* handle, const char* name); ++ // libnuma v2 (libnuma_1.2) symbols ++ static void* libnuma_v2_dlsym(void* handle, const char* name); ++ + // Minimum stack size a thread can be created with (allowing + // the VM to completely create the thread and enter user code) + static size_t min_stack_allowed; +@@ -250,6 +253,8 @@ + typedef int (*numa_available_func_t)(void); + typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node); + typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask); ++ typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask); ++ + typedef void (*numa_set_bind_policy_func_t)(int policy); + typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n); + typedef int (*numa_distance_func_t)(int node1, int node2); +@@ -261,6 +266,7 @@ + static numa_available_func_t _numa_available; + static numa_tonode_memory_func_t _numa_tonode_memory; + static numa_interleave_memory_func_t _numa_interleave_memory; ++ static numa_interleave_memory_v2_func_t _numa_interleave_memory_v2; + static numa_set_bind_policy_func_t _numa_set_bind_policy; + static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset; + static numa_distance_func_t _numa_distance; +@@ -275,6 +281,7 @@ + static void set_numa_available(numa_available_func_t func) { _numa_available = func; } + static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; } + static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; } ++ static void set_numa_interleave_memory_v2(numa_interleave_memory_v2_func_t func) { _numa_interleave_memory_v2 = func; } + static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; } + static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; } + static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; } +@@ -296,7 +303,10 @@ + return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1; + } + static void numa_interleave_memory(void *start, size_t size) { +- if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) { ++ // Use v2 api if available ++ if (_numa_interleave_memory_v2 != NULL && _numa_all_nodes_ptr != NULL) { ++ _numa_interleave_memory_v2(start, size, _numa_all_nodes_ptr); ++ } else if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) { + _numa_interleave_memory(start, size, _numa_all_nodes); + } + } + diff --git a/enableCommentedOutSystemNss.patch b/enableCommentedOutSystemNss.patch new file mode 100644 index 0000000..febd87e --- /dev/null +++ b/enableCommentedOutSystemNss.patch @@ -0,0 +1,11 @@ +diff -r 5b86f66575b7 src/share/lib/security/java.security-linux +--- openjdk/jdk/src/share/lib/security/java.security-linux Tue May 16 13:29:05 2017 -0700 ++++ openjdk/jdk/src/share/lib/security/java.security-linux Tue Jun 06 14:05:12 2017 +0200 +@@ -74,6 +74,7 @@ + security.provider.7=com.sun.security.sasl.Provider + security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI + security.provider.9=sun.security.smartcardio.SunPCSC ++#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg + + # + # Sun Provider SecureRandom seed source. diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec index 197b550..6e46d7e 100644 --- a/java-1.8.0-openjdk.spec +++ b/java-1.8.0-openjdk.spec @@ -548,6 +548,7 @@ 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 @@ -813,7 +814,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1 Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever} -Release: 2.%{buildver}%{?dist} +Release: 3.%{buildver}%{?dist} # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a @@ -838,6 +839,9 @@ URL: http://openjdk.java.net/ # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} Source0: %{project}-%{repo}-%{revision}.tar.xz +# Shenandoah HotSpot +Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz + # Custom README for -src subpackage Source2: README.src @@ -869,9 +873,6 @@ Source20: repackReproduciblePolycies.sh Source100: config.guess Source101: config.sub -# Shenandoah HotSpot -Source999: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20.tar.xz - # RPM/distribution specific patches # Accessibility patches @@ -946,6 +947,10 @@ Patch400: 8154313.patch Patch526: 6260348-pr3066.patch # 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property" Patch538: 8061305-pr3335-rh1423421.patch +# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used +Patch550: 8175813-pr3394-rh1448880.patch +# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813 +Patch551: 8181055-pr3394-rh1448880.patch # Patches upstream and appearing in 8u131 # 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command @@ -988,6 +993,7 @@ Patch534: always_assumemp.patch Patch539: pr2888.patch # Non-OpenJDK fixes +Patch1000: enableCommentedOutSystemNss.patch BuildRequires: autoconf BuildRequires: automake @@ -1289,7 +1295,7 @@ ln -s openjdk jdk8 # On Shenandoah-supported architectures, replace HotSpot with # the Shenandoah version pushd openjdk -tar -xf %{SOURCE999} +tar -xf %{SOURCE1} rm -rf hotspot mv openjdk/hotspot . rm -rf openjdk @@ -1369,6 +1375,8 @@ sh %{SOURCE12} %patch547 %patch548 %patch549 +%patch550 +%patch551 # RPM-only fixes %patch525 @@ -1380,6 +1388,8 @@ sh %{SOURCE12} %patch534 %endif +%patch1000 + # Extract systemtap tapsets %if %{with_systemtap} tar -x -I xz -f %{SOURCE8} @@ -1660,6 +1670,12 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/client/ # Remove empty cacerts database. rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts + # Install cacerts symlink needed by some apps which hardcode the path. + 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} @@ -2061,6 +2077,11 @@ require "copy_jdk_configs.lua" %endif %changelog +* Tue Jun 06 2017 Jiri Vanek - 1:1.8.0.131-3.b12 +- source999 moved to source1 +- added two pathces 8181055-pr3394-rh1448880.patch and 8175813/PR3394/RH1448880 +- enabled (commented out) system NSS via patch1000, enableCommentedOutSystemNss.patch + * Tue May 09 2017 Jiri Vanek - 1:1.8.0.131-1.b12 - added javafx binding subpackages diff --git a/update_package.sh b/update_package.sh index b66e4d3..2c51560 100755 --- a/update_package.sh +++ b/update_package.sh @@ -125,7 +125,7 @@ else echo "${FILENAME_SH} already exists, using" fi -sed -i "s/^Source999:.*/Source999: ${FILENAME_SH}/" $SPEC +sed -i "s/^Source1:.*/Source1: ${FILENAME_SH}/" $SPEC git --no-pager diff $SPEC # find the most similar sources name and replace it by newly generated one.