The package rpms/java-1.8.0-openjdk.git has added or updated architecture specific content
in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/java-1.8.0-openjdk.git/commit/?id....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit e9184fb5b7f70d4dcec5b732d07a2e45d1ea00e3
Author: Jiri Vanek <jvanek(a)redhat.com>
Date: Tue Jun 6 15:16:27 2017 +0200
Added openjfx binding, updated rh1448880 patch, enabled commented out system nss
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<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;
++ }
+ };
+
+
diff --git a/8175813-rh1448880.patch b/8175813-rh1448880.patch
deleted file mode 100644
index 6baf79c..0000000
--- a/8175813-rh1448880.patch
+++ /dev/null
@@ -1,282 +0,0 @@
-# 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;
-+ }
- };
-
-
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 32f1921..6e46d7e 100644
--- a/java-1.8.0-openjdk.spec
+++ b/java-1.8.0-openjdk.spec
@@ -172,6 +172,26 @@
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+%global with_openjfx_binding 1
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_sdk_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude
cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so
libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so
ibglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -528,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
@@ -793,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
@@ -818,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
@@ -849,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
@@ -926,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
@@ -950,7 +975,6 @@ Patch537: 8174164-pr3334-rh1417266.patch
Patch548: 8174729-pr3336-rh1420518.patch
# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
Patch549: 8175097-pr3334-rh1417266.patch
-Patch550: 8175813-rh1448880.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -969,6 +993,7 @@ Patch534: always_assumemp.patch
Patch539: pr2888.patch
# Non-OpenJDK fixes
+Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
BuildRequires: automake
@@ -1207,6 +1232,39 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX
integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks
finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing
Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug
buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds
symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug
buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1237,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
@@ -1318,6 +1376,7 @@ sh %{SOURCE12}
%patch548
%patch549
%patch550
+%patch551
# RPM-only fixes
%patch525
@@ -1329,6 +1388,8 @@ sh %{SOURCE12}
%patch534
%endif
+%patch1000
+
# Extract systemtap tapsets
%if %{with_systemtap}
tar -x -I xz -f %{SOURCE8}
@@ -1609,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}
@@ -1773,6 +1840,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
#
https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir
$suffix}/lib/security/java.security
@@ -1931,6 +2036,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1957,12 +2068,22 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
%endif
%changelog
-* Fri May 19 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-2.b12
-- added and aplied patch550 8175813-rh1448880.patch
-- Resolves: rhbz#1448880
+* Tue Jun 06 2017 Jiri Vanek <jvanek(a)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(a)redhat.com> - 1:1.8.0.131-1.b12
+- added javafx binding subpackages
* Thu Apr 20 2017 Jiri Vanek <jvanek(a)redhat.com> - 1:1.8.0.131-1.b12
- updated to aarch64-jdk8u131-b12 (from aarch64-port/jdk8u)
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.