Updated rh1448880 patch, enabled commented out system nss

This commit is contained in:
Jiri Vanek 2017-06-06 15:11:19 +02:00
parent 562d2b38dd
commit 93b65a6825
5 changed files with 435 additions and 6 deletions

View File

@ -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<int>(0, true);
+ rebuild_nindex_to_node_map();
// Create a cpu -> node mapping
_cpu_to_node = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<int>(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<int>* os::Linux::_cpu_to_node;
+GrowableArray<int>* 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<int>* _cpu_to_node;
+ static GrowableArray<int>* _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<int>* cpu_to_node() { return _cpu_to_node; }
+ static GrowableArray<int>* 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;
+ }
};

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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 <jvanek@redhat.com> - 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 <jvanek@redhat.com> - 1:1.8.0.131-1.b12
- added javafx binding subpackages

View File

@ -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.