Architecture specific change in rpms/xtl.git
by githook-noreply@fedoraproject.org
The package rpms/xtl.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/xtl.git/commit/?id=6241a87eac3f8f....
Change:
-%ifarch ppc64 s390x
Thanks.
Full change:
============
commit 6241a87eac3f8f5419c68b3cf397d0fa677d73d6
Author: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed Sep 5 06:22:37 2018 -0400
Update to latest version.
diff --git a/.gitignore b/.gitignore
index 3966f97..c9a5e5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/xtl-0.4.7.tar.gz
/xtl-0.4.13.tar.gz
/xtl-0.4.14.tar.gz
+/xtl-0.4.15.tar.gz
diff --git a/0001-Fix-complex-test.patch b/0001-Fix-complex-test.patch
index 759501f..b87df5a 100644
--- a/0001-Fix-complex-test.patch
+++ b/0001-Fix-complex-test.patch
@@ -1,7 +1,7 @@
-From bb3fdf2fb8468ffc1e256491b7bbd029c4880978 Mon Sep 17 00:00:00 2001
+From 517cd4f961c155284916fe393445adbe0e137d2b Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed, 8 Aug 2018 00:03:32 -0400
-Subject: [PATCH] Fix complex test.
+Subject: [PATCH 1/2] Fix complex test.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
---
diff --git a/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
new file mode 100644
index 0000000..831594d
--- /dev/null
+++ b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
@@ -0,0 +1,118 @@
+From 081bbc82d3c76598b8496806bb5a8b95403fc14e Mon Sep 17 00:00:00 2001
+From: Benjamin Isbarn <babene88(a)gmail.com>
+Date: Sat, 25 Aug 2018 12:05:41 +0200
+Subject: [PATCH 2/2] Made nlohmann_json optional in the tests, exported c++14
+ requirement (#102)
+
+Made nlohmann_json optional in the tests, exported xtl compile features c++14.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
+---
+ CMakeLists.txt | 3 +++
+ test/CMakeLists.txt | 24 ++++++++++++++++--------
+ test/test_xoptional.cpp | 6 ++++++
+ 3 files changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c20ea3a..be16680 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -61,6 +61,9 @@ add_library(xtl INTERFACE)
+ target_include_directories(xtl INTERFACE $<BUILD_INTERFACE:${XTL_INCLUDE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
++# xtl requires C++14 support!
++target_compile_features(xtl INTERFACE cxx_std_14)
++
+
+ OPTION(BUILD_TESTS "xtl test suite" OFF)
+ OPTION(DOWNLOAD_GTEST "build gtest from downloaded sources" OFF)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 8c91616..0f7d400 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -12,6 +12,7 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
+ project(xtl-test)
+
+ find_package(xtl REQUIRED CONFIG)
++ find_package(nlohmann_json QUIET CONFIG)
+ set(XTL_INCLUDE_DIR ${xtl_INCLUDE_DIRS})
+ endif ()
+
+@@ -22,6 +23,10 @@ include(CheckCXXCompilerFlag)
+
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE)
+
++if(nlohmann_json_FOUND)
++ add_definitions(-DHAVE_NLOHMANN_JSON)
++endif()
++
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion")
+@@ -30,13 +35,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
+ if (HAS_MARCH_NATIVE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
+ endif()
+-
+- CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
+- if (HAS_CPP14_FLAG)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+- else()
+- message(FATAL_ERROR "Unsupported compiler -- xtl requires C++14 support!")
+- endif()
+ endif()
+
+ if(MSVC)
+@@ -111,7 +109,17 @@ add_executable(${XTL_TARGET} ${XTL_TESTS} ${XTL_HEADERS})
+ if(DOWNLOAD_GTEST OR GTEST_SRC_DIR)
+ add_dependencies(${XTL_TARGET} gtest_main)
+ endif()
+-target_link_libraries(${XTL_TARGET} xtl nlohmann_json ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++target_link_libraries(${XTL_TARGET} xtl ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++
++if(nlohmann_json_FOUND)
++ # Version up to 3.1.2 export the target `nlohmann_json`
++ if(TARGET nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json)
++ # Newer versions export the namespaced target `nlohmann_json::nlohmann_json`
++ elseif(TARGET nlohmann_json::nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json::nlohmann_json)
++ endif()
++endif()
+
+ add_custom_target(xtest COMMAND test_xtl DEPENDS ${XTL_TARGET})
+
+diff --git a/test/test_xoptional.cpp b/test/test_xoptional.cpp
+index 8100453..2ac1857 100644
+--- a/test/test_xoptional.cpp
++++ b/test/test_xoptional.cpp
+@@ -15,7 +15,11 @@
+
+ #include "xtl/xany.hpp"
+ #include "xtl/xoptional.hpp"
++
++#ifdef HAVE_NLOHMANN_JSON
+ #include "xtl/xjson.hpp"
++#endif
++
+ #include "xtl/xoptional_sequence.hpp"
+
+ namespace xtl
+@@ -276,6 +280,7 @@ namespace xtl
+ EXPECT_EQ(res.has_value(), o.has_value());
+ }
+
++#ifdef HAVE_NLOHMANN_JSON
+ TEST(xoptional, json)
+ {
+ xoptional<double> m1 = missing<double>();
+@@ -287,4 +292,5 @@ namespace xtl
+ nlohmann::json j2 = m2;
+ EXPECT_EQ(j2.get<xoptional<double>>(), 3.0);
+ }
++#endif
+ }
+--
+2.17.1
+
diff --git a/sources b/sources
index 6093444..da9c651 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (xtl-0.4.14.tar.gz) = 33a012240a83d9ab53316e3287983fe03eeebf44372008a59b8500df7cb1dcb26d9c34466dc8c3767029661aa7d3a8f1cfc9df3eedc2a17268985b0e2a1dff87
+SHA512 (xtl-0.4.15.tar.gz) = 821c1b98f9aa83f93b102948af2e6e88aad37fd12a13a9f4c8a3f3f5806c9edf19bf2a595e47b3f8293e7bd5b681ab4965f8ad3675c4f344bbfff19b219f22ee
diff --git a/xtl.spec b/xtl.spec
index bb42872..827d138 100644
--- a/xtl.spec
+++ b/xtl.spec
@@ -2,14 +2,16 @@
%global debug_package %{nil}
Name: xtl
-Version: 0.4.14
-Release: 2%{?dist}
+Version: 0.4.15
+Release: 1%{?dist}
License: BSD
Summary: QuantStack tools library
Url: https://github.com/QuantStack/xtl
Source0: https://github.com/QuantStack/%{name}/archive/%{version}/%{name}-%{versio...
# https://github.com/QuantStack/xtl/issues/97
Patch0001: 0001-Fix-complex-test.patch
+# https://github.com/QuantStack/xtl/pull/102
+Patch0002: 0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
BuildRequires: binutils
BuildRequires: cmake
@@ -61,10 +63,6 @@ popd
%check
-# https://github.com/QuantStack/xtl/issues/72
-%ifarch ppc64 s390x
-export GTEST_FILTER=-hash.verification
-%endif
make xtest
@@ -80,6 +78,9 @@ make xtest
%changelog
+* Wed Sep 05 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.15-1
+- Update to latest version
+
* Thu Aug 16 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.14-2
- rebuilt
commit 01d1f67c030e8698cba2331511e653e7e8a782bc
Author: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Thu Aug 16 04:33:35 2018 -0400
Rebuild to fix build tagging.
diff --git a/xtl.spec b/xtl.spec
index 6a00cd1..bb42872 100644
--- a/xtl.spec
+++ b/xtl.spec
@@ -3,7 +3,7 @@
Name: xtl
Version: 0.4.14
-Release: 1%{?dist}
+Release: 2%{?dist}
License: BSD
Summary: QuantStack tools library
Url: https://github.com/QuantStack/xtl
@@ -80,6 +80,9 @@ make xtest
%changelog
+* Thu Aug 16 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.14-2
+- rebuilt
+
* Tue Aug 14 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.14-1
- Update to latest version
5 years, 8 months
Architecture specific change in rpms/xtl.git
by githook-noreply@fedoraproject.org
The package rpms/xtl.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/xtl.git/commit/?id=6241a87eac3f8f....
Change:
-%ifarch ppc64 s390x
Thanks.
Full change:
============
commit 6241a87eac3f8f5419c68b3cf397d0fa677d73d6
Author: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed Sep 5 06:22:37 2018 -0400
Update to latest version.
diff --git a/.gitignore b/.gitignore
index 3966f97..c9a5e5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/xtl-0.4.7.tar.gz
/xtl-0.4.13.tar.gz
/xtl-0.4.14.tar.gz
+/xtl-0.4.15.tar.gz
diff --git a/0001-Fix-complex-test.patch b/0001-Fix-complex-test.patch
index 759501f..b87df5a 100644
--- a/0001-Fix-complex-test.patch
+++ b/0001-Fix-complex-test.patch
@@ -1,7 +1,7 @@
-From bb3fdf2fb8468ffc1e256491b7bbd029c4880978 Mon Sep 17 00:00:00 2001
+From 517cd4f961c155284916fe393445adbe0e137d2b Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed, 8 Aug 2018 00:03:32 -0400
-Subject: [PATCH] Fix complex test.
+Subject: [PATCH 1/2] Fix complex test.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
---
diff --git a/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
new file mode 100644
index 0000000..831594d
--- /dev/null
+++ b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
@@ -0,0 +1,118 @@
+From 081bbc82d3c76598b8496806bb5a8b95403fc14e Mon Sep 17 00:00:00 2001
+From: Benjamin Isbarn <babene88(a)gmail.com>
+Date: Sat, 25 Aug 2018 12:05:41 +0200
+Subject: [PATCH 2/2] Made nlohmann_json optional in the tests, exported c++14
+ requirement (#102)
+
+Made nlohmann_json optional in the tests, exported xtl compile features c++14.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
+---
+ CMakeLists.txt | 3 +++
+ test/CMakeLists.txt | 24 ++++++++++++++++--------
+ test/test_xoptional.cpp | 6 ++++++
+ 3 files changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c20ea3a..be16680 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -61,6 +61,9 @@ add_library(xtl INTERFACE)
+ target_include_directories(xtl INTERFACE $<BUILD_INTERFACE:${XTL_INCLUDE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
++# xtl requires C++14 support!
++target_compile_features(xtl INTERFACE cxx_std_14)
++
+
+ OPTION(BUILD_TESTS "xtl test suite" OFF)
+ OPTION(DOWNLOAD_GTEST "build gtest from downloaded sources" OFF)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 8c91616..0f7d400 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -12,6 +12,7 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
+ project(xtl-test)
+
+ find_package(xtl REQUIRED CONFIG)
++ find_package(nlohmann_json QUIET CONFIG)
+ set(XTL_INCLUDE_DIR ${xtl_INCLUDE_DIRS})
+ endif ()
+
+@@ -22,6 +23,10 @@ include(CheckCXXCompilerFlag)
+
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE)
+
++if(nlohmann_json_FOUND)
++ add_definitions(-DHAVE_NLOHMANN_JSON)
++endif()
++
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion")
+@@ -30,13 +35,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
+ if (HAS_MARCH_NATIVE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
+ endif()
+-
+- CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
+- if (HAS_CPP14_FLAG)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+- else()
+- message(FATAL_ERROR "Unsupported compiler -- xtl requires C++14 support!")
+- endif()
+ endif()
+
+ if(MSVC)
+@@ -111,7 +109,17 @@ add_executable(${XTL_TARGET} ${XTL_TESTS} ${XTL_HEADERS})
+ if(DOWNLOAD_GTEST OR GTEST_SRC_DIR)
+ add_dependencies(${XTL_TARGET} gtest_main)
+ endif()
+-target_link_libraries(${XTL_TARGET} xtl nlohmann_json ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++target_link_libraries(${XTL_TARGET} xtl ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++
++if(nlohmann_json_FOUND)
++ # Version up to 3.1.2 export the target `nlohmann_json`
++ if(TARGET nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json)
++ # Newer versions export the namespaced target `nlohmann_json::nlohmann_json`
++ elseif(TARGET nlohmann_json::nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json::nlohmann_json)
++ endif()
++endif()
+
+ add_custom_target(xtest COMMAND test_xtl DEPENDS ${XTL_TARGET})
+
+diff --git a/test/test_xoptional.cpp b/test/test_xoptional.cpp
+index 8100453..2ac1857 100644
+--- a/test/test_xoptional.cpp
++++ b/test/test_xoptional.cpp
+@@ -15,7 +15,11 @@
+
+ #include "xtl/xany.hpp"
+ #include "xtl/xoptional.hpp"
++
++#ifdef HAVE_NLOHMANN_JSON
+ #include "xtl/xjson.hpp"
++#endif
++
+ #include "xtl/xoptional_sequence.hpp"
+
+ namespace xtl
+@@ -276,6 +280,7 @@ namespace xtl
+ EXPECT_EQ(res.has_value(), o.has_value());
+ }
+
++#ifdef HAVE_NLOHMANN_JSON
+ TEST(xoptional, json)
+ {
+ xoptional<double> m1 = missing<double>();
+@@ -287,4 +292,5 @@ namespace xtl
+ nlohmann::json j2 = m2;
+ EXPECT_EQ(j2.get<xoptional<double>>(), 3.0);
+ }
++#endif
+ }
+--
+2.17.1
+
diff --git a/sources b/sources
index 6093444..da9c651 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (xtl-0.4.14.tar.gz) = 33a012240a83d9ab53316e3287983fe03eeebf44372008a59b8500df7cb1dcb26d9c34466dc8c3767029661aa7d3a8f1cfc9df3eedc2a17268985b0e2a1dff87
+SHA512 (xtl-0.4.15.tar.gz) = 821c1b98f9aa83f93b102948af2e6e88aad37fd12a13a9f4c8a3f3f5806c9edf19bf2a595e47b3f8293e7bd5b681ab4965f8ad3675c4f344bbfff19b219f22ee
diff --git a/xtl.spec b/xtl.spec
index bb42872..827d138 100644
--- a/xtl.spec
+++ b/xtl.spec
@@ -2,14 +2,16 @@
%global debug_package %{nil}
Name: xtl
-Version: 0.4.14
-Release: 2%{?dist}
+Version: 0.4.15
+Release: 1%{?dist}
License: BSD
Summary: QuantStack tools library
Url: https://github.com/QuantStack/xtl
Source0: https://github.com/QuantStack/%{name}/archive/%{version}/%{name}-%{versio...
# https://github.com/QuantStack/xtl/issues/97
Patch0001: 0001-Fix-complex-test.patch
+# https://github.com/QuantStack/xtl/pull/102
+Patch0002: 0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
BuildRequires: binutils
BuildRequires: cmake
@@ -61,10 +63,6 @@ popd
%check
-# https://github.com/QuantStack/xtl/issues/72
-%ifarch ppc64 s390x
-export GTEST_FILTER=-hash.verification
-%endif
make xtest
@@ -80,6 +78,9 @@ make xtest
%changelog
+* Wed Sep 05 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.15-1
+- Update to latest version
+
* Thu Aug 16 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.14-2
- rebuilt
5 years, 8 months
Architecture specific change in rpms/xtl.git
by githook-noreply@fedoraproject.org
The package rpms/xtl.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/xtl.git/commit/?id=6241a87eac3f8f....
Change:
-%ifarch ppc64 s390x
Thanks.
Full change:
============
commit 6241a87eac3f8f5419c68b3cf397d0fa677d73d6
Author: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed Sep 5 06:22:37 2018 -0400
Update to latest version.
diff --git a/.gitignore b/.gitignore
index 3966f97..c9a5e5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/xtl-0.4.7.tar.gz
/xtl-0.4.13.tar.gz
/xtl-0.4.14.tar.gz
+/xtl-0.4.15.tar.gz
diff --git a/0001-Fix-complex-test.patch b/0001-Fix-complex-test.patch
index 759501f..b87df5a 100644
--- a/0001-Fix-complex-test.patch
+++ b/0001-Fix-complex-test.patch
@@ -1,7 +1,7 @@
-From bb3fdf2fb8468ffc1e256491b7bbd029c4880978 Mon Sep 17 00:00:00 2001
+From 517cd4f961c155284916fe393445adbe0e137d2b Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
Date: Wed, 8 Aug 2018 00:03:32 -0400
-Subject: [PATCH] Fix complex test.
+Subject: [PATCH 1/2] Fix complex test.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
---
diff --git a/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
new file mode 100644
index 0000000..831594d
--- /dev/null
+++ b/0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
@@ -0,0 +1,118 @@
+From 081bbc82d3c76598b8496806bb5a8b95403fc14e Mon Sep 17 00:00:00 2001
+From: Benjamin Isbarn <babene88(a)gmail.com>
+Date: Sat, 25 Aug 2018 12:05:41 +0200
+Subject: [PATCH 2/2] Made nlohmann_json optional in the tests, exported c++14
+ requirement (#102)
+
+Made nlohmann_json optional in the tests, exported xtl compile features c++14.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst(a)gmail.com>
+---
+ CMakeLists.txt | 3 +++
+ test/CMakeLists.txt | 24 ++++++++++++++++--------
+ test/test_xoptional.cpp | 6 ++++++
+ 3 files changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c20ea3a..be16680 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -61,6 +61,9 @@ add_library(xtl INTERFACE)
+ target_include_directories(xtl INTERFACE $<BUILD_INTERFACE:${XTL_INCLUDE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
++# xtl requires C++14 support!
++target_compile_features(xtl INTERFACE cxx_std_14)
++
+
+ OPTION(BUILD_TESTS "xtl test suite" OFF)
+ OPTION(DOWNLOAD_GTEST "build gtest from downloaded sources" OFF)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 8c91616..0f7d400 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -12,6 +12,7 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
+ project(xtl-test)
+
+ find_package(xtl REQUIRED CONFIG)
++ find_package(nlohmann_json QUIET CONFIG)
+ set(XTL_INCLUDE_DIR ${xtl_INCLUDE_DIRS})
+ endif ()
+
+@@ -22,6 +23,10 @@ include(CheckCXXCompilerFlag)
+
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE)
+
++if(nlohmann_json_FOUND)
++ add_definitions(-DHAVE_NLOHMANN_JSON)
++endif()
++
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion -Wsign-conversion")
+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter -Wextra -Wreorder -Wconversion")
+@@ -30,13 +35,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
+ if (HAS_MARCH_NATIVE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
+ endif()
+-
+- CHECK_CXX_COMPILER_FLAG("-std=c++14" HAS_CPP14_FLAG)
+- if (HAS_CPP14_FLAG)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+- else()
+- message(FATAL_ERROR "Unsupported compiler -- xtl requires C++14 support!")
+- endif()
+ endif()
+
+ if(MSVC)
+@@ -111,7 +109,17 @@ add_executable(${XTL_TARGET} ${XTL_TESTS} ${XTL_HEADERS})
+ if(DOWNLOAD_GTEST OR GTEST_SRC_DIR)
+ add_dependencies(${XTL_TARGET} gtest_main)
+ endif()
+-target_link_libraries(${XTL_TARGET} xtl nlohmann_json ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++target_link_libraries(${XTL_TARGET} xtl ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
++
++if(nlohmann_json_FOUND)
++ # Version up to 3.1.2 export the target `nlohmann_json`
++ if(TARGET nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json)
++ # Newer versions export the namespaced target `nlohmann_json::nlohmann_json`
++ elseif(TARGET nlohmann_json::nlohmann_json)
++ target_link_libraries(${XTL_TARGET} nlohmann_json::nlohmann_json)
++ endif()
++endif()
+
+ add_custom_target(xtest COMMAND test_xtl DEPENDS ${XTL_TARGET})
+
+diff --git a/test/test_xoptional.cpp b/test/test_xoptional.cpp
+index 8100453..2ac1857 100644
+--- a/test/test_xoptional.cpp
++++ b/test/test_xoptional.cpp
+@@ -15,7 +15,11 @@
+
+ #include "xtl/xany.hpp"
+ #include "xtl/xoptional.hpp"
++
++#ifdef HAVE_NLOHMANN_JSON
+ #include "xtl/xjson.hpp"
++#endif
++
+ #include "xtl/xoptional_sequence.hpp"
+
+ namespace xtl
+@@ -276,6 +280,7 @@ namespace xtl
+ EXPECT_EQ(res.has_value(), o.has_value());
+ }
+
++#ifdef HAVE_NLOHMANN_JSON
+ TEST(xoptional, json)
+ {
+ xoptional<double> m1 = missing<double>();
+@@ -287,4 +292,5 @@ namespace xtl
+ nlohmann::json j2 = m2;
+ EXPECT_EQ(j2.get<xoptional<double>>(), 3.0);
+ }
++#endif
+ }
+--
+2.17.1
+
diff --git a/sources b/sources
index 6093444..da9c651 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (xtl-0.4.14.tar.gz) = 33a012240a83d9ab53316e3287983fe03eeebf44372008a59b8500df7cb1dcb26d9c34466dc8c3767029661aa7d3a8f1cfc9df3eedc2a17268985b0e2a1dff87
+SHA512 (xtl-0.4.15.tar.gz) = 821c1b98f9aa83f93b102948af2e6e88aad37fd12a13a9f4c8a3f3f5806c9edf19bf2a595e47b3f8293e7bd5b681ab4965f8ad3675c4f344bbfff19b219f22ee
diff --git a/xtl.spec b/xtl.spec
index bb42872..827d138 100644
--- a/xtl.spec
+++ b/xtl.spec
@@ -2,14 +2,16 @@
%global debug_package %{nil}
Name: xtl
-Version: 0.4.14
-Release: 2%{?dist}
+Version: 0.4.15
+Release: 1%{?dist}
License: BSD
Summary: QuantStack tools library
Url: https://github.com/QuantStack/xtl
Source0: https://github.com/QuantStack/%{name}/archive/%{version}/%{name}-%{versio...
# https://github.com/QuantStack/xtl/issues/97
Patch0001: 0001-Fix-complex-test.patch
+# https://github.com/QuantStack/xtl/pull/102
+Patch0002: 0002-Made-nlohmann_json-optional-in-the-tests-exported-c-.patch
BuildRequires: binutils
BuildRequires: cmake
@@ -61,10 +63,6 @@ popd
%check
-# https://github.com/QuantStack/xtl/issues/72
-%ifarch ppc64 s390x
-export GTEST_FILTER=-hash.verification
-%endif
make xtest
@@ -80,6 +78,9 @@ make xtest
%changelog
+* Wed Sep 05 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.15-1
+- Update to latest version
+
* Thu Aug 16 2018 Elliott Sales de Andrade <quantum.analyst(a)gmail.com> - 0.4.14-2
- rebuilt
5 years, 8 months
Architecture specific change in rpms/sundials.git
by githook-noreply@fedoraproject.org
The package rpms/sundials.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/sundials.git/commit/?id=44a352649....
Change:
+%ifarch %{power64} %{arm} aarch64 s390x
Thanks.
Full change:
============
commit 44a352649d07a171e0a4c57ad81c2c3c6bb18a83
Author: sagitter <sagitter(a)fedoraproject.org>
Date: Wed Sep 5 11:12:20 2018 +0200
Update to 3.1.2; enable PETSC support.
diff --git a/.gitignore b/.gitignore
index 76bdc66..ba17595 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ sundials-2.3.0.tar.gz
/sundials-3.0.0.tar.gz
/sundials-3.1.0.tar.gz
/sundials-3.1.1.tar.gz
+/sundials-3.1.2.tar.gz
diff --git a/sources b/sources
index 3edc675..a25a78d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (sundials-3.1.1.tar.gz) = 3e8fc7183c5503943f1ba00c73b04c1614a48b6e6cb90559ec5481f9acffaa19acd97bd961611b251ebdc032f1a13f0919b0ab0cdfe9d9b4ddc99d40bef5719f
+SHA512 (sundials-3.1.2.tar.gz) = b65989998b440b2b5c5d000f4b86d8bcbf03215fcee4e348cd4b8ff935ea3471a3593ab8bd0e7d5f8ba519b5a1285cc93d41ec622d0b51592d7593c7579af082
diff --git a/sundials.spec b/sundials.spec
index e1dea61..507071f 100644
--- a/sundials.spec
+++ b/sundials.spec
@@ -43,17 +43,35 @@
%global with_hypre 1
+## PETSc ##
+%if 0%{?fedora} && 0%{?fedora} < 29
+## Exclude MPI builds on s390x
+%ifarch s390x
+%global with_petsc 0
+%endif
+%ifnarch s390x
+%global with_petsc 1
+%endif
+%endif
+
+%if 0%{?fedora} && 0%{?fedora} >= 29
+%global with_petsc 1
+%endif
+%if 0%{?rhel} && 0%{?rhel} >= 7
+%global with_petsc 1
+%endif
+###########
+
%global with_parcheck 1
%global with_sercheck 1
Summary: Suite of nonlinear solvers
Name: sundials
-Version: 3.1.1
-Release: 3%{?dist}
+Version: 3.1.2
+Release: 1%{?dist}
# SUNDIALS is licensed under BSD with some additional (but unrestrictive) clauses.
# Check the file 'LICENSE' for details.
License: BSD
-Group: Development/Libraries
URL: http://www.llnl.gov/casc/sundials/
Source0: https://computation.llnl.gov/projects/sundials/download/sundials-%{versio...
@@ -74,12 +92,7 @@ BuildRequires: cmake
%global cmake3 %cmake
%global ctest3 ctest
%endif
-%ifarch %{openblas_arches}
BuildRequires: openblas-devel, openblas-srpm-macros
-%else
-BuildRequires: blas-devel, lapack-devel
-%endif
-
%ifarch s390x x86_64
BuildRequires: SuperLUMT64-devel
%endif
@@ -105,7 +118,6 @@ preconditioners.
%package devel
Summary: Suite of nonlinear solvers (developer files)
-Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers
@@ -116,7 +128,6 @@ This package contains the developer files (.so file, header files).
%if 0%{?with_openmpi}
%package openmpi
Summary: Suite of nonlinear solvers
-Group: Development/Libraries
BuildRequires: openmpi-devel
%if 0%{?rhel} || 0%{?fedora} > 28
BuildRequires: hypre-openmpi-devel
@@ -125,8 +136,11 @@ BuildRequires: hypre-openmpi-devel
BuildRequires: hypre-openmpi-devel
%endif
%endif
+%if 0%{?with_petsc}
+BuildRequires: petsc-openmpi-devel
+%endif
-Requires: openmpi
+Requires: openmpi%{?_isa}
Requires: gcc-gfortran%{?_isa}
Obsoletes: %{name}-openmpi-samples%{?_isa} < 3.1.1-2
@@ -137,7 +151,6 @@ This package contains the Sundials Fortran parallel OpenMPI libraries.
%package openmpi-devel
Summary: Suite of nonlinear solvers
-Group: Development/Libraries
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
%description openmpi-devel
SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers
@@ -151,7 +164,6 @@ header files.
%if 0%{?with_mpich}
%package mpich
Summary: Suite of nonlinear solvers
-Group: Development/Libraries
BuildRequires: mpich-devel
%if 0%{?rhel} || 0%{?fedora} > 28
BuildRequires: hypre-mpich-devel
@@ -160,7 +172,10 @@ BuildRequires: hypre-mpich-devel
BuildRequires: hypre-mpich-devel
%endif
%endif
-Requires: mpich
+%if 0%{?with_petsc}
+BuildRequires: petsc-mpich-devel
+%endif
+Requires: mpich%{?_isa}
Requires: gcc-gfortran%{?_isa}
Obsoletes: %{name}-mpich-samples%{?_isa} < 3.1.1-2
@@ -171,7 +186,6 @@ This package contains the Sundials parallel MPICH libraries.
%package mpich-devel
Summary: Suite of nonlinear solvers
-Group: Development/Libraries
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
%description mpich-devel
SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers
@@ -184,7 +198,6 @@ header files.
%package doc
Summary: Suite of nonlinear solvers (documentation)
-Group: Documentation
BuildArch: noarch
%description doc
SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers
@@ -240,9 +253,6 @@ mv src/cvodes/README src/README-cvodes
mv src/ida/README src/README-ida
mv src/idas/README src/README.idas
mv src/kinsol/README src/README-kinsol
-mv src/nvec_ser/README src/README-nvec_ser
-mv src/nvec_par/README src/README-nvec_par
-mv src/nvec_pthreads/README src/README-nvec_pthreads
popd
%if 0%{?with_openmpi}
@@ -254,21 +264,12 @@ cp -a sundials-%{version} buildmpich_dir
%build
pushd sundials-%{version}
-# LAPACK is not compatible with INT64_T integers
+
mkdir -p build && cd build
-%ifarch %{openblas_arches}
export LIBBLASLINK=-lopenblas
export LIBBLAS=libopenblas
-export LIBLAPACKLINK=
export INCBLAS=-I%{_includedir}/openblas
-%else
-export LIBBLASLINK=-lblas
-export LIBBLAS=libblas
-export LIBLAPACKLINK=-llapack
-export LIBLAPACK=liblapack
-export INCBLAS=-I%{_includedir}
-%endif
%ifarch s390x x86_64
export LIBSUPERLUMTLINK=-lsuperlumt64_d
@@ -285,9 +286,9 @@ export CFLAGS=""
cmake \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Debug \
- -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBLAPACKLINK $LIBSUPERLUMTLINK" \
+ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK" \
%else
%{cmake3} \
%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64
@@ -297,20 +298,13 @@ cmake \
%endif
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Release \
- -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBLAPACKLINK $LIBSUPERLUMTLINK" \
+ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK" \
%endif
-%ifnarch %{power64} aarch64 s390x
-DLAPACK_ENABLE:BOOL=OFF \
-DBLAS_ENABLE:BOOL=ON \
-DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
-%else
- -DLAPACK_ENABLE:BOOL=ON \
- -DBLAS_ENABLE:BOOL=ON \
- -DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
- -DLAPACK_LIBRARIES:STRING=%{_libdir}/$LIBLAPACK.so \
-%endif
-DCMAKE_MODULE_LINKER_FLAGS:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed" \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DPYTHON_EXECUTABLE:FILEPATH=%{__python2} \
@@ -347,6 +341,10 @@ sed -i 's|TARGETS sundials_nvecparallel_shared DESTINATION lib|TARGETS sundials_
sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/openmpi-%{_arch}/nvector|g' src/nvec_par/CMakeLists.txt
sed -i 's|TARGETS sundials_fnvecparallel_shared DESTINATION lib|TARGETS sundials_fnvecparallel_shared DESTINATION %{_libdir}/openmpi/lib|g' src/nvec_par/CMakeLists.txt
sed -i 's|TARGETS sundials_nvecparhyp_shared DESTINATION lib|TARGETS sundials_nvecparhyp_shared DESTINATION %{_libdir}/openmpi/lib|g' src/nvec_parhyp/CMakeLists.txt
+%if 0%{?with_petsc}
+sed -i 's|TARGETS sundials_nvecpetsc_shared DESTINATION lib|TARGETS sundials_nvecpetsc_shared DESTINATION %{_libdir}/openmpi/lib|g' src/nvec_petsc/CMakeLists.txt
+sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/openmpi-%{_arch}/nvector|g' src/nvec_petsc/CMakeLists.txt
+%endif
mkdir -p build && cd build
%{_openmpi_load}
@@ -355,18 +353,9 @@ export CXX=mpicxx
export FC=mpif77
## Blas
-%ifarch %{openblas_arches}
export LIBBLASLINK=-lopenblas
export LIBBLAS=libopenblas
-export LIBLAPACKLINK=
export INCBLAS=-I%{_includedir}/openblas
-%else
-export LIBBLASLINK=-lblas
-export LIBBLAS=libblas
-export LIBLAPACKLINK=-llapack
-export LIBLAPACK=liblapack
-export INCBLAS=-I%{_includedir}
-%endif
##
## SuperLUMT
%ifarch s390x x86_64
@@ -401,9 +390,9 @@ export CFLAGS=""
cmake \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Debug \
- -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBLAPACKLINK $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
+ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
%else
%{cmake3} \
%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64
@@ -413,19 +402,17 @@ cmake \
%endif
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Release \
- -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBLAPACKLINK $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
+ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
%endif
-%ifnarch %{power64} aarch64 s390x
-DLAPACK_ENABLE:BOOL=OFF \
-DBLAS_ENABLE:BOOL=ON \
-DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
-%else
- -DLAPACK_ENABLE:BOOL=ON \
- -DBLAS_ENABLE:BOOL=ON \
- -DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
- -DLAPACK_LIBRARIES:STRING=%{_libdir}/$LIBLAPACK.so \
+%if 0%{?with_petsc}
+ -DPETSC_ENABLE:BOOL=ON \
+ -DPETSC_INCLUDE_DIR:PATH=$MPI_INCLUDE/petsc \
+ -DPETSC_LIBRARY_DIR:PATH=$MPI_LIB \
%endif
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DPYTHON_EXECUTABLE:FILEPATH=%{__python2} \
@@ -481,6 +468,10 @@ sed -i 's|TARGETS sundials_nvecparallel_shared DESTINATION lib|TARGETS sundials_
sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/mpich-%{_arch}/nvector|g' src/nvec_par/CMakeLists.txt
sed -i 's|TARGETS sundials_fnvecparallel_shared DESTINATION lib|TARGETS sundials_fnvecparallel_shared DESTINATION %{_libdir}/mpich/lib|g' src/nvec_par/CMakeLists.txt
sed -i 's|TARGETS sundials_nvecparhyp_shared DESTINATION lib|TARGETS sundials_nvecparhyp_shared DESTINATION %{_libdir}/mpich/lib|g' src/nvec_parhyp/CMakeLists.txt
+%if 0%{?with_petsc}
+sed -i 's|TARGETS sundials_nvecpetsc_shared DESTINATION lib|TARGETS sundials_nvecpetsc_shared DESTINATION %{_libdir}/mpich/lib|g' src/nvec_petsc/CMakeLists.txt
+sed -i 's|DESTINATION include/nvector|DESTINATION %{_includedir}/mpich-%{_arch}/nvector|g' src/nvec_petsc/CMakeLists.txt
+%endif
mkdir -p build && cd build
%{_mpich_load}
@@ -497,18 +488,9 @@ export F77=mpifort
export FC=mpifort
%endif
## Blas
-%ifarch %{openblas_arches}
export LIBBLASLINK=-lopenblas
export LIBBLAS=libopenblas
-export LIBLAPACKLINK=
export INCBLAS=-I%{_includedir}/openblas
-%else
-export LIBBLASLINK=-lblas
-export LIBBLAS=libblas
-export LIBLAPACKLINK=-llapack
-export LIBLAPACK=liblapack
-export INCBLAS=-I%{_includedir}
-%endif
##
## SuperLUMT
%ifarch s390x x86_64
@@ -543,9 +525,9 @@ export CFLAGS=""
cmake \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Debug \
- -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBLAPACKLINK $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
+ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
%else
%{cmake3} \
%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64
@@ -555,19 +537,17 @@ cmake \
%endif
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Release \
- -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" \
- -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBLAPACKLINK $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
+ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -I$INCBLAS" \
+ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} -Wl,-z,now -Wl,--as-needed -lklu $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \
%endif
-%ifnarch %{power64} aarch64 s390x
-DLAPACK_ENABLE:BOOL=OFF \
-DBLAS_ENABLE:BOOL=ON \
-DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
-%else
- -DLAPACK_ENABLE:BOOL=ON \
- -DBLAS_ENABLE:BOOL=ON \
- -DBLAS_LIBRARIES:STRING=%{_libdir}/$LIBBLAS.so \
- -DLAPACK_LIBRARIES:STRING=%{_libdir}/$LIBLAPACK.so \
+%if 0%{?with_petsc}
+ -DPETSC_ENABLE:BOOL=ON \
+ -DPETSC_INCLUDE_DIR:PATH=$MPI_INCLUDE/petsc \
+ -DPETSC_LIBRARY_DIR:PATH=$MPI_LIB \
%endif
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DPYTHON_EXECUTABLE:FILEPATH=%{__python2} \
@@ -640,8 +620,9 @@ popd
# Remove static libraries
rm -f %{buildroot}%{_libdir}/*.a
-# Remove file in a bad position
+# Remove files in bad position
rm -f %{buildroot}%{_prefix}/LICENSE
+rm -f %{buildroot}%{_includedir}/sundials/LICENSE
%ldconfig_scriptlets
@@ -651,7 +632,11 @@ rm -f %{buildroot}%{_prefix}/LICENSE
%{_openmpi_load}
pushd buildopenmpi_dir/build
export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:%{buildroot}%{_libdir}
-%ctest3 --force-new-ctest-process -VV
+%ifarch %{power64} %{arm} aarch64 s390x
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure -E 'test_sunmatrix_sparse_400_400_0_0'
+%else
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure
+%endif
popd
%{_openmpi_unload}
%endif ##if openmpi
@@ -660,7 +645,11 @@ popd
%{_mpich_load}
pushd buildmpich_dir/build
export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:%{buildroot}%{_libdir}
-%ctest3 --force-new-ctest-process -VV
+%ifarch %{power64} %{arm} aarch64 s390x
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure -E 'test_sunmatrix_sparse_400_400_0_0'
+%else
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure
+%endif
popd
%{_mpich_unload}
%endif ##if openmpi
@@ -669,7 +658,11 @@ popd
%if 0%{?with_sercheck}
pushd sundials-%{version}/build
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
-%ctest3 --force-new-ctest-process -VV
+%ifarch %{power64} %{arm} aarch64 s390x
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure -E 'test_sunmatrix_sparse_400_400_0_0'
+%else
+%ctest3 --force-new-ctest-process -VV -j 1 --output-on-failure
+%endif
popd
%endif ##if with_sercheck
@@ -736,6 +729,9 @@ popd
%doc sundials-%{version}/README.md sundials-%{version}/src/README-*
%{_libdir}/openmpi/lib/libsundials_nvecparallel.so.*
%{_libdir}/openmpi/lib/libsundials_fnvecparallel.so.*
+%if 0%{?with_petsc}
+%{_libdir}/openmpi/lib/libsundials_nvecpetsc.so.*
+%endif
%if 0%{?rhel} || 0%{?fedora} > 28
%{_libdir}/openmpi/lib/libsundials_nvecparhyp.so.*
%else
@@ -745,9 +741,14 @@ popd
%endif
%files openmpi-devel
+%dir %{_includedir}/openmpi-%{_arch}/nvector
%{_includedir}/openmpi-%{_arch}/nvector/nvector_parallel.h
%{_libdir}/openmpi/lib/libsundials_nvecparallel.so
%{_libdir}/openmpi/lib/libsundials_fnvecparallel.so
+%if 0%{?with_petsc}
+%{_libdir}/openmpi/lib/libsundials_nvecpetsc.so
+%{_includedir}/openmpi-%{_arch}/nvector/nvector_petsc.h
+%endif
%if 0%{?rhel} || 0%{?fedora} > 28
%{_libdir}/openmpi/lib/libsundials_nvecparhyp.so
%else
@@ -763,6 +764,9 @@ popd
%doc sundials-%{version}/README.md sundials-%{version}/src/README-*
%{_libdir}/mpich/lib/libsundials_nvecparallel.so.*
%{_libdir}/mpich/lib/libsundials_fnvecparallel.so.*
+%if 0%{?with_petsc}
+%{_libdir}/mpich/lib/libsundials_nvecpetsc.so.*
+%endif
%if 0%{?rhel} || 0%{?fedora} > 28
%{_libdir}/mpich/lib/libsundials_nvecparhyp.so.*
%else
@@ -772,9 +776,14 @@ popd
%endif
%files mpich-devel
+%dir %{_includedir}/mpich-%{_arch}/nvector
%{_includedir}/mpich-%{_arch}/nvector/nvector_parallel.h
%{_libdir}/mpich/lib/libsundials_nvecparallel.so
%{_libdir}/mpich/lib/libsundials_fnvecparallel.so
+%if 0%{?with_petsc}
+%{_libdir}/mpich/lib/libsundials_nvecpetsc.so
+%{_includedir}/mpich-%{_arch}/nvector/nvector_petsc.h
+%endif
%if 0%{?rhel} || 0%{?fedora} > 28
%{_libdir}/mpich/lib/libsundials_nvecparhyp.so
%else
@@ -785,6 +794,10 @@ popd
%endif
%changelog
+* Wed Aug 01 2018 Antonio Trande <sagitterATfedoraproject.org> - 3.1.2-1
+- Update to 3.1.2
+- Enable PETSC support
+
* Sat Jul 14 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
5 years, 8 months
[Report] Packages Restricting Arches
by root
Package no longer excluding arches (2)
==================================
- git-lfs
- wiredtiger
List of packages currently excluding arches (2624)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GPRbuild_arches}
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: x86_64 %{ix86} %{arm}
- arduino
ExclusiveArch: %{go_arches}
- arduino-builder
ExclusiveArch: %{go_arches}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: %{go_arches}
- aunit
ExclusiveArch: %GPRbuild_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64}
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- biosdevname
ExclusiveArch: %{ix86} x86_64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 %{arm} aarch64 ppc64le s390x
- bwa
ExclusiveArch: x86_64
- caddy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}}
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- containerd
ExclusiveArch: %{go_arches}
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- cryptlib
ExclusiveArch: x86_64 %{ix86} aarch64 ppc64 ppc64le
- cryptobone
ExclusiveArch: x86_64 %{ix86} ppc64 ppc64le aarch64
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- deepin-api
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-dbus-generator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-gir-generator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- discord-irc
ExclusiveArch: %{nodejs_arches} noarch
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- douceur
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- embree2
ExclusiveArch: x86_64
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- exercism
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluxcapacitor
ExclusiveArch: %{ix86} x86_64 %{arm}
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- freshmaker
ExclusiveArch: %{ix86} x86_64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwts
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 s390x %{power64}
- fwupdate
ExclusiveArch: %{efi}
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gela-asis
ExclusiveArch: %GPRbuild_arches
- ghdl
ExclusiveArch: %{GNAT_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glusterd2
ExclusiveArch: %{go_arches}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %GPRbuild_arches
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-guitar
ExclusiveArch: %{mono_arches}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: %{efi}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godotenv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-deepin-dbus-factory
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-deepin-go-lib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-BurntSushi-freetype-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-graphics-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-BurntSushi-xgb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-xgbutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Jeffail-gabs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-goquery
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-SermoDigital-jose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-chroma
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-alecthomas-colour
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-kingpin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-repr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-template
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-alecthomas-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-andybalholm-cascadia
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-armon-go-proxyproto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-axgle-mahonia
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-go-netrc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boombuler-barcode
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-buger-jsonparser
ExclusiveArch: %{go_arches} noarch
- golang-github-cespare-xxhash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheekybits-is
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chrismalek-oktasdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-client9-gospell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cockroach-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codahale-aesnicheck
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cryptix-wav
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-danwakefield-fnmatch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dchest-siphash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-disintegration-imaging
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dlclark-regexp2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{go_arches}
- golang-github-duosecurity-duo_api_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-color
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-structs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-flynn-go-shlex
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fullsailor-pkcs7
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobuffalo-envy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-gocql-gocql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-cmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-css
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hailocab-go-hostpool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-hclog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-plugin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-rootcerts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-howeyc-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-go-vhost
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jdkato-prose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jdkato-syllables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jefferai-jsonx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-justinas-alice
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-linuxdeepin-go-x11-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-markbates-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-colorable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mgutz-ansi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mgutz-logxi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-michaelklishin-rabbit-hole
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-testing-interface
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-montanaflynn-stats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-msteinert-pam
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-muesli-smartcrop
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-neurosnap-sentences
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-nfnt-resize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-patrickmn-go-cache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-paulrosania-go-charset
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pquerna-otp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rasky-go-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-remeh-sizedwaitgroup
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ryanuber-go-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-sergi-go-diff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-sethgrid-pester
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shogo82148-go-shuffle
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-openssl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm} ppc64le s390x}
- golang-github-spaolacci-murmur3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-sstarcher-go-okta
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-streadway-amqp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xrash-smetrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-torproject-pluggable-transports-goptlib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- gsf-sharp
ExclusiveArch: %mono_arches
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gudev-sharp
ExclusiveArch: %mono_arches
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hsakmt
ExclusiveArch: x86_64 aarch64
- hub
ExclusiveArch: %{go_arches}
- hugo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ignition
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- insect
ExclusiveArch: %{nodejs_arches} noarch
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- josm
ExclusiveArch: %{ix86} x86_64
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 s390x %{arm} aarch64 ppc64le
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 s390x
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches} aarch64
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libmfx
ExclusiveArch: %{ix86} x86_64
- libocxl
ExclusiveArch: ppc64le
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- librtas
ExclusiveArch: %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mcelog
ExclusiveArch: i686 x86_64
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- mesos
ExclusiveArch: x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- mongodb
ExclusiveArch: %{upstream_arches}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-arm-binutils
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nim
ExclusiveArch: %{nim_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-Base64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-dynamic-import
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn-jsx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-add-stream
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-align-text
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgblue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgcyan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bggreen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgmagenta
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgwhite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bgyellow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-black
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-blue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-bold
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-dim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-escapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-gray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-grey
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-hidden
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-inverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-italic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-red
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-reset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-strikethrough
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-underline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-white
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-field
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-buffer-from-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-ify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arraybuffer-dot-slice
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arraybuffer-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-arrays
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-limiter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asynckit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-atob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-auto-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-autoresolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ava-init
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-code-frame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-messages
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-functions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-plugin-syntax-async-generators
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-babylon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backoff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-option
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base-plugins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base32-encode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-arraybuffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64id
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-bcryptjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-than-before
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bind-obj-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bit-mask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-blob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-braces
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-browser-stdout
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-shims
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffertools
ExclusiveArch: %{nodejs_arches}
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-busboy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-byline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cache-base
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-delayed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-matcher
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-me-maybe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-callback-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-center-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-as-promised
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-json-schema
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-oauth2orize-grant
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-spies-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-chardet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-charenc
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-check-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-check-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cheerio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chroma-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ci-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-circular-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-class-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clear-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-co-with-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-coffee-coverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-collection-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-color-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-common-path-prefix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compare-func
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compare-versions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-inherit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-group
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-consolemd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constant-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-conventional-changelog-angular
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-atom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-core
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-conventional-changelog-ember
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-eslint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-express
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jquery
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jscs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-preset-loader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-changelog-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-filter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-commits-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-conventional-recommended-bump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-hex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-copy-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-assert
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-crypt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csrf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cyclist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dargs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-death
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debug-fabulous
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decamelize-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decimal-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dedent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-default-resolution
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delete
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detect-newline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dirty-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-discord-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-prop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-echomd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ecstatic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-empty-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-engine-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-promisify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escallmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escope
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espower-location-detector
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-espurify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estree-walker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-everything-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-execa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extended-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fake
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fastfall
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-faucet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-finalhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flat-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-flush-write-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fmix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow-redirects
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-foreground-child
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fragment-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-dot-notify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-cached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-temp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-function-loop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-dummy-commit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-raw-commits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-remote-origin-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-semver-tags
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-git-tails
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gitconfiglocal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-expand
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-global-modules
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gnode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-angular-templates
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-html-validation
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-svgmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulp-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gulp-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulp-util
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handle-thing
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-binary2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-cors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-flag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hex-to-array-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-historic-readline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-homedir-polyfill
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hook-std
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hsluv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-deceiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-immutable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-import-local
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imul
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-info-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-intercept-require
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ipaddr-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-irc-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-formatting
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irc-upd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-accessor-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-data-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-descriptor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-negated-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-odd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-registered
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-subset
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-valid-instance
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-coverage
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-hook
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-report
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-lib-source-maps
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul-reports
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jest-mock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-string-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-js-tokens
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-better-errors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer-dot-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keep-alive-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-keygrip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-kuler2gpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazy-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libpq
ExclusiveArch: %{nodejs_arches}
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-numbers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-character
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-ok
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-long
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-longest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loophole
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-magic-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-makeerror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-matched
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdn-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-memwatch-next
ExclusiveArch: %{nodejs_arches}
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-method-override
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-micromatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mimic-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimalistic-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimist-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minipass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-deep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mixin-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-bin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-modify-values
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-moment-timezone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multipipe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-murmur-32
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mutate-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanomatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nanoseconds
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negative-zero
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-net-browserify-alt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ng-classify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-noncharacters
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-package-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth2orize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-pick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-visit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-observable-to-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-obuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-okay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opal-runtime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-option-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-own-or
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-own-or-env
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parallel-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-param-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-passwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parsejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseqs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseuri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pascalcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-http-bearer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2-client-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-dirname
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pbkdf2-password
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-cursor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-int8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-native
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-character-classes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-posix-getopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-precond
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pretty-time
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prism-media
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proclaim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-propget
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-addr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pump
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pumpify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-quick-lru
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-random-bytes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-random-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rc
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-dir-files
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-installed
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-json-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-enhanced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regex-not
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-remove-trailing-separator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-main-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-relative
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-cwd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resolve-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ret
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reusify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-right-align
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rollup-plugin-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-commonjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-node-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-plugin-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rollup-pluginutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seedrandom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-select-hose
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sentiment
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-server-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-blocking
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-setprototypeof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shallow-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-command
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shebang-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-asyncify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-chai
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slash
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sliced
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-capture-set
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-node
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snapdragon-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snekfetch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socket-dot-io-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map-support
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spawn-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spawn-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spec-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ssri
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-st
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-pair
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-streamsearch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-color
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-eof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strong-log-transformer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent-proxy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-suspend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-svgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-out
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-spec
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tapes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-pack
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp-write
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tempfile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-test-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testdata-w3c-json-form
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testutil
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-diff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timekeeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tippex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-title-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmpl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-regex-range
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-touch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tressa
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trim-off-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-trivial-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-try-thread-sleep
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsame
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tslib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tv4
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tweetnacl-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-temp-dir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unset-value
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-urix
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-use
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-user-home
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uuid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vlq
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walker
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ware
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-warning-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watershed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wbuf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-whet-dot-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wolfy87-eventemitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xdg-basedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlhttprequest-ssl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yapool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yeast
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zeropad
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- obfs4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- oci-kvm-hook
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- oci-umount
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- odcs
ExclusiveArch: %{ix86} x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- onedrive
ExclusiveArch: %{ldc_arches}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmx
ExclusiveArch: x86_64 %{ix86}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openvswitch
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orion
ExclusiveArch: %{qt5_qtwebengine_arches}
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- peripety
ExclusiveArch: %{rust_arches}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plv8
ExclusiveArch: %v8_arches
- pocl
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- podman
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-openoffice
ExclusiveArch: noarch x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reg
ExclusiveArch: x86_64
- renderdoc
ExclusiveArch: %{ix86} x86_64
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- rocm-runtime
ExclusiveArch: x86_64 aarch64
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rssguard
ExclusiveArch: %{qt5_qtwebengine_arches}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-adler32
ExclusiveArch: %{rust_arches}
- rust-aho-corasick
ExclusiveArch: %{rust_arches}
- rust-ansi_term
ExclusiveArch: %{rust_arches}
- rust-antidote
ExclusiveArch: %{rust_arches}
- rust-arrayref
ExclusiveArch: %{rust_arches}
- rust-arrayvec
ExclusiveArch: %{rust_arches}
- rust-atk-sys
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-backtrace
ExclusiveArch: %{rust_arches}
- rust-backtrace-sys
ExclusiveArch: %{rust_arches}
- rust-base100
ExclusiveArch: %{rust_arches}
- rust-base64
ExclusiveArch: %{rust_arches}
- rust-bat
ExclusiveArch: %{rust_arches}
- rust-bencher
ExclusiveArch: %{rust_arches}
- rust-bincode
ExclusiveArch: %{rust_arches}
- rust-bincode0.8
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-bitflags0.9
ExclusiveArch: %{rust_arches}
- rust-block-padding
ExclusiveArch: %{rust_arches}
- rust-brev
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-build_const
ExclusiveArch: %{rust_arches}
- rust-byte-tools
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes
ExclusiveArch: %{rust_arches}
- rust-bytes0.3
ExclusiveArch: %{rust_arches}
- rust-c_vec
ExclusiveArch: %{rust_arches}
- rust-cairo-rs
ExclusiveArch: %{rust_arches}
- rust-cairo-sys-rs
ExclusiveArch: %{rust_arches}
- rust-cargo
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cc
ExclusiveArch: %{rust_arches}
- rust-cfg-if
ExclusiveArch: %{rust_arches}
- rust-chan
ExclusiveArch: %{rust_arches}
- rust-chrono
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-cmake
ExclusiveArch: %{rust_arches}
- rust-coco
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
ExclusiveArch: %{rust_arches}
- rust-crc-core
ExclusiveArch: %{rust_arches}
- rust-crossbeam
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-cryptovec
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-curl-sys
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-data-encoding
ExclusiveArch: %{rust_arches}
- rust-datetime
ExclusiveArch: %{rust_arches}
- rust-dbus
ExclusiveArch: %{rust_arches}
- rust-deque
ExclusiveArch: %{rust_arches}
- rust-devicemapper
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-docopt
ExclusiveArch: %{rust_arches}
- rust-downcast-rs
ExclusiveArch: %{rust_arches}
- rust-dtoa
ExclusiveArch: %{rust_arches}
- rust-dtoa-short
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-encoding
ExclusiveArch: %{rust_arches}
- rust-encoding-index-japanese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-korean
ExclusiveArch: %{rust_arches}
- rust-encoding-index-simpchinese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-singlebyte
ExclusiveArch: %{rust_arches}
- rust-encoding-index-tradchinese
ExclusiveArch: %{rust_arches}
- rust-encoding_index_tests
ExclusiveArch: %{rust_arches}
- rust-encoding_rs
ExclusiveArch: %{rust_arches}
- rust-encoding_rs_io
ExclusiveArch: %{rust_arches}
- rust-enum_primitive
ExclusiveArch: %{rust_arches}
- rust-env_logger
ExclusiveArch: %{rust_arches}
- rust-env_logger0.4
ExclusiveArch: %{rust_arches}
- rust-errln
ExclusiveArch: %{rust_arches}
- rust-errno
ExclusiveArch: %{rust_arches}
- rust-error-chain
ExclusiveArch: %{rust_arches}
- rust-exa
ExclusiveArch: %{rust_arches}
- rust-extprim
ExclusiveArch: %{rust_arches}
- rust-extprim_literals_macros
ExclusiveArch: %{rust_arches}
- rust-failure
ExclusiveArch: %{rust_arches}
- rust-failure_derive
ExclusiveArch: %{rust_arches}
- rust-fake_clock
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-filetime
ExclusiveArch: %{rust_arches}
- rust-fixedbitset
ExclusiveArch: %{rust_arches}
- rust-flame
ExclusiveArch: %{rust_arches}
- rust-flate2
ExclusiveArch: %{rust_arches}
- rust-float-cmp
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fuse
ExclusiveArch: %{rust_arches}
- rust-futures
ExclusiveArch: %{rust_arches}
- rust-futures-async-runtime
ExclusiveArch: %{rust_arches}
- rust-futures-channel
ExclusiveArch: %{rust_arches}
- rust-futures-core
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-executor
ExclusiveArch: %{rust_arches}
- rust-futures-io
ExclusiveArch: %{rust_arches}
- rust-futures-macro-async
ExclusiveArch: %{rust_arches}
- rust-futures-macro-await
ExclusiveArch: %{rust_arches}
- rust-futures-sink
ExclusiveArch: %{rust_arches}
- rust-futures-stable
ExclusiveArch: %{rust_arches}
- rust-futures-timer
ExclusiveArch: %{rust_arches}
- rust-futures-util
ExclusiveArch: %{rust_arches}
- rust-futures0.1
ExclusiveArch: %{rust_arches}
- rust-gcsf
ExclusiveArch: %{rust_arches}
- rust-gdk
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf
ExclusiveArch: %{rust_arches}
- rust-gdk-pixbuf-sys
ExclusiveArch: %{rust_arches}
- rust-gdk-sys
ExclusiveArch: %{rust_arches}
- rust-generic-array
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-gimli
ExclusiveArch: %{rust_arches}
- rust-gio
ExclusiveArch: %{rust_arches}
- rust-gio-sys
ExclusiveArch: %{rust_arches}
- rust-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-glib
ExclusiveArch: %{rust_arches}
- rust-glib-sys
ExclusiveArch: %{rust_arches}
- rust-glob
ExclusiveArch: %{rust_arches}
- rust-globset
ExclusiveArch: %{rust_arches}
- rust-gobject-sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-google-drive3-fork
ExclusiveArch: %{rust_arches}
- rust-grep
ExclusiveArch: %{rust_arches}
- rust-gtk
ExclusiveArch: %{rust_arches}
- rust-gtk-rs-lgpl-docs
ExclusiveArch: %{rust_arches}
- rust-gtk-source-sys
ExclusiveArch: %{rust_arches}
- rust-gtk-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-h2
ExclusiveArch: %{rust_arches}
- rust-hamcrest
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-heapsize
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-home
ExclusiveArch: %{rust_arches}
- rust-horrorshow
ExclusiveArch: %{rust_arches}
- rust-http
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-hyper
ExclusiveArch: %{rust_arches}
- rust-hyper-native-tls
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyper0.10
ExclusiveArch: %{rust_arches}
- rust-id_tree
ExclusiveArch: %{rust_arches}
- rust-idna
ExclusiveArch: %{rust_arches}
- rust-ignore
ExclusiveArch: %{rust_arches}
- rust-indexmap
ExclusiveArch: %{rust_arches}
- rust-input_buffer
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-iso8601
ExclusiveArch: %{rust_arches}
- rust-itertools
ExclusiveArch: %{rust_arches}
- rust-itoa
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-language-tags
ExclusiveArch: %{rust_arches}
- rust-lazy-init
ExclusiveArch: %{rust_arches}
- rust-lazy_static
ExclusiveArch: %{rust_arches}
- rust-lazycell
ExclusiveArch: %{rust_arches}
- rust-libc
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libgit2-sys
ExclusiveArch: %{rust_arches}
- rust-libloading
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libudev
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-lipsum
ExclusiveArch: %{rust_arches}
- rust-locale
ExclusiveArch: %{rust_arches}
- rust-lock_api
ExclusiveArch: %{rust_arches}
- rust-log
ExclusiveArch: %{rust_arches}
- rust-log0.3
ExclusiveArch: %{rust_arches}
- rust-loopdev
ExclusiveArch: %{rust_arches}
- rust-lru_time_cache
ExclusiveArch: %{rust_arches}
- rust-lzma-sys
ExclusiveArch: %{rust_arches}
- rust-macro-attr
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-md5
ExclusiveArch: %{rust_arches}
- rust-memchr
ExclusiveArch: %{rust_arches}
- rust-memmap
ExclusiveArch: %{rust_arches}
- rust-memoffset
ExclusiveArch: %{rust_arches}
- rust-metadeps
ExclusiveArch: %{rust_arches}
- rust-mime
ExclusiveArch: %{rust_arches}
- rust-mime-sniffer
ExclusiveArch: %{rust_arches}
- rust-mime0.2
ExclusiveArch: %{rust_arches}
- rust-miniz-sys
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide_c_api
ExclusiveArch: %{rust_arches}
- rust-mio
ExclusiveArch: %{rust_arches}
- rust-mio-extras
ExclusiveArch: %{rust_arches}
- rust-mio-uds
ExclusiveArch: %{rust_arches}
- rust-mnt
ExclusiveArch: %{rust_arches}
- rust-modifier
ExclusiveArch: %{rust_arches}
- rust-multimap
ExclusiveArch: %{rust_arches}
- rust-native-tls
ExclusiveArch: %{rust_arches}
- rust-native-tls0.1
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-net2
ExclusiveArch: %{rust_arches}
- rust-newtype_derive
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nodrop
ExclusiveArch: %{rust_arches}
- rust-nom
ExclusiveArch: %{rust_arches}
- rust-nom3
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-complex
ExclusiveArch: %{rust_arches}
- rust-num-integer
ExclusiveArch: %{rust_arches}
- rust-num-iter
ExclusiveArch: %{rust_arches}
- rust-num-rational
ExclusiveArch: %{rust_arches}
- rust-num-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num_cpus
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-onig_sys
ExclusiveArch: %{rust_arches}
- rust-openssl
ExclusiveArch: %{rust_arches}
- rust-openssl-probe
ExclusiveArch: %{rust_arches}
- rust-openssl-sys
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches} noarch
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pango
ExclusiveArch: %{rust_arches}
- rust-pango-sys
ExclusiveArch: %{rust_arches}
- rust-pangocairo
ExclusiveArch: %{rust_arches}
- rust-pangocairo-sys
ExclusiveArch: %{rust_arches}
- rust-parking_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot_core
ExclusiveArch: %{rust_arches}
- rust-peeking_take_while
ExclusiveArch: %{rust_arches}
- rust-peg
ExclusiveArch: %{rust_arches}
- rust-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-permutate
ExclusiveArch: %{rust_arches}
- rust-permutohedron
ExclusiveArch: %{rust_arches}
- rust-pest
ExclusiveArch: %{rust_arches}
- rust-pest_derive
ExclusiveArch: %{rust_arches}
- rust-phf
ExclusiveArch: %{rust_arches}
- rust-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_generator
ExclusiveArch: %{rust_arches}
- rust-phf_shared
ExclusiveArch: %{rust_arches}
- rust-pkg-config
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-plist
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-proc-macro2
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.3
ExclusiveArch: %{rust_arches}
- rust-procedural-masquerade
ExclusiveArch: %{rust_arches}
- rust-pulldown-cmark
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickersort
ExclusiveArch: %{rust_arches}
- rust-quote
ExclusiveArch: %{rust_arches}
- rust-quote0.3
ExclusiveArch: %{rust_arches}
- rust-quote0.5
ExclusiveArch: %{rust_arches}
- rust-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-rayon
ExclusiveArch: %{rust_arches}
- rust-rayon-core
ExclusiveArch: %{rust_arches}
- rust-regex
ExclusiveArch: %{rust_arches}
- rust-regex-syntax
ExclusiveArch: %{rust_arches}
- rust-relay
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rust-ini
ExclusiveArch: %{rust_arches}
- rust-rustc-demangle
ExclusiveArch: %{rust_arches}
- rust-rustc-serialize
ExclusiveArch: %{rust_arches}
- rust-rustc-test
ExclusiveArch: %{rust_arches}
- rust-rustc_version
ExclusiveArch: %{rust_arches}
- rust-rustdoc-stripper
ExclusiveArch: %{rust_arches}
- rust-rustfilt
ExclusiveArch: %{rust_arches}
- rust-ryu
ExclusiveArch: %{rust_arches}
- rust-safemem
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-scoped-tls
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-semver
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-serde
ExclusiveArch: %{rust_arches}
- rust-serde0.8
ExclusiveArch: %{rust_arches}
- rust-serde_bytes
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_derive
ExclusiveArch: %{rust_arches}
- rust-serde_ignored
ExclusiveArch: %{rust_arches}
- rust-serde_json
ExclusiveArch: %{rust_arches}
- rust-serde_json0.8
ExclusiveArch: %{rust_arches}
- rust-serde_test
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_yaml
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-siphasher
ExclusiveArch: %{rust_arches}
- rust-slab
ExclusiveArch: %{rust_arches}
- rust-slab0.3
ExclusiveArch: %{rust_arches}
- rust-smallvec
ExclusiveArch: %{rust_arches}
- rust-snowflake
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sourceview
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spmc
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
ExclusiveArch: %{rust_arches}
- rust-string
ExclusiveArch: %{rust_arches}
- rust-strings
ExclusiveArch: %{rust_arches}
- rust-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
ExclusiveArch: %{rust_arches}
- rust-syn
ExclusiveArch: %{rust_arches}
- rust-syn0.11
ExclusiveArch: %{rust_arches}
- rust-syn0.13
ExclusiveArch: %{rust_arches}
- rust-synom
ExclusiveArch: %{rust_arches}
- rust-synstructure
ExclusiveArch: %{rust_arches}
- rust-synstructure0.6
ExclusiveArch: %{rust_arches}
- rust-syntect
ExclusiveArch: %{rust_arches}
- rust-sys-info
ExclusiveArch: %{rust_arches}
- rust-tabwriter
ExclusiveArch: %{rust_arches}
- rust-take
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-tempdir
ExclusiveArch: %{rust_arches}
- rust-tempfile
ExclusiveArch: %{rust_arches}
- rust-term
ExclusiveArch: %{rust_arches}
- rust-term_grid
ExclusiveArch: %{rust_arches}
- rust-term_size
ExclusiveArch: %{rust_arches}
- rust-termcolor
ExclusiveArch: %{rust_arches}
- rust-termion
ExclusiveArch: %{rust_arches}
- rust-termios
ExclusiveArch: %{rust_arches}
- rust-test-assembler
ExclusiveArch: %{rust_arches}
- rust-textwrap
ExclusiveArch: %{rust_arches}
- rust-thread-id
ExclusiveArch: %{rust_arches}
- rust-thread-scoped
ExclusiveArch: %{rust_arches}
- rust-thread_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-time
ExclusiveArch: %{rust_arches}
- rust-timerfd
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio
ExclusiveArch: %{rust_arches}
- rust-tokio-codec
ExclusiveArch: %{rust_arches}
- rust-tokio-core
ExclusiveArch: %{rust_arches}
- rust-tokio-current-thread
ExclusiveArch: %{rust_arches}
- rust-tokio-executor
ExclusiveArch: %{rust_arches}
- rust-tokio-fs
ExclusiveArch: %{rust_arches}
- rust-tokio-io
ExclusiveArch: %{rust_arches}
- rust-tokio-mockstream
ExclusiveArch: %{rust_arches}
- rust-tokio-process
ExclusiveArch: %{rust_arches}
- rust-tokio-proto
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-service
ExclusiveArch: %{rust_arches}
- rust-tokio-signal
ExclusiveArch: %{rust_arches}
- rust-tokio-tcp
ExclusiveArch: %{rust_arches}
- rust-tokio-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-toml
ExclusiveArch: %{rust_arches}
- rust-traitobject
ExclusiveArch: %{rust_arches}
- rust-try-lock
ExclusiveArch: %{rust_arches}
- rust-typeable
ExclusiveArch: %{rust_arches}
- rust-typed-arena
ExclusiveArch: %{rust_arches}
- rust-typenum
ExclusiveArch: %{rust_arches}
- rust-ucd-util
ExclusiveArch: %{rust_arches}
- rust-unicase
ExclusiveArch: %{rust_arches}
- rust-unicase1
ExclusiveArch: %{rust_arches}
- rust-unicode-bidi
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
ExclusiveArch: %{rust_arches}
- rust-unicode-width
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-unindent
ExclusiveArch: %{rust_arches}
- rust-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-unsafe-any
ExclusiveArch: %{rust_arches}
- rust-untrusted
ExclusiveArch: %{rust_arches}
- rust-url
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-ranges
ExclusiveArch: %{rust_arches}
- rust-uuid
ExclusiveArch: %{rust_arches}
- rust-varlink
ExclusiveArch: %{rust_arches}
- rust-varlink-cli
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-varlink_stdinterfaces
ExclusiveArch: %{rust_arches}
- rust-vec_map
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-void
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xz2
ExclusiveArch: %{rust_arches}
- rust-yaml-rust
ExclusiveArch: %{rust_arches}
- rust-yaml-rust0.3
ExclusiveArch: %{rust_arches}
- rust-yubibomb
ExclusiveArch: %{rust_arches}
- rust-yup-oauth2
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
ExclusiveArch: %{rust_arches}
- rust-zram-generator
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- seabios
ExclusiveArch: x86_64
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sgabios
ExclusiveArch: %{ix86} x86_64
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- stdx-allocator
ExclusiveArch: %{ldc_arches}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
- stratisd
ExclusiveArch: %{rust_arches}
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64
- syncthing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- ternimal
ExclusiveArch: %{rust_arches}
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- v8
ExclusiveArch: %{ix86} x86_64 %{arm} ppc mipsel mips64el
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{valgrind_arches}
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- webkit2-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x86info
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: %{ix86} x86_64 armv7hl aarch64
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
5 years, 8 months
Architecture specific change in rpms/llvm.git
by githook-noreply@fedoraproject.org
The package rpms/llvm.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/llvm.git/commit/?id=9b2b71b9357b8....
Change:
+%ifarch %gold_arches
Thanks.
Full change:
============
commit 9b2b71b9357b83c344ba71edb2f831df52e433a5
Author: Tom Stellard <tstellar(a)redhat.com>
Date: Wed Aug 29 03:46:42 2018 +0000
Build the gold plugin on all supported architectures
rhbz#1623305
diff --git a/llvm.spec b/llvm.spec
index f100956..9b2cd13 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -1,5 +1,6 @@
# Components enabled if supported by target architecture:
-%ifarch %ix86 x86_64
+%define gold_arches %ix86 x86_64 %arm aarch64 %{power64} s390x
+%ifarch %gold_arches
%bcond_without gold
%else
%bcond_with gold
@@ -30,7 +31,7 @@
Name: %{pkg_name}
Version: %{maj_ver}.%{min_ver}.%{patch_ver}
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: The Low Level Virtual Machine
License: NCSA
@@ -314,6 +315,9 @@ fi
%endif
%changelog
+* Wed Aug 29 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-7
+- Build the gold plugin on all supported architectures
+
* Mon Aug 06 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-6
- Backport some fixes needed by mesa and rust
5 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.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-aarch32.git/co....
Change:
-%ifarch %{aarch64}
Thanks.
Full change:
============
commit d6f9d063833af31676df653da8f9b24fecfbbd86
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Sep 4 20:15:12 2018 +0000
8u181 update
diff --git a/.gitignore b/.gitignore
index 308ced8..7c80fdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/aarch32-port-jdk8u-jdk8u152-b17-aarch32-171102.tar.xz
/aarch32-port-jdk8u-jdk8u161-b12-aarch32-180220.tar.xz
/aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz
+/aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz
diff --git a/8035496-hotspot.patch b/8035496-hotspot.patch
deleted file mode 100644
index 426bdbe..0000000
--- a/8035496-hotspot.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-# HG changeset patch
-# User bdelsart
-# Date 1508481469 -28800
-# Fri Oct 20 14:37:49 2017 +0800
-# Node ID 111ed1a4719008b83bf427ae16bbeac2a7a516bc
-# Parent 471de666658d7ec14c5d3f97076fb95f70dd6ffa
-8035496: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0
-Summary: release_store used when registering a PerRegionTable. Also reviewed-by: vitalyd(a)gmail.com
-Reviewed-by: jmasa, tschatzl, brutisso
-
-diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-@@ -514,7 +514,15 @@
-
- PerRegionTable* first_prt = _fine_grain_regions[ind];
- prt->set_collision_list_next(first_prt);
-- _fine_grain_regions[ind] = prt;
-+ // The assignment into _fine_grain_regions allows the prt to
-+ // start being used concurrently. In addition to
-+ // collision_list_next which must be visible (else concurrent
-+ // parsing of the list, if any, may fail to see other entries),
-+ // the content of the prt must be visible (else for instance
-+ // some mark bits may not yet seem cleared or a 'later' update
-+ // performed by a concurrent thread could be undone when the
-+ // zeroing becomes visible). This requires store ordering.
-+ OrderAccess::release_store_ptr((volatile PerRegionTable*)&_fine_grain_regions[ind], prt);
- _n_fine_entries++;
-
- if (G1HRRSUseSparseTable) {
diff --git a/8062808-pr3548.patch b/8062808-pr3548.patch
new file mode 100644
index 0000000..e91abd3
--- /dev/null
+++ b/8062808-pr3548.patch
@@ -0,0 +1,191 @@
+# HG changeset patch
+# User stefank
+# Date 1525453613 -3600
+# Fri May 04 18:06:53 2018 +0100
+# Node ID 07a1135a327362f157955d470fad5df07cc35164
+# Parent de79964656fc652f2085dac4fe99bcc128b5a3b1
+8062808, PR3548: Turn on the -Wreturn-type warning
+Reviewed-by: mgerdin, tschatzl, coleenp, jrose, kbarrett
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
++++ openjdk/hotspot/make/linux/makefiles/gcc.make
+@@ -210,7 +210,7 @@
+ WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
+ endif
+
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
++WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wreturn-type
+
+ ifeq ($(USE_CLANG),)
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+diff --git openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+--- openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad
++++ openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+@@ -1250,6 +1250,7 @@
+
+
+ Unimplemented();
++ return 0; // Mute compiler
+ }
+
+ #ifndef PRODUCT
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -541,6 +541,7 @@
+ err.report_and_die();
+
+ ShouldNotReachHere();
++ return true; // Mute compiler
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp
++++ openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+@@ -506,7 +506,7 @@
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+ Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
+@@ -521,7 +521,7 @@
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ }
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp
++++ openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+@@ -249,7 +249,7 @@
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+ // Otherwise, add to symbol to table
+- return the_table()->basic_add(index, (u1*)name, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)name, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup(const Symbol* sym, int begin, int end, TRAPS) {
+@@ -288,7 +288,7 @@
+ // Grab SymbolTable_lock first.
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+- return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup_only(const char* name, int len,
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp
++++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+@@ -229,15 +229,15 @@
+ class_name->as_C_string(),
+ class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string()));
+ if (FieldType::is_array(class_name)) {
+- return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ } else if (FieldType::is_obj(class_name)) {
+ ResourceMark rm(THREAD);
+ // Ignore wrapping L and ;.
+ TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
+ class_name->utf8_length() - 2, CHECK_NULL);
+- return resolve_instance_class_or_null(name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
+ } else {
+- return resolve_instance_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp
++++ openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+@@ -367,7 +367,7 @@
+ _csv_format(csv_format), _print_help(print_help),
+ _print_class_stats(print_class_stats), _columns(columns) {}
+ void heap_inspection(outputStream* st) NOT_SERVICES_RETURN;
+- size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN;
++ size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN_(0);
+ static void find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) NOT_SERVICES_RETURN;
+ private:
+ void iterate_over_heap(KlassInfoTable* cit, BoolObjectClosure* filter = NULL);
+diff --git openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp
++++ openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+@@ -93,7 +93,7 @@
+ static void preload_and_dump(TRAPS) NOT_CDS_RETURN;
+ static int preload_and_dump(const char * class_list_path,
+ GrowableArray<Klass*>* class_promote_order,
+- TRAPS) NOT_CDS_RETURN;
++ TRAPS) NOT_CDS_RETURN_(0);
+
+ static ReservedSpace* shared_rs() {
+ CDS_ONLY(return _shared_rs);
+diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+--- openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp
++++ openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+@@ -352,7 +352,7 @@
+
+ Klass* klass_at(int which, TRAPS) {
+ constantPoolHandle h_this(THREAD, this);
+- return klass_at_impl(h_this, which, CHECK_NULL);
++ return klass_at_impl(h_this, which, THREAD);
+ }
+
+ Symbol* klass_name_at(int which); // Returns the name, w/o resolving.
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -4244,7 +4244,7 @@
+ JVM_DTraceProvider* providers))
+ JVMWrapper("JVM_DTraceActivate");
+ return DTraceJSDT::activate(
+- version, module_name, providers_count, providers, CHECK_0);
++ version, module_name, providers_count, providers, THREAD);
+ JVM_END
+
+ JVM_ENTRY(jboolean,JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method))
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp
++++ openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+@@ -1093,7 +1093,7 @@
+ } else {
+ if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT)
+ narrow((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
+- return box((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
++ return box((jvalue*) result.get_value_addr(), rtype, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+@@ -1046,7 +1046,7 @@
+ // last java frame on stack (which includes native call frames)
+ vframeStream vfst(thread, true); // Do not skip and javaCalls
+
+- return find_callee_info_helper(thread, vfst, bc, callinfo, CHECK_(Handle()));
++ return find_callee_info_helper(thread, vfst, bc, callinfo, THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp openjdk/hotspot/src/share/vm/services/memTracker.hpp
+--- openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp
++++ openjdk/hotspot/src/share/vm/services/memTracker.hpp
+@@ -64,7 +64,7 @@
+ const NativeCallStack& stack, MEMFLAGS flag = mtNone) { }
+ static inline void record_virtual_memory_commit(void* addr, size_t size, const NativeCallStack& stack) { }
+ static inline Tracker get_virtual_memory_uncommit_tracker() { return Tracker(); }
+- static inline Tracker get_virtual_memory_release_tracker() { }
++ static inline Tracker get_virtual_memory_release_tracker() { return Tracker(); }
+ static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) { }
+ static inline void record_thread_stack(void* addr, size_t size) { }
+ static inline void release_thread_stack(void* addr, size_t size) { }
diff --git a/8064786-pr3599.patch b/8064786-pr3599.patch
new file mode 100644
index 0000000..790ee0d
--- /dev/null
+++ b/8064786-pr3599.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User goetz
+# Date 1415873641 -3600
+# Thu Nov 13 11:14:01 2014 +0100
+# Node ID 1878c4c1d04e1f3c6f67a19d36c35863d6b5f906
+# Parent 533473c67de6ff767710594639033c8e83523fe5
+8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Reviewed-by: stefank, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp
+@@ -708,6 +708,7 @@
+
+ THROW_OOP_(JNIHandles::resolve(obj), JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+ #ifndef USDT2
+@@ -734,6 +735,7 @@
+ Handle protection_domain (THREAD, k->protection_domain());
+ THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+
diff --git a/8075942-pr3602-rh1582032.patch b/8075942-pr3602-rh1582032.patch
new file mode 100644
index 0000000..bd2a40e
--- /dev/null
+++ b/8075942-pr3602-rh1582032.patch
@@ -0,0 +1,95 @@
+# HG changeset patch
+# User prr
+# Date 1429299166 25200
+# Fri Apr 17 12:32:46 2015 -0700
+# Node ID 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+# Parent 533117ae5b7587c8d9c0612581682ab984475430
+8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Reviewed-by: flar, lbourges
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+@@ -146,7 +146,7 @@
+ if (dashOn) {
+ if (starting) {
+ firstSegmentsBuffer = Helpers.widenArray(firstSegmentsBuffer,
+- firstSegidx, type - 2);
++ firstSegidx, type - 2 + 1);
+ firstSegmentsBuffer[firstSegidx++] = type;
+ System.arraycopy(pts, off, firstSegmentsBuffer, firstSegidx, type - 2);
+ firstSegidx += type - 2;
+diff --git a/test/javopenjdk.orig/jdk/awt/BasicStroke/DashStrokeTest.java openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2015, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ * @test
++ * @bug 8075942
++ * @summary test there is no exception rendering a dashed stroke
++ * @run DashStrokeTest
++ * @run -Dsun.java2d.renderer=sun.java2d.pisces.PiscesRenderingEngine
++ */
++
++import java.awt.BasicStroke;
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.Stroke;
++import java.awt.geom.GeneralPath;
++import java.awt.image.BufferedImage;
++
++
++public class DashStrokeTest {
++
++ public static void main(String[] args) {
++
++ GeneralPath shape = new GeneralPath();
++ int[] pointTypes = {0, 0, 1, 1, 0, 1, 1, 0};
++ double[] xpoints = {428, 420, 400, 400, 400, 400, 420, 733};
++ double[] ypoints = {180, 180, 180, 160, 30, 10, 10, 10};
++ shape.moveTo(xpoints[0], ypoints[0]);
++ for (int i = 1; i < pointTypes.length; i++) {
++ if (pointTypes[i] == 1 && i < pointTypes.length - 1) {
++ shape.quadTo(xpoints[i], ypoints[i],
++ xpoints[i + 1], ypoints[i + 1]);
++ } else {
++ shape.lineTo(xpoints[i], ypoints[i]);
++ }
++ }
++
++ BufferedImage image = new
++ BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
++ Graphics2D g2 = image.createGraphics();
++
++ Color color = new Color(124, 0, 124, 255);
++ g2.setColor(color);
++ Stroke stroke = new BasicStroke(1.0f,
++ BasicStroke.CAP_BUTT,
++ BasicStroke.JOIN_BEVEL,
++ 10.0f, new float[] {9, 6}, 0.0f);
++ g2.setStroke(stroke);
++ g2.draw(shape);
++ }
++}
diff --git a/8141570-pr3548.patch b/8141570-pr3548.patch
new file mode 100644
index 0000000..f1e3215
--- /dev/null
+++ b/8141570-pr3548.patch
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User coleenp
+# Date 1525713256 -3600
+# Mon May 07 18:14:16 2018 +0100
+# Node ID bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+# Parent 07a1135a327362f157955d470fad5df07cc35164
+8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Summary: change to include atomic.inline.hpp and allocation.inline.hpp only in .cpp files and some build fixes from Kim to build on ubuntu without devkits
+Reviewed-by: kbarrett, sgehwolf, erikj
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -25,8 +25,15 @@
+
+ # Setup common to Zero (non-Shark) and Shark versions of VM
+
+-# override this from the main file because some version of llvm do not like -Wundef
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
++# Some versions of llvm do not like -Wundef
++ifeq ($(USE_CLANG), true)
++ WARNING_FLAGS += -Wno-undef
++endif
++# Suppress some warning flags that are normally turned on for hotspot,
++# because some of the zero code has not been updated accordingly.
++WARNING_FLAGS += -Wno-return-type \
++ -Wno-format-nonliteral -Wno-format-security \
++ -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+@@ -42,5 +49,3 @@
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS += -D_LP64=1
+ endif
+-
+-OPT_CFLAGS/compactingPermGenGen.o = -O1
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp
++++ openjdk/hotspot/src/share/vm/runtime/java.cpp
+@@ -45,6 +45,7 @@
+ #include "runtime/arguments.hpp"
+ #include "runtime/biasedLocking.hpp"
+ #include "runtime/compilationPolicy.hpp"
++#include "runtime/deoptimization.hpp"
+ #include "runtime/fprofiler.hpp"
+ #include "runtime/init.hpp"
+ #include "runtime/interfaceSupport.hpp"
diff --git a/8143245-pr3548.patch b/8143245-pr3548.patch
new file mode 100644
index 0000000..eccb110
--- /dev/null
+++ b/8143245-pr3548.patch
@@ -0,0 +1,154 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1525714161 -3600
+# Mon May 07 18:29:21 2018 +0100
+# Node ID afb31413c73cbc06420fdb447aa90a7a38258904
+# Parent bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+8143245, PR3548: Zero build requires disabled warnings
+Reviewed-by: dholmes, coleenp
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -29,11 +29,6 @@
+ ifeq ($(USE_CLANG), true)
+ WARNING_FLAGS += -Wno-undef
+ endif
+-# Suppress some warning flags that are normally turned on for hotspot,
+-# because some of the zero code has not been updated accordingly.
+-WARNING_FLAGS += -Wno-return-type \
+- -Wno-format-nonliteral -Wno-format-security \
+- -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+@@ -100,7 +100,7 @@
+ case T_DOUBLE:
+ case T_VOID:
+ return result;
+- default : ShouldNotReachHere();
++ default : ShouldNotReachHere(); return NULL_WORD;
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -62,7 +62,7 @@
+ }
+
+ void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
+- ffi_type *ftype;
++ ffi_type *ftype = NULL;
+ switch (type) {
+ case T_VOID:
+ ftype = &ffi_type_void;
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
++ * Copyright 2016 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -61,6 +61,7 @@
+
+ frame os::get_sender_for_C_frame(frame* fr) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warning.
+ }
+
+ frame os::current_frame() {
+@@ -98,16 +99,19 @@
+
+ address os::Linux::ucontext_get_pc(ucontext_t* uc) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
+ intptr_t** ret_sp,
+ intptr_t** ret_fp) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ frame os::fetch_frame_from_context(void* ucVoid) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warnings
+ }
+
+ extern "C" JNIEXPORT int
+@@ -247,11 +251,16 @@
+ }
+ #endif // !PRODUCT
+
+- const char *fmt = "caught unhandled signal %d";
+ char buf[64];
+
+- sprintf(buf, fmt, sig);
++ sprintf(buf, "caught unhandled signal %d", sig);
++
++// Silence -Wformat-security warning for fatal()
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
+ fatal(buf);
++PRAGMA_DIAG_POP
++ return true; // silence compiler warnings
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+@@ -260,6 +269,7 @@
+
+ int os::Linux::get_fpu_control_word() {
+ ShouldNotCallThis();
++ return -1; // silence compile warnings
+ }
+
+ void os::Linux::set_fpu_control_word(int fpu) {
+@@ -408,6 +418,7 @@
+
+ extern "C" {
+ int SpinPause() {
++ return -1; // silence compile warnings
+ }
+
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -110,6 +110,7 @@
+ void* ucontext,
+ bool isInJava) {
+ ShouldNotCallThis();
++ return false; // silence compile warning
+ }
+
+ // These routines are only used on cpu architectures that
diff --git a/8146115-pr3508-rh1463098.patch b/8146115-pr3508-rh1463098.patch
new file mode 100644
index 0000000..a04728b
--- /dev/null
+++ b/8146115-pr3508-rh1463098.patch
@@ -0,0 +1,1494 @@
+# HG changeset patch
+# User poonam
+# Date 1530903013 0
+# Fri Jul 06 18:50:13 2018 +0000
+# Node ID 2f2d2af6fa5c44e67e0a9987f56392315a1e4b64
+# Parent 95b72537801cc9946c27ad27f07e3f0790a21b08
+8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Reviewed-by: bobv, dbuck
+
+diff --git openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+--- openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp
++++ openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+@@ -4008,6 +4008,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
+ assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
+ return online_cpus;
+diff --git openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+--- openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp
++++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+@@ -3770,6 +3770,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ return _processor_count;
+ }
+
+diff --git openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2018, 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
+@@ -49,8 +49,13 @@
+ product(bool, UseSHM, false, \
+ "Use SYSV shared memory for large pages") \
+ \
+- diagnostic(bool, PrintActiveCpus, false, \
+- "Print the number of CPUs detected in os::active_processor_count")
++ product(bool, UseContainerSupport, true, \
++ "Enable detection and runtime container configuration support") \
++ \
++ product(bool, PreferContainerQuotaForCPUCount, true, \
++ "Calculate the container CPU availability based on the value" \
++ " of quotas (if set), when true. Otherwise, use the CPU" \
++ " shares value, provided it is less than quota.")
+
+ //
+ // Defines Linux-specific default values. The flags are available on all
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.cpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+@@ -0,0 +1,680 @@
++/*
++ * Copyright (c) 2017, 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#include <string.h>
++#include <math.h>
++#include <errno.h>
++#include "utilities/globalDefinitions.hpp"
++#include "memory/allocation.hpp"
++#include "runtime/os.hpp"
++#include "osContainer_linux.hpp"
++
++#define PER_CPU_SHARES 1024
++
++bool OSContainer::_is_initialized = false;
++bool OSContainer::_is_containerized = false;
++julong _unlimited_memory;
++
++class CgroupSubsystem: CHeapObj<mtInternal> {
++ friend class OSContainer;
++
++ private:
++ /* mountinfo contents */
++ char *_root;
++ char *_mount_point;
++
++ /* Constructed subsystem directory */
++ char *_path;
++
++ public:
++ CgroupSubsystem(char *root, char *mountpoint) {
++ _root = os::strdup(root);
++ _mount_point = os::strdup(mountpoint);
++ _path = NULL;
++ }
++
++ /*
++ * Set directory to subsystem specific files based
++ * on the contents of the mountinfo and cgroup files.
++ */
++ void set_subsystem_path(char *cgroup_path) {
++ char buf[MAXPATHLEN+1];
++ if (_root != NULL && cgroup_path != NULL) {
++ if (strcmp(_root, "/") == 0) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ if (strcmp(cgroup_path,"/") != 0) {
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path, MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ }
++ _path = os::strdup(buf);
++ } else {
++ if (strcmp(_root, cgroup_path) == 0) {
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ } else {
++ char *p = strstr(_root, cgroup_path);
++ if (p != NULL && p == _root) {
++ if (strlen(cgroup_path) > strlen(_root)) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path + strlen(_root), MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ }
++ }
++ }
++ }
++ }
++ }
++
++ char *subsystem_path() { return _path; }
++};
++
++CgroupSubsystem* memory = NULL;
++CgroupSubsystem* cpuset = NULL;
++CgroupSubsystem* cpu = NULL;
++CgroupSubsystem* cpuacct = NULL;
++
++typedef char * cptr;
++
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
++template <typename T> int subsystem_file_contents(CgroupSubsystem* c,
++ const char *filename,
++ const char *scan_fmt,
++ T returnval) {
++ FILE *fp = NULL;
++ char *p;
++ char file[MAXPATHLEN+1];
++ char buf[MAXPATHLEN+1];
++
++ if (c == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: CgroupSubsytem* is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++ if (c->subsystem_path() == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: subsystem path is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++
++ strncpy(file, c->subsystem_path(), MAXPATHLEN);
++ file[MAXPATHLEN-1] = '\0';
++ int filelen = strlen(file);
++ if ((filelen + strlen(filename)) > (MAXPATHLEN-1)) {
++ if (PrintContainerInfo) {
++ tty->print_cr("File path too long %s, %s", file, filename);
++ }
++ return OSCONTAINER_ERROR;
++ }
++ strncat(file, filename, MAXPATHLEN-filelen);
++ if (PrintContainerInfo) {
++ tty->print_cr("Path to %s is %s", filename, file);
++ }
++ fp = fopen(file, "r");
++ if (fp != NULL) {
++ p = fgets(buf, MAXPATHLEN, fp);
++ if (p != NULL) {
++ int matched = sscanf(p, scan_fmt, returnval);
++ if (matched == 1) {
++ fclose(fp);
++ return 0;
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Type %s not found in file %s", scan_fmt, file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Empty file %s", file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Open of file %s failed, %s", file, strerror(errno));
++ }
++ }
++ if (fp != NULL)
++ fclose(fp);
++ return OSCONTAINER_ERROR;
++}
++PRAGMA_DIAG_POP
++
++#define GET_CONTAINER_INFO(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable) \
++ return_type variable; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ &variable); \
++ if (err != 0) \
++ return (return_type) OSCONTAINER_ERROR; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++#define GET_CONTAINER_INFO_CPTR(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable, bufsize) \
++ char variable[bufsize]; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ variable); \
++ if (err != 0) \
++ return (return_type) NULL; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++/* init
++ *
++ * Initialize the container support and determine if
++ * we are running under cgroup control.
++ */
++void OSContainer::init() {
++ int mountid;
++ int parentid;
++ int major;
++ int minor;
++ FILE *mntinfo = NULL;
++ FILE *cgroup = NULL;
++ char buf[MAXPATHLEN+1];
++ char tmproot[MAXPATHLEN+1];
++ char tmpmount[MAXPATHLEN+1];
++ char tmpbase[MAXPATHLEN+1];
++ char *p;
++ jlong mem_limit;
++
++ assert(!_is_initialized, "Initializing OSContainer more than once");
++
++ _is_initialized = true;
++ _is_containerized = false;
++
++ _unlimited_memory = (LONG_MAX / os::vm_page_size()) * os::vm_page_size();
++
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::init: Initializing Container Support");
++ }
++ if (!UseContainerSupport) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Container Support not enabled");
++ }
++ return;
++ }
++
++ /*
++ * Find the cgroup mount point for memory and cpuset
++ * by reading /proc/self/mountinfo
++ *
++ * Example for docker:
++ * 219 214 0:29 /docker/7208cebd00fa5f2e342b1094f7bed87fa25661471a4637118e65f1c995be8a34 /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,memory
++ *
++ * Example for host:
++ * 34 28 0:29 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,memory
++ */
++ mntinfo = fopen("/proc/self/mountinfo", "r");
++ if (mntinfo == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/mountinfo, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
++ // Look for the filesystem type and see if it's cgroup
++ char fstype[MAXPATHLEN+1];
++ fstype[0] = '\0';
++ char *s = strstr(p, " - ");
++ if (s != NULL &&
++ sscanf(s, " - %s", fstype) == 1 &&
++ strcmp(fstype, "cgroup") == 0) {
++
++ if (strstr(p, "memory") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ memory = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and memory: %s", p);
++ }
++ } else if (strstr(p, "cpuset") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuset = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuset: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu,cpuacct") != NULL || strstr(p, "cpuacct,cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu,cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpuacct") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu: %s", p);
++ }
++ }
++ }
++ }
++ }
++
++ fclose(mntinfo);
++
++ if (memory == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup memory subsystem not found");
++ }
++ return;
++ }
++ if (cpuset == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuset subsystem not found");
++ }
++ return;
++ }
++ if (cpu == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpu subsystem not found");
++ }
++ return;
++ }
++ if (cpuacct == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuacct subsystem not found");
++ }
++ return;
++ }
++
++ /*
++ * Read /proc/self/cgroup and map host mount point to
++ * local one via /proc/self/mountinfo content above
++ *
++ * Docker example:
++ * 5:memory:/docker/6558aed8fc662b194323ceab5b964f69cf36b3e8af877a14b80256e93aecb044
++ *
++ * Host example:
++ * 5:memory:/user.slice
++ *
++ * Construct a path to the process specific memory and cpuset
++ * cgroup directory.
++ *
++ * For a container running under Docker from memory example above
++ * the paths would be:
++ *
++ * /sys/fs/cgroup/memory
++ *
++ * For a Host from memory example above the path would be:
++ *
++ * /sys/fs/cgroup/memory/user.slice
++ *
++ */
++ cgroup = fopen("/proc/self/cgroup", "r");
++ if (cgroup == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/cgroup, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, cgroup)) != NULL) {
++ int cgno;
++ int matched;
++ char *controller;
++ char *base;
++
++ /* Skip cgroup number */
++ strsep(&p, ":");
++ /* Get controller and base */
++ controller = strsep(&p, ":");
++ base = strsep(&p, "\n");
++
++ if (controller != NULL) {
++ if (strstr(controller, "memory") != NULL) {
++ memory->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuset") != NULL) {
++ cpuset->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu,cpuacct") != NULL || strstr(controller, "cpuacct,cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuacct") != NULL) {
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ }
++ }
++ }
++
++ fclose(cgroup);
++
++ // We need to update the amount of physical memory now that
++ // command line arguments have been processed.
++ if ((mem_limit = memory_limit_in_bytes()) > 0) {
++ os::Linux::set_physical_memory(mem_limit);
++ }
++
++ _is_containerized = true;
++
++}
++
++const char * OSContainer::container_type() {
++ if (is_containerized()) {
++ return "cgroupv1";
++ } else {
++ return NULL;
++ }
++}
++
++
++/* memory_limit_in_bytes
++ *
++ * Return the limit of available memory for this process.
++ *
++ * return:
++ * memory limit in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.limit_in_bytes",
++ "Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
++
++ if (memlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ }
++ else {
++ return (jlong)memlimit;
++ }
++}
++
++jlong OSContainer::memory_and_swap_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.memsw.limit_in_bytes",
++ "Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
++ if (memswlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory and Swap Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memswlimit;
++ }
++}
++
++jlong OSContainer::memory_soft_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.soft_limit_in_bytes",
++ "Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
++ if (memsoftlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Soft Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memsoftlimit;
++ }
++}
++
++/* memory_usage_in_bytes
++ *
++ * Return the amount of used memory for this process.
++ *
++ * return:
++ * memory usage in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.usage_in_bytes",
++ "Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memusage);
++ return memusage;
++}
++
++/* memory_max_usage_in_bytes
++ *
++ * Return the maximum amount of used memory for this process.
++ *
++ * return:
++ * max memory usage in bytes or
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_max_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.max_usage_in_bytes",
++ "Maximum Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memmaxusage);
++ return memmaxusage;
++}
++
++/* active_processor_count
++ *
++ * Calculate an appropriate number of active processors for the
++ * VM to use based on these three inputs.
++ *
++ * cpu affinity
++ * cgroup cpu quota & cpu period
++ * cgroup cpu shares
++ *
++ * Algorithm:
++ *
++ * Determine the number of available CPUs from sched_getaffinity
++ *
++ * If user specified a quota (quota != -1), calculate the number of
++ * required CPUs by dividing quota by period.
++ *
++ * If shares are in effect (shares != -1), calculate the number
++ * of CPUs required for the shares by dividing the share value
++ * by PER_CPU_SHARES.
++ *
++ * All results of division are rounded up to the next whole number.
++ *
++ * If neither shares or quotas have been specified, return the
++ * number of active processors in the system.
++ *
++ * If both shares and quotas have been specified, the results are
++ * based on the flag PreferContainerQuotaForCPUCount. If true,
++ * return the quota value. If false return the smallest value
++ * between shares or quotas.
++ *
++ * If shares and/or quotas have been specified, the resulting number
++ * returned will never exceed the number of active processors.
++ *
++ * return:
++ * number of CPUs
++ */
++int OSContainer::active_processor_count() {
++ int quota_count = 0, share_count = 0;
++ int cpu_count, limit_count;
++ int result;
++
++ cpu_count = limit_count = os::Linux::active_processor_count();
++ int quota = cpu_quota();
++ int period = cpu_period();
++ int share = cpu_shares();
++
++ if (quota > -1 && period > 0) {
++ quota_count = ceilf((float)quota / (float)period);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Quota count based on quota/period: %d", quota_count);
++ }
++ }
++ if (share > -1) {
++ share_count = ceilf((float)share / (float)PER_CPU_SHARES);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Share count based on shares: %d", share_count);
++ }
++ }
++
++ // If both shares and quotas are setup results depend
++ // on flag PreferContainerQuotaForCPUCount.
++ // If true, limit CPU count to quota
++ // If false, use minimum of shares and quotas
++ if (quota_count !=0 && share_count != 0) {
++ if (PreferContainerQuotaForCPUCount) {
++ limit_count = quota_count;
++ } else {
++ limit_count = MIN2(quota_count, share_count);
++ }
++ } else if (quota_count != 0) {
++ limit_count = quota_count;
++ } else if (share_count != 0) {
++ limit_count = share_count;
++ }
++
++ result = MIN2(cpu_count, limit_count);
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::active_processor_count: %d", result);
++ }
++ return result;
++}
++
++char * OSContainer::cpu_cpuset_cpus() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.cpus",
++ "cpuset.cpus is: %s", "%1023s", cpus, 1024);
++ return os::strdup(cpus);
++}
++
++char * OSContainer::cpu_cpuset_memory_nodes() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.mems",
++ "cpuset.mems is: %s", "%1023s", mems, 1024);
++ return os::strdup(mems);
++}
++
++/* cpu_quota
++ *
++ * Return the number of milliseconds per period
++ * process is guaranteed to run.
++ *
++ * return:
++ * quota time in milliseconds
++ * -1 for no quota
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_quota() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_quota_us",
++ "CPU Quota is: %d", "%d", quota);
++ return quota;
++}
++
++int OSContainer::cpu_period() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_period_us",
++ "CPU Period is: %d", "%d", period);
++ return period;
++}
++
++/* cpu_shares
++ *
++ * Return the amount of cpu shares available to the process
++ *
++ * return:
++ * Share number (typically a number relative to 1024)
++ * (2048 typically expresses 2 CPUs worth of processing)
++ * -1 for no share setup
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_shares() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.shares",
++ "CPU Shares is: %d", "%d", shares);
++ // Convert 1024 to no shares setup
++ if (shares == 1024) return -1;
++
++ return shares;
++}
++
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.hpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+@@ -0,0 +1,68 @@
++/*
++ * Copyright (c) 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#ifndef OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++#define OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++
++#include "utilities/globalDefinitions.hpp"
++#include "utilities/macros.hpp"
++#include "memory/allocation.hpp"
++
++#define OSCONTAINER_ERROR (-2)
++
++class OSContainer: AllStatic {
++
++ private:
++ static bool _is_initialized;
++ static bool _is_containerized;
++
++ public:
++ static void init();
++ static inline bool is_containerized();
++ static const char * container_type();
++
++ static jlong memory_limit_in_bytes();
++ static jlong memory_and_swap_limit_in_bytes();
++ static jlong memory_soft_limit_in_bytes();
++ static jlong memory_usage_in_bytes();
++ static jlong memory_max_usage_in_bytes();
++
++ static int active_processor_count();
++
++ static char * cpu_cpuset_cpus();
++ static char * cpu_cpuset_memory_nodes();
++
++ static int cpu_quota();
++ static int cpu_period();
++
++ static int cpu_shares();
++
++};
++
++inline bool OSContainer::is_containerized() {
++ assert(_is_initialized, "OSContainer not initialized");
++ return _is_containerized;
++}
++
++#endif // OS_LINUX_VM_OSCONTAINER_LINUX_HPP
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -37,6 +37,7 @@
+ #include "mutex_linux.inline.hpp"
+ #include "oops/oop.inline.hpp"
+ #include "os_share_linux.hpp"
++#include "osContainer_linux.hpp"
+ #include "prims/jniFastGetField.hpp"
+ #include "prims/jvm.h"
+ #include "prims/jvm_misc.hpp"
+@@ -179,13 +180,62 @@
+ julong os::Linux::available_memory() {
+ // values in struct sysinfo are "unsigned long"
+ struct sysinfo si;
++ julong avail_mem;
++
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit, mem_usage;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ if (mem_limit > 0 && (mem_usage = OSContainer::memory_usage_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory usage failed: " JLONG_FORMAT ", using host value", mem_usage);
++ }
++ }
++
++ if (mem_limit > 0 && mem_usage > 0 ) {
++ avail_mem = mem_limit > mem_usage ? (julong)mem_limit - (julong)mem_usage : 0;
++ if (PrintContainerInfo) {
++ tty->print_cr("available container memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
++ }
++ }
++
+ sysinfo(&si);
+-
+- return (julong)si.freeram * si.mem_unit;
++ avail_mem = (julong)si.freeram * si.mem_unit;
++ if (Verbose) {
++ tty->print_cr("available memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
+ }
+
+ julong os::physical_memory() {
+- return Linux::physical_memory();
++ jlong phys_mem = 0;
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) > 0) {
++ if (PrintContainerInfo) {
++ tty->print_cr("total container memory: " JLONG_FORMAT, mem_limit);
++ }
++ return mem_limit;
++ }
++
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ phys_mem = Linux::physical_memory();
++ if (Verbose) {
++ tty->print_cr("total system memory: " JLONG_FORMAT, phys_mem);
++ }
++ return phys_mem;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -2129,6 +2179,8 @@
+ os::Posix::print_load_average(st);
+
+ os::Linux::print_full_memory_info(st);
++
++ os::Linux::print_container_info(st);
+ }
+
+ // Try to identify popular distros.
+@@ -2194,6 +2246,57 @@
+ st->cr();
+ }
+
++void os::Linux::print_container_info(outputStream* st) {
++if (!OSContainer::is_containerized()) {
++ return;
++ }
++
++ st->print("container (cgroup) information:\n");
++
++ const char *p_ct = OSContainer::container_type();
++ st->print("container_type: %s\n", p_ct != NULL ? p_ct : "failed");
++
++ char *p = OSContainer::cpu_cpuset_cpus();
++ st->print("cpu_cpuset_cpus: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ p = OSContainer::cpu_cpuset_memory_nodes();
++ st->print("cpu_memory_nodes: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ int i = OSContainer::active_processor_count();
++ if (i > 0) {
++ st->print("active_processor_count: %d\n", i);
++ } else {
++ st->print("active_processor_count: failed\n");
++ }
++
++ i = OSContainer::cpu_quota();
++ st->print("cpu_quota: %d\n", i);
++
++ i = OSContainer::cpu_period();
++ st->print("cpu_period: %d\n", i);
++
++ i = OSContainer::cpu_shares();
++ st->print("cpu_shares: %d\n", i);
++
++ jlong j = OSContainer::memory_limit_in_bytes();
++ st->print("memory_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_and_swap_limit_in_bytes();
++ st->print("memory_and_swap_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_soft_limit_in_bytes();
++ st->print("memory_soft_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_usage_in_bytes();
++ st->print("memory_usage_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_max_usage_in_bytes();
++ st->print("memory_max_usage_in_bytes: " JLONG_FORMAT "\n", j);
++ st->cr();
++}
++
+ void os::print_memory_info(outputStream* st) {
+
+ st->print("Memory:");
+@@ -4966,6 +5069,10 @@
+ }
+ }
+
++void os::pd_init_container_support() {
++ OSContainer::init();
++}
++
+ // this is called _after_ the global arguments have been parsed
+ jint os::init_2(void)
+ {
+@@ -5146,7 +5253,7 @@
+ // sched_getaffinity gives an accurate answer as it accounts for cpusets.
+ // If anything goes wrong we fallback to returning the number of online
+ // processors - which can be greater than the number available to the process.
+-int os::active_processor_count() {
++int os::Linux::active_processor_count() {
+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
+ int cpus_size = sizeof(cpu_set_t);
+ int cpu_count = 0;
+@@ -5164,10 +5271,48 @@
+ "which may exceed available processors", strerror(errno), cpu_count);
+ }
+
+- assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
++ assert(cpu_count > 0 && cpu_count <= os::processor_count(), "sanity check");
+ return cpu_count;
+ }
+
++// Determine the active processor count from one of
++// three different sources:
++//
++// 1. User option -XX:ActiveProcessorCount
++// 2. kernel os calls (sched_getaffinity or sysconf(_SC_NPROCESSORS_ONLN)
++// 3. extracted from cgroup cpu subsystem (shares and quotas)
++//
++// Option 1, if specified, will always override.
++// If the cgroup subsystem is active and configured, we
++// will return the min of the cgroup and option 2 results.
++// This is required since tools, such as numactl, that
++// alter cpu affinity do not update cgroup subsystem
++// cpuset configuration files.
++int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
++ int active_cpus;
++ if (OSContainer::is_containerized()) {
++ active_cpus = OSContainer::active_processor_count();
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: determined by OSContainer: %d",
++ active_cpus);
++ }
++ } else {
++ active_cpus = os::Linux::active_processor_count();
++ }
++
++ return active_cpus;
++}
++
+ void os::set_native_thread_name(const char *name) {
+ // Not yet implemented.
+ return;
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+@@ -35,6 +35,7 @@
+
+ class Linux {
+ friend class os;
++ friend class OSContainer;
+ friend class TestReserveMemorySpecial;
+
+ // For signal-chaining
+@@ -79,6 +80,9 @@
+
+ static julong available_memory();
+ static julong physical_memory() { return _physical_memory; }
++ static void set_physical_memory(julong phys_mem) { _physical_memory = phys_mem; }
++ static int active_processor_count();
++
+ static void initialize_system_info();
+
+ static int commit_memory_impl(char* addr, size_t bytes, bool exec);
+@@ -116,6 +120,7 @@
+ static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
+
+ static void print_full_memory_info(outputStream* st);
++ static void print_container_info(outputStream* st);
+ static void print_distro_info(outputStream* st);
+ static void print_libversion_info(outputStream* st);
+
+diff --git openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+--- openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+@@ -357,6 +357,16 @@
+ }
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (Verbose) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ pid_t pid = getpid();
+ psetid_t pset = PS_NONE;
+diff --git openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+--- openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp
++++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+@@ -716,6 +716,16 @@
+ #endif
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ DWORD_PTR lpProcessAffinityMask = 0;
+ DWORD_PTR lpSystemAffinityMask = 0;
+ int proc_count = processor_count();
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -1801,20 +1801,34 @@
+ }
+ }
+
++ // Convert Fraction to Precentage values
++ if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MaxRAMFraction))
++ MaxRAMPercentage = 100.0 / MaxRAMFraction;
++
++ if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MinRAMFraction))
++ MinRAMPercentage = 100.0 / MinRAMFraction;
++
++ if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
++ !FLAG_IS_DEFAULT(InitialRAMFraction))
++ InitialRAMPercentage = 100.0 / InitialRAMFraction;
++
+ // If the maximum heap size has not been set with -Xmx,
+ // then set it as fraction of the size of physical memory,
+ // respecting the maximum and minimum sizes of the heap.
+ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- julong reasonable_max = phys_mem / MaxRAMFraction;
+-
+- if (phys_mem <= MaxHeapSize * MinRAMFraction) {
++ julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
++ const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
++ if (reasonable_min < MaxHeapSize) {
+ // Small physical memory, so use a minimum fraction of it for the heap
+- reasonable_max = phys_mem / MinRAMFraction;
++ reasonable_max = reasonable_min;
+ } else {
+ // Not-small physical memory, so require a heap at least
+ // as large as MaxHeapSize
+ reasonable_max = MAX2(reasonable_max, (julong)MaxHeapSize);
+ }
++
+ if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
+ // Limit the heap size to ErgoHeapSizeLimit
+ reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
+@@ -1856,7 +1870,7 @@
+ reasonable_minimum = limit_by_allocatable_memory(reasonable_minimum);
+
+ if (InitialHeapSize == 0) {
+- julong reasonable_initial = phys_mem / InitialRAMFraction;
++ julong reasonable_initial = (julong)((phys_mem * InitialRAMPercentage) / 100);
+
+ reasonable_initial = MAX3(reasonable_initial, reasonable_minimum, (julong)min_heap_size());
+ reasonable_initial = MIN2(reasonable_initial, (julong)MaxHeapSize);
+@@ -1881,6 +1895,94 @@
+ }
+ }
+
++// This option inspects the machine and attempts to set various
++// parameters to be optimal for long-running, memory allocation
++// intensive jobs. It is intended for machines with large
++// amounts of cpu and memory.
++jint Arguments::set_aggressive_heap_flags() {
++ // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
++ // VM, but we may not be able to represent the total physical memory
++ // available (like having 8gb of memory on a box but using a 32bit VM).
++ // Thus, we need to make sure we're using a julong for intermediate
++ // calculations.
++ julong initHeapSize;
++ julong total_memory = os::physical_memory();
++
++ if (total_memory < (julong) 256 * M) {
++ jio_fprintf(defaultStream::error_stream(),
++ "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
++ vm_exit(1);
++ }
++
++ // The heap size is half of available memory, or (at most)
++ // all of possible memory less 160mb (leaving room for the OS
++ // when using ISM). This is the maximum; because adaptive sizing
++ // is turned on below, the actual space used may be smaller.
++
++ initHeapSize = MIN2(total_memory / (julong) 2,
++ total_memory - (julong) 160 * M);
++
++ initHeapSize = limit_by_allocatable_memory(initHeapSize);
++
++ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
++ FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
++ FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
++ // Currently the minimum size and the initial heap sizes are the same.
++ set_min_heap_size(initHeapSize);
++ }
++ if (FLAG_IS_DEFAULT(NewSize)) {
++ // Make the young generation 3/8ths of the total heap.
++ FLAG_SET_CMDLINE(uintx, NewSize,
++ ((julong) MaxHeapSize / (julong) 8) * (julong) 3);
++ FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
++ }
++
++#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
++ FLAG_SET_DEFAULT(UseLargePages, true);
++#endif
++
++ // Increase some data structure sizes for efficiency
++ FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
++ FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
++ FLAG_SET_CMDLINE(uintx, TLABSize, 256 * K);
++
++ // See the OldPLABSize comment below, but replace 'after promotion'
++ // with 'after copying'. YoungPLABSize is the size of the survivor
++ // space per-gc-thread buffers. The default is 4kw.
++ FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256 * K); // Note: this is in words
++
++ // OldPLABSize is the size of the buffers in the old gen that
++ // UseParallelGC uses to promote live data that doesn't fit in the
++ // survivor spaces. At any given time, there's one for each gc thread.
++ // The default size is 1kw. These buffers are rarely used, since the
++ // survivor spaces are usually big enough. For specjbb, however, there
++ // are occasions when there's lots of live data in the young gen
++ // and we end up promoting some of it. We don't have a definite
++ // explanation for why bumping OldPLABSize helps, but the theory
++ // is that a bigger PLAB results in retaining something like the
++ // original allocation order after promotion, which improves mutator
++ // locality. A minor effect may be that larger PLABs reduce the
++ // number of PLAB allocation events during gc. The value of 8kw
++ // was arrived at by experimenting with specjbb.
++ FLAG_SET_CMDLINE(uintx, OldPLABSize, 8 * K); // Note: this is in words
++
++ // Enable parallel GC and adaptive generation sizing
++ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
++
++ // Encourage steady state memory management
++ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
++
++ // This appears to improve mutator locality
++ FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
++
++ // Get around early Solaris scheduling bug
++ // (affinity vs other jobs on system)
++ // but disallow DR and offlining (5008695).
++ FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
++
++ return JNI_OK;
++}
++
+ // This must be called after ergonomics because we want bytecode rewriting
+ // if the server compiler is used, or if UseSharedSpaces is disabled.
+ void Arguments::set_bytecode_flags() {
+@@ -2644,6 +2746,14 @@
+ return result;
+ }
+
++ // We need to ensure processor and memory resources have been properly
++ // configured - which may rely on arguments we just processed - before
++ // doing the final argument processing. Any argument processing that
++ // needs to know about processor and memory resources must occur after
++ // this point.
++
++ os::init_container_support();
++
+ // Do final processing now that all arguments have been parsed
+ result = finalize_vm_init_args(&scp, scp_assembly_required);
+ if (result != JNI_OK) {
+@@ -3117,94 +3227,6 @@
+ _exit_hook = CAST_TO_FN_PTR(exit_hook_t, option->extraInfo);
+ } else if (match_option(option, "abort", &tail)) {
+ _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo);
+- // -XX:+AggressiveHeap
+- } else if (match_option(option, "-XX:+AggressiveHeap", &tail)) {
+-
+- // This option inspects the machine and attempts to set various
+- // parameters to be optimal for long-running, memory allocation
+- // intensive jobs. It is intended for machines with large
+- // amounts of cpu and memory.
+-
+- // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
+- // VM, but we may not be able to represent the total physical memory
+- // available (like having 8gb of memory on a box but using a 32bit VM).
+- // Thus, we need to make sure we're using a julong for intermediate
+- // calculations.
+- julong initHeapSize;
+- julong total_memory = os::physical_memory();
+-
+- if (total_memory < (julong)256*M) {
+- jio_fprintf(defaultStream::error_stream(),
+- "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
+- vm_exit(1);
+- }
+-
+- // The heap size is half of available memory, or (at most)
+- // all of possible memory less 160mb (leaving room for the OS
+- // when using ISM). This is the maximum; because adaptive sizing
+- // is turned on below, the actual space used may be smaller.
+-
+- initHeapSize = MIN2(total_memory / (julong)2,
+- total_memory - (julong)160*M);
+-
+- initHeapSize = limit_by_allocatable_memory(initHeapSize);
+-
+- if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
+- FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
+- // Currently the minimum size and the initial heap sizes are the same.
+- set_min_heap_size(initHeapSize);
+- }
+- if (FLAG_IS_DEFAULT(NewSize)) {
+- // Make the young generation 3/8ths of the total heap.
+- FLAG_SET_CMDLINE(uintx, NewSize,
+- ((julong)MaxHeapSize / (julong)8) * (julong)3);
+- FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
+- }
+-
+-#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
+- FLAG_SET_DEFAULT(UseLargePages, true);
+-#endif
+-
+- // Increase some data structure sizes for efficiency
+- FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
+- FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
+- FLAG_SET_CMDLINE(uintx, TLABSize, 256*K);
+-
+- // See the OldPLABSize comment below, but replace 'after promotion'
+- // with 'after copying'. YoungPLABSize is the size of the survivor
+- // space per-gc-thread buffers. The default is 4kw.
+- FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words
+-
+- // OldPLABSize is the size of the buffers in the old gen that
+- // UseParallelGC uses to promote live data that doesn't fit in the
+- // survivor spaces. At any given time, there's one for each gc thread.
+- // The default size is 1kw. These buffers are rarely used, since the
+- // survivor spaces are usually big enough. For specjbb, however, there
+- // are occasions when there's lots of live data in the young gen
+- // and we end up promoting some of it. We don't have a definite
+- // explanation for why bumping OldPLABSize helps, but the theory
+- // is that a bigger PLAB results in retaining something like the
+- // original allocation order after promotion, which improves mutator
+- // locality. A minor effect may be that larger PLABs reduce the
+- // number of PLAB allocation events during gc. The value of 8kw
+- // was arrived at by experimenting with specjbb.
+- FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words
+-
+- // Enable parallel GC and adaptive generation sizing
+- FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+-
+- // Encourage steady state memory management
+- FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+-
+- // This appears to improve mutator locality
+- FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
+-
+- // Get around early Solaris scheduling bug
+- // (affinity vs other jobs on system)
+- // but disallow DR and offlining (5008695).
+- FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
+-
+ } else if (match_option(option, "-XX:+NeverTenure", &tail)) {
+ // The last option must always win.
+ FLAG_SET_CMDLINE(bool, AlwaysTenure, false);
+@@ -3605,6 +3627,15 @@
+ return JNI_ERR;
+ }
+
++ // This must be done after all arguments have been processed
++ // and the container support has been initialized since AggressiveHeap
++ // relies on the amount of total memory available.
++ if (AggressiveHeap) {
++ jint result = set_aggressive_heap_flags();
++ if (result != JNI_OK) {
++ return result;
++ }
++ }
+ // This must be done after all arguments have been processed.
+ // java_compiler() true means set to "NONE" or empty.
+ if (java_compiler() && !xdebug_mode()) {
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -365,6 +365,8 @@
+ // Aggressive optimization flags.
+ static void set_aggressive_opts_flags();
+
++ static jint set_aggressive_heap_flags();
++
+ // Argument parsing
+ static void do_pd_flag_adjustments();
+ static bool parse_argument(const char* arg, Flag::Flags origin);
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
+@@ -2076,13 +2076,23 @@
+ product_pd(uint64_t, MaxRAM, \
+ "Real memory size (in bytes) used to set maximum heap size") \
+ \
++ product(bool, AggressiveHeap, false, \
++ "Optimize heap options for long-running memory intensive apps") \
++ \
+ product(uintx, ErgoHeapSizeLimit, 0, \
+ "Maximum ergonomically set heap size (in bytes); zero means use " \
+- "MaxRAM / MaxRAMFraction") \
++ "MaxRAM * MaxRAMPercentage / 100") \
+ \
+ experimental(bool, UseCGroupMemoryLimitForHeap, false, \
+ "Use CGroup memory limit as physical memory limit for heap " \
+- "sizing") \
++ "sizing" \
++ "Deprecated, replaced by container support") \
++ \
++ diagnostic(bool, PrintContainerInfo, false, \
++ "Print container related information") \
++ \
++ diagnostic(bool, PrintActiveCpus, false, \
++ "Print the number of CPUs detected in os::active_processor_count") \
+ \
+ product(uintx, MaxRAMFraction, 4, \
+ "Maximum fraction (1/n) of real memory used for maximum heap " \
+@@ -2099,6 +2109,19 @@
+ product(uintx, InitialRAMFraction, 64, \
+ "Fraction (1/n) of real memory used for initial heap size") \
+ \
++ product(double, MaxRAMPercentage, 25.0, \
++ "Maximum percentage of real memory used for maximum heap size") \
++ \
++ product(double, MinRAMPercentage, 50.0, \
++ "Minimum percentage of real memory used for maximum heap" \
++ "size on systems with small physical memory size") \
++ \
++ product(double, InitialRAMPercentage, 1.5625, \
++ "Percentage of real memory used for initial heap size") \
++ \
++ product(intx, ActiveProcessorCount, -1, \
++ "Specify the CPU count the VM should use and report as active") \
++ \
+ develop(uintx, MaxVirtMemFraction, 2, \
+ "Maximum fraction (1/n) of virtual memory used for ergonomically "\
+ "determining maximum heap size") \
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp
++++ openjdk/hotspot/src/share/vm/runtime/os.hpp
+@@ -152,8 +152,16 @@
+ static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned);
+
+ static void initialize_initial_active_processor_count();
++
++ LINUX_ONLY(static void pd_init_container_support();)
++
+ public:
+ static void init(void); // Called before command line parsing
++
++ static void init_container_support() { // Called during command line parsing.
++ LINUX_ONLY(pd_init_container_support();)
++ }
++
+ static void init_before_ergo(void); // Called after command line parsing
+ // before VM ergonomics processing.
+ static jint init_2(void); // Called after command line parsing
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp openjdk/hotspot/src/share/vm/runtime/thread.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp
++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp
+@@ -3332,6 +3332,7 @@
+ Arguments::init_version_specific_system_properties();
+
+ // Parse arguments
++ // Note: this internally calls os::init_container_support()
+ jint parse_result = Arguments::parse(args);
+ if (parse_result != JNI_OK) return parse_result;
+
diff --git a/8165489-pr3589.patch b/8165489-pr3589.patch
new file mode 100644
index 0000000..1674dec
--- /dev/null
+++ b/8165489-pr3589.patch
@@ -0,0 +1,123 @@
+# HG changeset patch
+# User mdoerr
+# Date 1473159687 -7200
+# Tue Sep 06 13:01:27 2016 +0200
+# Node ID 7f6e1069a5719c8908b53774d3560ce851c7cd70
+# Parent b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Summary: Add missing barrier, sharing code with Unsafe_GetObject.
+Reviewed-by: kbarrett, mgerdin, pliden, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+@@ -199,37 +199,40 @@
+
+ // Get/SetObject must be special-cased, since it works with handles.
+
++// We could be accessing the referent field in a reference
++// object. If G1 is enabled then we need to register non-null
++// referent with the SATB barrier.
++
++#if INCLUDE_ALL_GCS
++static bool is_java_lang_ref_Reference_access(oop o, jlong offset) {
++ if (offset == java_lang_ref_Reference::referent_offset && o != NULL) {
++ Klass* k = o->klass();
++ if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
++ assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
++ return true;
++ }
++ }
++ return false;
++}
++#endif
++
++static void ensure_satb_referent_alive(oop o, jlong offset, oop v) {
++#if INCLUDE_ALL_GCS
++ if (UseG1GC && v != NULL && is_java_lang_ref_Reference_access(o, offset)) {
++ G1SATBCardTableModRefBS::enqueue(v);
++ }
++#endif
++}
++
+ // The xxx140 variants for backward compatibility do not allow a full-width offset.
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ if (obj == NULL) THROW_0(vmSymbols::java_lang_NullPointerException());
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register a non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset) {
+- oop o = JNIHandles::resolve_non_null(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset, jobject x_h))
+@@ -262,32 +265,10 @@
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) {
+- oop o = JNIHandles::resolve(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject x_h))
+@@ -312,6 +293,9 @@
+ } else {
+ (void)const_cast<oop&>(v = *(volatile oop*) addr);
+ }
++
++ ensure_satb_referent_alive(p, offset, v);
++
+ OrderAccess::acquire();
+ return JNIHandles::make_local(env, v);
+ UNSAFE_END
diff --git a/8165852-pr3468.patch b/8165852-pr3468.patch
new file mode 100644
index 0000000..6a9f643
--- /dev/null
+++ b/8165852-pr3468.patch
@@ -0,0 +1,21 @@
+--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
+@@ -74,8 +74,16 @@
+ } catch (UnixException x) {
+ x.rethrowAsIOException(parent);
+ }
+- if (attrs.dev() != dev())
+- break;
++ if (attrs.dev() != dev()) {
++
++ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
++ // find the file system even when not in /etc/mtab)
++ byte[] dir = path.asByteArray();
++ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
++ if (Arrays.equals(dir, entry.dir()))
++ return entry;
++ }
++ }
+ path = parent;
+ parent = parent.getParent();
+ }
diff --git a/8171000-pr3542-rh1402819.patch b/8171000-pr3542-rh1402819.patch
new file mode 100644
index 0000000..d831aa9
--- /dev/null
+++ b/8171000-pr3542-rh1402819.patch
@@ -0,0 +1,121 @@
+# HG changeset patch
+# User kaddepalli
+# Date 1517818481 -19800
+# Mon Feb 05 13:44:41 2018 +0530
+# Node ID b77308735540644d4710244e3c88865067f2905a
+# Parent 39bfc94b1f4265b645c2970a58389acc779dafe9
+8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Reviewed-by: serb, mhalder
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -394,77 +394,48 @@
+ XRectangle bbox; /* bounding box of grabbed area */
+ list_ptr regions;/* list of regions to read from */
+ {
+- image_region_type *reg;
+- int32_t dst_x, dst_y; /* where in pixmap to write (UL) */
+- int32_t diff;
+-
+- XImage *reg_image,*ximage ;
+- int32_t srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+- int32_t rem ;
+- int32_t bytes_per_line;
+- int32_t bitmap_unit;
+-
+- bitmap_unit = sizeof (long);
+- if (format == ZPixmap)
+- bytes_per_line = width*depth/8;
+- else
+- bytes_per_line = width/8;
+-
+-
+- /* Find out how many more bytes are required for padding so that
+- ** bytes per scan line will be multiples of bitmap_unit bits */
+- if (format == ZPixmap) {
+- rem = (bytes_per_line*8)%bitmap_unit;
+- if (rem)
+- bytes_per_line += (rem/8 + 1);
+- }
++ XImage *ximage ;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+
+- bytes_per_line = ximage->bytes_per_line;
+-
+- if (format == ZPixmap)
+- ximage->data = malloc(height*bytes_per_line);
+- else
+- ximage->data = malloc(height*bytes_per_line*depth);
+-
++ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (reg = (image_region_type *) first_in_list( regions); reg;
++ for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+- int32_t rect;
+- struct my_XRegion *vis_reg;
+- vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (rect = 0;
+- rect < vis_reg->numRects;
+- rect++)
++ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
++ for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
+ {
+- /** ------------------------------------------------------------------------
+- Intersect bbox with visible part of region giving src rect & output
+- location. Width is the min right side minus the max left side.
+- Similar for height. Offset src rect so x,y are relative to
+- origin of win, not the root-relative visible rect of win.
+- ------------------------------------------------------------------------ **/
+- srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
+- - MAX( vis_reg->rects[rect].x1, bbox.x);
++ /** ------------------------------------------------------------------------
++ Intersect bbox with visible part of region giving src rect & output
++ location. Width is the min right side minus the max left side.
++ Similar for height. Offset src rect so x,y are relative to
++ origin of win, not the root-relative visible rect of win.
++ ------------------------------------------------------------------------ **/
++ int32_t srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
++ - MAX( vis_reg->rects[rect].x1, bbox.x);
++
++ int32_t srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
++ - MAX( vis_reg->rects[rect].y1, bbox.y);
+
+- srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
+- - MAX( vis_reg->rects[rect].y1, bbox.y);
++ int32_t diff = bbox.x - vis_reg->rects[rect].x1;
++ int32_t srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
++ int32_t dst_x = MAX( 0, -diff) ;
+
+- diff = bbox.x - vis_reg->rects[rect].x1;
+- srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
+- dst_x = MAX( 0, -diff) ;
+- diff = bbox.y - vis_reg->rects[rect].y1;
+- srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
+- dst_y = MAX( 0, -diff) ;
+- reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
+- (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
+- TransferImage(disp,reg_image,srcRect_width,
+- srcRect_height,reg,ximage,dst_x,dst_y) ;
+- XDestroyImage(reg_image);
+- }
++ diff = bbox.y - vis_reg->rects[rect].y1;
++ int32_t srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
++ int32_t dst_y = MAX( 0, -diff) ;
++ XImage* reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
++ (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
++
++ if (reg_image) {
++ TransferImage(disp,reg_image,srcRect_width,
++ srcRect_height,reg,ximage,dst_x,dst_y) ;
++ XDestroyImage(reg_image);
++ }
++ }
+ }
+ return ximage ;
+ }
diff --git a/8184309-pr3596.patch b/8184309-pr3596.patch
new file mode 100644
index 0000000..00b6125
--- /dev/null
+++ b/8184309-pr3596.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User ysuenaga
+# Date 1527498573 -3600
+# Mon May 28 10:09:33 2018 +0100
+# Node ID ef176cb429c49d1c330d9575938f66b04e3fb730
+# Parent 6915dc9ae18cce5625d3a3fc74b37da70a5b4215
+8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Reviewed-by: kbarrett, vlivanov
+
+diff --git openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp openjdk/hotspot/src/share/vm/code/dependencies.cpp
+--- openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp
++++ openjdk/hotspot/src/share/vm/code/dependencies.cpp
+@@ -525,7 +525,7 @@
+ xtty->object("x", arg.metadata_value());
+ }
+ } else {
+- char xn[10]; sprintf(xn, "x%d", j);
++ char xn[12]; sprintf(xn, "x%d", j);
+ if (arg.is_oop()) {
+ xtty->object(xn, arg.oop_value());
+ } else {
diff --git a/8185723-pr3553.patch b/8185723-pr3553.patch
new file mode 100644
index 0000000..f8ee50a
--- /dev/null
+++ b/8185723-pr3553.patch
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User aph
+# Date 1501690960 -3600
+# Wed Aug 02 17:22:40 2017 +0100
+# Node ID 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+# Parent 4e2adbc3d2b512f6b2bf318d2db60f4d1903f8c7
+8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Reviewed-by: roland
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -38,10 +38,10 @@
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+ #if defined(PPC32)
+ double tmp;
+- asm volatile ("lfd %0, 0(%1)\n"
+- "stfd %0, 0(%2)\n"
+- : "=f"(tmp)
+- : "b"(src), "b"(dst));
++ asm volatile ("lfd %0, %2\n"
++ "stfd %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8186461-pr3557.patch b/8186461-pr3557.patch
new file mode 100644
index 0000000..cc8020c
--- /dev/null
+++ b/8186461-pr3557.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User glaubitz
+# Date 1524889690 -3600
+# Sat Apr 28 05:28:10 2018 +0100
+# Node ID be1379a186ba527b32c93a83e04c9600735fe44b
+# Parent 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -36,12 +36,18 @@
+
+ // Atomically copy 64 bits of data
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+-#if defined(PPC32)
++#if defined(PPC32) && !defined(__SPE__)
+ double tmp;
+ asm volatile ("lfd %0, %2\n"
+ "stfd %0, %1\n"
+ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
+ : "Q"(*(volatile double*)src));
++#elif defined(PPC32) && defined(__SPE__)
++ long tmp;
++ asm volatile ("evldd %0, %2\n"
++ "evstdd %0, %1\n"
++ : "=&r"(tmp), "=Q"(*(volatile long*)dst)
++ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8196516-pr3523-rh1538767.patch b/8196516-pr3523-rh1538767.patch
new file mode 100644
index 0000000..b321611
--- /dev/null
+++ b/8196516-pr3523-rh1538767.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1523360781 -7200
+# Tue Apr 10 13:46:21 2018 +0200
+# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
+# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
+8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
+Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
+
+diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
+--- a/make/lib/Awt2dLibraries.gmk
++++ b/make/lib/Awt2dLibraries.gmk
+@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+ BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
+ endif
+
++# LDFLAGS clarification:
++# Filter relevant linker flags disallowing unresolved symbols as we cannot
++# build-time decide to which library to link against (libawt_headless or
++# libawt_xawt). See JDK-8196516 for details.
+ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ LIBRARY := fontmanager, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
+ -DCC_NOEX, \
+ MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
+- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
++ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
++ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/8197429-pr3456-rh1536622.patch b/8197429-pr3456-rh1536622.patch
deleted file mode 100644
index fc60cd3..0000000
--- a/8197429-pr3456-rh1536622.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -674,6 +674,10 @@
- }
- }
-
-+void os::Linux::expand_stack_to(address bottom) {
-+ _expand_stack_to(bottom);
-+}
-+
- bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
- assert(t!=NULL, "just checking");
- assert(t->osthread()->expanding_stack(), "expand should be set");
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -245,6 +245,8 @@
- static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
-
- private:
-+ static void expand_stack_to(address bottom);
-+
- 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);
-diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -892,6 +892,25 @@
- void os::workaround_expand_exec_shield_cs_limit() {
- #if defined(IA32)
- size_t page_size = os::vm_page_size();
-+
-+ /*
-+ * JDK-8197429
-+ *
-+ * Expand the stack mapping to the end of the initial stack before
-+ * attempting to install the codebuf. This is needed because newer
-+ * Linux kernels impose a distance of a megabyte between stack
-+ * memory and other memory regions. If we try to install the
-+ * codebuf before expanding the stack the installation will appear
-+ * to succeed but we'll get a segfault later if we expand the stack
-+ * in Java code.
-+ *
-+ */
-+ if (os::Linux::is_initial_thread()) {
-+ address limit = Linux::initial_thread_stack_bottom();
-+ limit += (StackYellowPages + StackRedPages) * page_size;
-+ os::Linux::expand_stack_to(limit);
-+ }
-+
- /*
- * Take the highest VA the OS will give us and exec
- *
-@@ -910,6 +929,16 @@
- char* hint = (char*) (Linux::initial_thread_stack_bottom() -
- ((StackYellowPages + StackRedPages + 1) * page_size));
- char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+
-+ if (codebuf == NULL) {
-+ // JDK-8197429: There may be a stack gap of one megabyte between
-+ // the limit of the stack and the nearest memory region: this is a
-+ // Linux kernel workaround for CVE-2017-1000364. If we failed to
-+ // map our codebuf, try again at an address one megabyte lower.
-+ hint -= 1 * M;
-+ codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+ }
-+
- if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
- return; // No matter, we tried, best effort.
- }
diff --git a/8197429-pr3546-rh1536622.patch b/8197429-pr3546-rh1536622.patch
new file mode 100644
index 0000000..fc60cd3
--- /dev/null
+++ b/8197429-pr3546-rh1536622.patch
@@ -0,0 +1,93 @@
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -674,6 +674,10 @@
+ }
+ }
+
++void os::Linux::expand_stack_to(address bottom) {
++ _expand_stack_to(bottom);
++}
++
+ bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
+ assert(t!=NULL, "just checking");
+ assert(t->osthread()->expanding_stack(), "expand should be set");
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -245,6 +245,8 @@
+ static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
+
+ private:
++ static void expand_stack_to(address bottom);
++
+ 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);
+diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -892,6 +892,25 @@
+ void os::workaround_expand_exec_shield_cs_limit() {
+ #if defined(IA32)
+ size_t page_size = os::vm_page_size();
++
++ /*
++ * JDK-8197429
++ *
++ * Expand the stack mapping to the end of the initial stack before
++ * attempting to install the codebuf. This is needed because newer
++ * Linux kernels impose a distance of a megabyte between stack
++ * memory and other memory regions. If we try to install the
++ * codebuf before expanding the stack the installation will appear
++ * to succeed but we'll get a segfault later if we expand the stack
++ * in Java code.
++ *
++ */
++ if (os::Linux::is_initial_thread()) {
++ address limit = Linux::initial_thread_stack_bottom();
++ limit += (StackYellowPages + StackRedPages) * page_size;
++ os::Linux::expand_stack_to(limit);
++ }
++
+ /*
+ * Take the highest VA the OS will give us and exec
+ *
+@@ -910,6 +929,16 @@
+ char* hint = (char*) (Linux::initial_thread_stack_bottom() -
+ ((StackYellowPages + StackRedPages + 1) * page_size));
+ char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
++
++ if (codebuf == NULL) {
++ // JDK-8197429: There may be a stack gap of one megabyte between
++ // the limit of the stack and the nearest memory region: this is a
++ // Linux kernel workaround for CVE-2017-1000364. If we failed to
++ // map our codebuf, try again at an address one megabyte lower.
++ hint -= 1 * M;
++ codebuf = os::attempt_reserve_memory_at(page_size, hint);
++ }
++
+ if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
+ return; // No matter, we tried, best effort.
+ }
diff --git a/8197546-pr3542-rh1402819.patch b/8197546-pr3542-rh1402819.patch
new file mode 100644
index 0000000..ba712ad
--- /dev/null
+++ b/8197546-pr3542-rh1402819.patch
@@ -0,0 +1,35 @@
+# HG changeset patch
+# User prr
+# Date 1518454604 28800
+# Mon Feb 12 08:56:44 2018 -0800
+# Node ID 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+# Parent b77308735540644d4710244e3c88865067f2905a
+8197546: Fix for 8171000 breaks Solaris + Linux builds
+Reviewed-by: serb, jdv
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -395,6 +395,8 @@
+ list_ptr regions;/* list of regions to read from */
+ {
+ XImage *ximage ;
++ image_region_type* reg;
++ int32_t rect;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+@@ -402,11 +404,11 @@
+ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
++ for (reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
++ for (rect = 0; rect < vis_reg->numRects; rect++)
+ {
+ /** ------------------------------------------------------------------------
+ Intersect bbox with visible part of region giving src rect & output
diff --git a/8197981-pr3548.patch b/8197981-pr3548.patch
new file mode 100644
index 0000000..5f6d9ce
--- /dev/null
+++ b/8197981-pr3548.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User andrew
+# Date 1518667645 0
+# Thu Feb 15 04:07:25 2018 +0000
+# Node ID 1d35411eb7bdf16191e220ffe3b1dc4d5d0c6041
+# Parent 999983606f5c61b093c6f6316a7b26c4cd4ca79e
+8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Summary: Fix issue discovered by -Wreturn-type on systems without LP64.
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
++++ openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+@@ -457,6 +457,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -498,6 +498,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
diff --git a/8199936-pr3533-workaround.patch b/8199936-pr3533-workaround.patch
new file mode 100644
index 0000000..900e0c3
--- /dev/null
+++ b/8199936-pr3533-workaround.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User andrew
+# Date 1526122977 -3600
+# Sat May 12 12:02:57 2018 +0100
+# Node ID 00ccc73498628a51a45301322e64ce2ad06e49be
+# Parent aecf9f48f7b5c6148b62713a6b746301435b57cc
+PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations
+Summary: Enable -mstackrealign on x86 Linux as well as x86 Mac OS X
+
+diff --git openjdk.orig///common/autoconf/hotspot-spec.gmk.in openjdk///common/autoconf/hotspot-spec.gmk.in
+--- openjdk.orig///common/autoconf/hotspot-spec.gmk.in
++++ openjdk///common/autoconf/hotspot-spec.gmk.in
+@@ -110,7 +110,8 @@
+ RC:=@HOTSPOT_RC@
+
+ EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \
+- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \
++ $(REALIGN_CFLAG)
+ EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
+ EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
+
+diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in
+--- openjdk.orig///common/autoconf/spec.gmk.in
++++ openjdk///common/autoconf/spec.gmk.in
+@@ -333,6 +333,7 @@
+
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@
+ NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@
++REALIGN_CFLAG=@REALIGN_CFLAG@
+ CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+
+ CXX:=@FIXPATH@ @CCACHE@ @CXX@
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -796,20 +796,16 @@
+ #
+ # NOTE: check for -mstackrealign needs to be below potential addition of -m32
+ #
+- if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
++ if test "x$OPENJDK_TARGET_CPU" = xx86 && test "x$OPENJDK_TARGET_OS" = xmacosx -o \
++ "x$OPENJDK_TARGET_OS" = xlinux; then
+ # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
+- # While waiting for a better solution, the current workaround is to use -mstackrealign.
+- CFLAGS="$CFLAGS -mstackrealign"
+- AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
+- AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
+- [
+- AC_MSG_RESULT([yes])
+- ],
+- [
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+- ]
++ # While waiting for a better solution, the current workaround is to use -mstackrealign
++ # This is also required on Linux systems which use libraries compiled with SSE instructions
++ REALIGN_CFLAG="-mstackrealign"
++ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
++ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ AC_SUBST([REALIGN_CFLAG])
+ fi
+
+ C_FLAG_DEPS="-MMD -MF"
diff --git a/8201509-pr3579.patch b/8201509-pr3579.patch
new file mode 100644
index 0000000..132c225
--- /dev/null
+++ b/8201509-pr3579.patch
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User mbalao
+# Date 1525317412 -3600
+# Thu May 03 04:16:52 2018 +0100
+# Node ID de79964656fc652f2085dac4fe99bcc128b5a3b1
+# Parent ffd5260fe5adcb26f87a14f1aaaf3e1a075d712a
+8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Summary: The inline assembler for the S390 (S390 and not _LP64) has src and dst reversed thereby corrupting data
+Reviewed-by: shade
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2010 Red Hat, Inc.
++ * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -50,10 +50,10 @@
+ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+- asm volatile ("ld %0, 0(%1)\n"
+- "std %0, 0(%2)\n"
+- : "=r"(tmp)
+- : "a"(src), "a"(dst));
++ asm volatile ("ld %0, %2\n"
++ "std %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(__ARM_ARCH_7A__)
+ jlong tmp;
+ asm volatile ("ldrexd %0, [%1]\n"
diff --git a/8203182-pr3603-rh1568033.patch b/8203182-pr3603-rh1568033.patch
new file mode 100644
index 0000000..031a60c
--- /dev/null
+++ b/8203182-pr3603-rh1568033.patch
@@ -0,0 +1,131 @@
+# HG changeset patch
+# User igerasim
+# Date 1528992969 25200
+# Thu Jun 14 09:16:09 2018 -0700
+# Node ID d9b0b4bd2526818afa73b60da77403245554caa8
+# Parent 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Summary: Ensure session is properly released in P11Signature class
+Reviewed-by: valeriep
+Contributed-by: Martin Balao <mbalao(a)redhat.com>
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+@@ -309,47 +309,51 @@
+ session = token.killSession(session);
+ return;
+ }
+- // "cancel" operation by finishing it
+- // XXX make sure all this always works correctly
+- if (mode == M_SIGN) {
+- try {
+- if (type == T_UPDATE) {
+- token.p11.C_SignFinal(session.id(), 0);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
++ try {
++ // "cancel" operation by finishing it
++ // XXX make sure all this always works correctly
++ if (mode == M_SIGN) {
++ try {
++ if (type == T_UPDATE) {
++ token.p11.C_SignFinal(session.id(), 0);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Sign(session.id(), digest);
+ }
+- token.p11.C_Sign(session.id(), digest);
++ } catch (PKCS11Exception e) {
++ throw new ProviderException("cancel failed", e);
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
++ } else { // M_VERIFY
++ try {
++ byte[] signature;
++ if (keyAlgorithm.equals("DSA")) {
++ signature = new byte[40];
++ } else {
++ signature = new byte[(p11Key.length() + 7) >> 3];
++ }
++ if (type == T_UPDATE) {
++ token.p11.C_VerifyFinal(session.id(), signature);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Verify(session.id(), digest, signature);
++ }
++ } catch (PKCS11Exception e) {
++ // will fail since the signature is incorrect
++ // XXX check error code
++ }
+ }
+- } else { // M_VERIFY
+- try {
+- byte[] signature;
+- if (keyAlgorithm.equals("DSA")) {
+- signature = new byte[40];
+- } else {
+- signature = new byte[(p11Key.length() + 7) >> 3];
+- }
+- if (type == T_UPDATE) {
+- token.p11.C_VerifyFinal(session.id(), signature);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Verify(session.id(), digest, signature);
+- }
+- } catch (PKCS11Exception e) {
+- // will fail since the signature is incorrect
+- // XXX check error code
+- }
++ } finally {
++ session = token.releaseSession(session);
+ }
+ }
+
+@@ -368,6 +372,8 @@
+ }
+ initialized = true;
+ } catch (PKCS11Exception e) {
++ // release session when initialization failed
++ session = token.releaseSession(session);
+ throw new ProviderException("Initialization failed", e);
+ }
+ if (bytesProcessed != 0) {
+@@ -529,6 +535,8 @@
+ }
+ bytesProcessed += len;
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException(e);
+ }
+ break;
+@@ -576,6 +584,8 @@
+ bytesProcessed += len;
+ byteBuffer.position(ofs + len);
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException("Update failed", e);
+ }
+ break;
diff --git a/8206406-pr3610-rh1597825.patch b/8206406-pr3610-rh1597825.patch
new file mode 100644
index 0000000..0f38126
--- /dev/null
+++ b/8206406-pr3610-rh1597825.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User aph
+# Date 1531146945 -3600
+# Mon Jul 09 15:35:45 2018 +0100
+# Node ID 95b72537801cc9946c27ad27f07e3f0790a21b08
+# Parent f6341f4635dacb56678264d29a88cd052b74036b
+8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Reviewed-by: dholmes
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+@@ -34,12 +34,12 @@
+
+ // Implementation of StubCodeDesc
+
+-StubCodeDesc* StubCodeDesc::_list = NULL;
+-int StubCodeDesc::_count = 0;
++StubCodeDesc* volatile StubCodeDesc::_list = NULL;
++int StubCodeDesc::_count = 0;
+
+
+ StubCodeDesc* StubCodeDesc::desc_for(address pc) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && !p->contains(pc)) p = p->_next;
+ // p == NULL || p->contains(pc)
+ return p;
+@@ -47,7 +47,7 @@
+
+
+ StubCodeDesc* StubCodeDesc::desc_for_index(int index) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && p->index() != index) p = p->_next;
+ return p;
+ }
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+@@ -38,7 +38,7 @@
+
+ class StubCodeDesc: public CHeapObj<mtCode> {
+ protected:
+- static StubCodeDesc* _list; // the list of all descriptors
++ static StubCodeDesc* volatile _list; // the list of all descriptors
+ static int _count; // length of list
+
+ StubCodeDesc* _next; // the next element in the linked list
+@@ -69,13 +69,13 @@
+
+ StubCodeDesc(const char* group, const char* name, address begin) {
+ assert(name != NULL, "no name specified");
+- _next = _list;
++ _next = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ _group = group;
+ _name = name;
+ _index = ++_count; // (never zero)
+ _begin = begin;
+ _end = NULL;
+- _list = this;
++ OrderAccess::release_store_ptr(&_list, this);
+ };
+
+ const char* group() const { return _group; }
diff --git a/8206425-hotspot-remove-debuglink.patch b/8206425-hotspot-remove-debuglink.patch
new file mode 100644
index 0000000..adbf1f0
--- /dev/null
+++ b/8206425-hotspot-remove-debuglink.patch
@@ -0,0 +1,73 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1530808022 -7200
+# Thu Jul 05 18:27:02 2018 +0200
+# Node ID 5ba59d58d976db456c4455640111e8107b8d80e8
+# Parent ad057f2e3211cd18bc56550d8a2c400d92ec35b1
+8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Summary: Only add .gnu_debuglink sections when there is some stripping done.
+Reviewed-by: erikj, dholmes
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -57,14 +57,15 @@
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -100,14 +100,15 @@
+ -lthread_db
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -358,14 +358,15 @@
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/8207057-pr3613-hotspot-assembler-debuginfo.patch b/8207057-pr3613-hotspot-assembler-debuginfo.patch
new file mode 100644
index 0000000..894596d
--- /dev/null
+++ b/8207057-pr3613-hotspot-assembler-debuginfo.patch
@@ -0,0 +1,20 @@
+--- openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:04:12.497865891 -0400
++++ openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:06:16.371214049 -0400
+@@ -34,7 +34,7 @@
+ CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
+ CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
+
+-AS.S = $(AS) $(ASFLAGS)
++AS.S = $(AS) -g $(ASFLAGS)
+
+ COMPILE.CC = $(CC_COMPILE) -c
+ GENASM.CC = $(CC_COMPILE) -S
+@@ -169,7 +169,7 @@
+ %.o: %.s
+ @echo Assembling $<
+ $(QUIETLY) $(REMOVE_TARGET)
+- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
++ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+
+ %.s: %.cpp
+ @echo Generating assembly for $<
diff --git a/8207234-dont-add-unnecessary-debug-links.patch b/8207234-dont-add-unnecessary-debug-links.patch
new file mode 100644
index 0000000..9c29e6b
--- /dev/null
+++ b/8207234-dont-add-unnecessary-debug-links.patch
@@ -0,0 +1,77 @@
+--- openjdk/make/common/NativeCompilation.gmk
++++ openjdk/make/common/NativeCompilation.gmk
+@@ -437,29 +437,6 @@
+
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+- ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+- else # not solaris
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+- endif # Touch to not retrigger rule on rebuild
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -483,7 +460,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
+ $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
+ endif
+ endif
+ endif
+@@ -522,28 +498,8 @@
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ else # not solaris
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ endif
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -567,7 +523,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
+ $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
+ endif
+ endif
+ endif
diff --git a/PR3183.patch b/PR3183.patch
deleted file mode 100644
index 5a619b4..0000000
--- a/PR3183.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1478057514 0
-# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
-# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
-PR3183: Support Fedora/RHEL system crypto policy
-
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
---- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
-@@ -43,6 +43,9 @@
- * implementation-specific location, which is typically the properties file
- * {@code lib/security/java.security} in the Java installation directory.
- *
-+ * <p>Additional default values of security properties are read from a
-+ * system-specific location, if available.</p>
-+ *
- * @author Benjamin Renaud
- */
-
-@@ -52,6 +55,10 @@
- private static final Debug sdebug =
- Debug.getInstance("properties");
-
-+ /* System property file*/
-+ private static final String SYSTEM_PROPERTIES =
-+ "/etc/crypto-policies/back-ends/java.config";
-+
- /* The java.security properties */
- private static Properties props;
-
-@@ -93,6 +100,7 @@
- if (sdebug != null) {
- sdebug.println("reading security properties file: " +
- propFile);
-+ sdebug.println(props.toString());
- }
- } catch (IOException e) {
- if (sdebug != null) {
-@@ -114,6 +122,31 @@
- }
-
- if ("true".equalsIgnoreCase(props.getProperty
-+ ("security.useSystemPropertiesFile"))) {
-+
-+ // now load the system file, if it exists, so its values
-+ // will win if they conflict with the earlier values
-+ try (BufferedInputStream bis =
-+ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
-+ props.load(bis);
-+ loadedProps = true;
-+
-+ if (sdebug != null) {
-+ sdebug.println("reading system security properties file " +
-+ SYSTEM_PROPERTIES);
-+ sdebug.println(props.toString());
-+ }
-+ } catch (IOException e) {
-+ if (sdebug != null) {
-+ sdebug.println
-+ ("unable to load security properties from " +
-+ SYSTEM_PROPERTIES);
-+ e.printStackTrace();
-+ }
-+ }
-+ }
-+
-+ if ("true".equalsIgnoreCase(props.getProperty
- ("security.overridePropertiesFile"))) {
-
- String extraPropFile = System.getProperty
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
---- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
---- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=true
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
---- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
---- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
-@@ -278,6 +278,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
---- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..61b3b69
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+Package of LTS OpenJDK 8
+OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 10. LTSs (next is 11) will go as separate packages.
+
+JDK8 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/8/ and is landing to your RHEL. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives.
+
+See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
+See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
+
diff --git a/dont-add-unnecessary-debug-links.patch b/dont-add-unnecessary-debug-links.patch
deleted file mode 100644
index 9c29e6b..0000000
--- a/dont-add-unnecessary-debug-links.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- openjdk/make/common/NativeCompilation.gmk
-+++ openjdk/make/common/NativeCompilation.gmk
-@@ -437,29 +437,6 @@
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
-- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
-- else # not solaris
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
-- endif # Touch to not retrigger rule on rebuild
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -483,7 +460,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
-@@ -522,28 +498,8 @@
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -567,7 +523,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
diff --git a/hotspot-assembler-debuginfo.patch b/hotspot-assembler-debuginfo.patch
deleted file mode 100644
index bf51c43..0000000
--- a/hotspot-assembler-debuginfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/rules.make.orig 2016-12-06 12:25:19.099768390 -0500
-+++ openjdk/hotspot/make/linux/makefiles/rules.make 2016-12-06 12:25:42.449990112 -0500
-@@ -34,7 +34,7 @@
- CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
- CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
--AS.S = $(AS) $(ASFLAGS)
-+AS.S = $(AS) -g $(ASFLAGS)
-
- COMPILE.CC = $(CC_COMPILE) -c
- GENASM.CC = $(CC_COMPILE) -S
-@@ -169,7 +169,7 @@
- %.o: %.s
- @echo Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
-- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-+ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
- %.s: %.cpp
- @echo Generating assembly for $<
diff --git a/hotspot-remove-debuglink.patch b/hotspot-remove-debuglink.patch
deleted file mode 100644
index 3b3070d..0000000
--- a/hotspot-remove-debuglink.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Remove unnecessary .gnu_debuglink sections from libjvm
-
-The .gnu_debuglink section indicates which file contains the debuginfo. This
-is not needed if we not stripping the shared object.
-
-RPM's debuginfo extraction code will add the right file links automatically. As
-it is, RPM copies over the .gnu_debuglink link to the debug info file. Without
-this patch, the debug info file also ends up containing the .gnu_debuglink
-section pointing to a missing (and not needed) file.
-
-diff --git a/make/linux/makefiles/jsig.make b/make/linux/makefiles/jsig.make
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -57,14 +57,15 @@
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
-diff --git a/make/linux/makefiles/saproc.make b/make/linux/makefiles/saproc.make
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -99,14 +99,15 @@
- -lthread_db
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
-diff --git a/make/linux/makefiles/vm.make b/make/linux/makefiles/vm.make
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -358,14 +358,15 @@
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
-- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 503eeca..0f2b41f 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -1,19 +1,48 @@
-# note, parametrised macros are order-senisitve (unlike not-parametrized) even with normal macros
-# also necessary when passing it as parameter other macros. If not macro, then it is considered as switch
-%global debug_suffix_unquoted -debug
+# RPM conditionals so as to be able to dynamically produce
+# slowdebug/release builds. See:
+# http://rpm.org/user_doc/conditional_builds.html
+#
+# Examples:
+#
+# Produce release *and* slowdebug builds on x86_64 (default):
+# $ rpmbuild -ba java-1.8.0-openjdk.spec
+#
+# Produce only release builds (no slowdebug builds) on x86_64:
+# $ rpmbuild -ba java-1.8.0-openjdk.spec --without slowdebug
+#
+# Only produce a release build on x86_64:
+# $ fedpkg mockbuild --without slowdebug
+#
+# Only produce a debug build on x86_64:
+# $ fedpkg local --without release
+#
+# Enable slowdebug builds by default on relevant arches.
+%bcond_without slowdebug
+# Enable release builds by default on relevant arches.
+%bcond_without release
+
+%define _find_debuginfo_opts -g
+# note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros
+# also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch
+# see the difference between global and define:
+# See https://github.com/rpm-software-management/rpm/issues/127 to comments at "pmatilai commented on Aug 18, 2017"
+# (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192)
+%global debug_suffix_unquoted -slowdebug
# quoted one for shell operations
%global debug_suffix "%{debug_suffix_unquoted}"
%global normal_suffix ""
-#if you wont only debug build, but providing java, build only normal build, but set normalbuild_parameter
-%global debugbuild_parameter slowdebug
-%global normalbuild_parameter release
-%global debug_warning This package have full debug on. Install only in need, and remove asap.
+# if you want only debug build but providing java build only normal build but set normalbuild_parameter
+%global debug_warning This package has full debug on. Install only in need and remove asap.
%global debug_on with full debug on
%global for_debug for packages with debug on
-# by default we build normal build always.
+%if %{with release}
%global include_normal_build 1
+%else
+%global include_normal_build 0
+%endif
+
%if %{include_normal_build}
%global build_loop1 %{normal_suffix}
%else
@@ -21,23 +50,30 @@
%endif
%global aarch64 aarch64 arm64 armv8
-# sometimes we need to distinguish big and little endian PPC64
+# we need to distinguish between big and little endian PPC64
%global ppc64le ppc64le
%global ppc64be ppc64 ppc64p7
%global multilib_arches %{power64} sparc64 x86_64
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm}
# By default, we build a debug build during main build on JIT architectures
-# do not ever sync {arm} to main packages, unles whole this package is merged.
+%if %{with slowdebug}
%ifarch %{jit_arches}
+%ifnarch %{arm}
%global include_debug_build 1
%else
+%global include_debug_build 1
+%endif
+%else
+%global include_debug_build 0
+%endif
+%else
%global include_debug_build 0
%endif
# On x86_64 and AArch64, we use the Shenandoah HotSpot
%ifarch x86_64 %{aarch64}
-%global use_shenandoah_hotspot 0
+%global use_shenandoah_hotspot 1
%else
%global use_shenandoah_hotspot 0
%endif
@@ -48,10 +84,10 @@
%global build_loop2 %{nil}
%endif
-# if you disable both builds, then build fails
+# if you disable both builds, then the build fails
%global build_loop %{build_loop1} %{build_loop2}
-# note, that order normal_suffix debug_suffix, in case of both enabled,
-# is expected in one single case at the end of build
+# note: that order: normal_suffix debug_suffix, in case of both enabled
+# is expected in one single case at the end of the build
%global rev_build_loop %{build_loop2} %{build_loop1}
%ifarch %{jit_arches}
@@ -66,28 +102,15 @@
%global targets all
%endif
-%ifnarch %{jit_arches}
-# Disable hardened build on non-jit arches. Work-around for RHBZ#1290936.
-%undefine _hardened_build
-%global ourcppflags %{nil}
-%global ourldflags %{nil}
-%else
-%ifarch %{aarch64}
-# Disable hardened build on AArch64 as it didn't bootcycle
-%undefine _hardened_build
-%global ourcppflags "-fstack-protector-strong"
-%global ourldflags %{nil}
-%else
+
# Filter out flags from the optflags macro that cause problems with the OpenJDK build
-# We filter out -O flags so that the optimisation of HotSpot is not lowered from O3 to O2
+# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||')
%global ourldflags %{__global_ldflags}
-%endif
-%endif
%ifarch %{arm}
# Disable hardened build on aarch32. Work-around for RHBZ#1290936.
%undefine _hardened_build
@@ -95,9 +118,9 @@
%global ourldflags %{nil}
%endif
-# With diabled nss is NSS deactivated, so in NSS_LIBDIR can be wrong path
-# the initialisation must be here. LAter the pkg-connfig have bugy behaviour
-#looks liekopenjdk RPM specific bug
+# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path
+# the initialization must be here. Later the pkg-config have buggy behavior
+# looks like openjdk RPM specific bug
# Always set this so the nss.cfg file is not broken
%global NSS_LIBDIR %(pkg-config --variable=libdir nss)
%global NSS_LIBS %(pkg-config --libs nss)
@@ -105,13 +128,18 @@
# see https://bugzilla.redhat.com/show_bug.cgi?id=1332456
%global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : )
%global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : )
-#this is worakround for processing of requires during srpm creation
+# this is workaround for processing of requires during srpm creation
%global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi)
%global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi)
-# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
-%global _privatelibs libmawt[.]so.*
+# Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349.
+# See also https://bugzilla.redhat.com/show_bug.cgi?id=1590796
+# as to why some libraries *cannot* be excluded. In particular,
+# these are:
+# libjsig.so, libjava.so, libjawt.so, libjvm.so and libverify.so
+%global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjli[.]so.*|libjsdt[.]so.*|libjsoundalsa[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libnpt[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsplashscreen[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
+
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
@@ -121,66 +149,59 @@
# does not match that given by _build_cpu
%ifarch x86_64
%global archinstall amd64
-%global stapinstall x86_64
%endif
%ifarch ppc
%global archinstall ppc
-%global stapinstall powerpc
%endif
%ifarch %{ppc64be}
%global archinstall ppc64
-%global stapinstall powerpc
%endif
%ifarch %{ppc64le}
%global archinstall ppc64le
-%global stapinstall powerpc
%endif
%ifarch %{ix86}
%global archinstall i386
-%global stapinstall i386
%endif
%ifarch ia64
%global archinstall ia64
-%global stapinstall ia64
%endif
%ifarch s390
%global archinstall s390
-%global stapinstall s390
%endif
%ifarch s390x
%global archinstall s390x
-%global stapinstall s390
%endif
%ifarch %{arm}
%global archinstall arm
-%global stapinstall arm
%endif
%ifarch %{aarch64}
%global archinstall aarch64
-%global stapinstall arm64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global archinstall sparc
-%global stapinstall %{_build_cpu}
%endif
# 64 bit sparc
%ifarch sparc64
%global archinstall sparcv9
-%global stapinstall %{_build_cpu}
%endif
%ifnarch %{jit_arches}
%global archinstall %{_arch}
%endif
+
+
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+# New Version-String scheme-style defines
+%global majorver 8
+
%ifarch %{ix86} x86_64
-%global with_openjfx_binding 0
+%global with_openjfx_binding 1
%global openjfx_path %{_jvmdir}/openjfx
# links src directories
%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
@@ -199,19 +220,18 @@
%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.
-%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
-%global abs2rel %{__perl} -e %{script}
-
-
# Standard JPackage naming and versioning defines.
%global origin openjdk
+%global origin_nice OpenJDK
+%global top_level_dir_name %{origin}
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u171-b11-aarch32-180511
+%global revision jdk8u181-b13-aarch32-180802
+%global shenandoah_project aarch64-port
+%global shenandoah_repo jdk8u-shenandoah
+%global shenandoah_revision aarch64-shenandoah-jdk8u181-b13
+
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -221,17 +241,19 @@
# priority must be 7 digits in total. The expression is workarounding tip
%global priority %(TIP=1800%{updatever}; echo ${TIP/tip/999})
-%global javaver 1.8.0
+%global javaver 1.%{majorver}.0
+%global systemtap_javaver 9
# parametrized macros are order-sensitive
-%global fullversion %{name}-%{version}-%{release}
-#images stub
-%global j2sdkimage j2sdk-image
+%global compatiblename %{name}
+%global fullversion %{compatiblename}-%{version}-%{release}
+# images stub
+%global jdkimage j2sdk-image
# output dir stub
%define buildoutputdir() %{expand:openjdk/build/jdk8.build%{?1}}
-#we can copy the javadoc to not arched dir, or made it not noarch
+# we can copy the javadoc to not arched dir, or make it not noarch
%define uniquejavadocdir() %{expand:%{fullversion}%{?1}}
-#main id and dir of this jdk
+# main id and dir of this jdk
%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}}
# Standard JPackage directories and symbolic links.
@@ -246,18 +268,19 @@
%if %{with_systemtap}
# Where to install systemtap tapset (links)
-# We would like these to be in a package specific subdir,
+# We would like these to be in a package specific sub-dir,
# but currently systemtap doesn't support that, so we have to
-# use the root tapset dir for now. To distinquish between 64
+# use the root tapset dir for now. To distinguish between 64
# and 32 bit architectures we place the tapsets under the arch
# specific dir (note that systemtap will only pickup the tapset
# for the primary arch for now). Systemtap uses the machine name
# aka build_cpu as architecture specific directory name.
%global tapsetroot /usr/share/systemtap
-%global tapsetdir %{tapsetroot}/tapset/%{stapinstall}
+%global tapsetdirttapset %{tapsetroot}/tapset/
+%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
%endif
-# not-duplicated scriplets for normal/debug packages
+# not-duplicated scriptlets for normal/debug packages
%global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
@@ -332,7 +355,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
# see pretrans where this file is declared
-# also see that pretrans is only for nondebug
+# also see that pretrans is only for non-debug
if [ ! "%{?1}" == %{debug_suffix} ]; then
if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then
sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}}
@@ -530,7 +553,7 @@ exit 0
}
%define files_jre() %{expand:
-%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
+%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png
%{_datadir}/applications/*policytool%{?1}.desktop
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libsplashscreen.so
@@ -548,12 +571,11 @@ exit 0
%defattr(-,root,root,-)
%dir %{_sysconfdir}/.java/.systemPrefs
%dir %{_sysconfdir}/.java
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}
%{_jvmdir}/%{jrelnk -- %{?1}}
-%{_jvmprivdir}/*
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security
%{_jvmdir}/%{jredir -- %{?1}}/lib/security/cacerts
%dir %{_jvmdir}/%{jredir -- %{?1}}
@@ -569,6 +591,9 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/bin/servertool
%{_jvmdir}/%{jredir -- %{?1}}/bin/tnameserv
%{_jvmdir}/%{jredir -- %{?1}}/bin/unpack200
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar
@@ -592,8 +617,8 @@ exit 0
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/nss.cfg
%ifarch %{jit_arches}
%ifnarch %{power64}
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
%endif
%endif
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/
@@ -693,7 +718,17 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/management-agent.jar
%{_jvmdir}/%{jredir -- %{?1}}/lib/management/*
%{_jvmdir}/%{jredir -- %{?1}}/lib/cmm/*
-%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/*
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/cldrdata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/dnsns.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/jaccess.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/localedata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/meta-index
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/nashorn.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunec.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunjce_provider.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunpkcs11.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/zipfs.jar
+
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/management
@@ -703,9 +738,9 @@ exit 0
%define files_devel() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/include
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib
@@ -754,6 +789,9 @@ exit 0
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/aarch32
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
+%if %{with_systemtap}
+%{_jvmdir}/%{sdkdir -- %{?1}}/tapset
+%endif
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ir.idl
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jconsole.jar
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/orb.idl
@@ -795,34 +833,33 @@ exit 0
%{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1*
%if %{with_systemtap}
%dir %{tapsetroot}
+%dir %{tapsetdirttapset}
%dir %{tapsetdir}
-%{tapsetdir}/*%{version}-%{release}.%{_arch}%{?1}.stp
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/tapset
-%{_jvmdir}/%{sdkdir -- %{?1}}/tapset/*.stp
+%{tapsetdir}/*%{_arch}%{?1}.stp
%endif
}
%define files_demo() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_src() %{expand:
%defattr(-,root,root,-)
-%doc README.src
+%doc README.md
%{_jvmdir}/%{sdkdir -- %{?1}}/src.zip
}
%define files_javadoc() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_javadoc_zip() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_accessibility() %{expand:
@@ -832,106 +869,94 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/accessibility.properties
}
-# not-duplicated requires/provides/obsolate for normal/debug packages
+# not-duplicated requires/provides/obsoletes for normal/debug packages
%define java_rpo() %{expand:
Requires: fontconfig%{?_isa}
Requires: xorg-x11-fonts-Type1
-
# Requires rest of java
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+# for java-X-openjdk package's desktop binding
+Recommends: gtk2%{?_isa}
+#Provides: java-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
-# Standard JPackage base provides.
-#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
+# Standard JPackage base provides
+#Provides: jre = %{javaver}%{?1}
#Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
+#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre = %{javaver}%{?1}
#Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: java-fonts%{?1} = %{epoch}:%{version}
-
-Obsoletes: java-1.7.0-openjdk%{?1}
-Obsoletes: java-1.5.0-gcj%{?1}
-Obsoletes: sinjdoc
}
%define java_headless_rpo() %{expand:
-# Require /etc/pki/java/cacerts.
+# Require /etc/pki/java/cacerts
Requires: ca-certificates
# Require javapackages-filesystem for ownership of /usr/lib/jvm/
Requires: javapackages-filesystem
-# Require zoneinfo data provided by tzdata-java subpackage.
+# Require zone-info data provided by tzdata-java sub-package
Requires: tzdata-java >= 2015d
# libsctp.so.1 is being `dlopen`ed on demand
Requires: lksctp-tools%{?_isa}
# there is a need to depend on the exact version of NSS
Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION}
Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION}
-# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum eforce it, not rpm transaction and so no configs are persisted when pure rpm -u is run. I t may be consiedered as regression
-Requires: copy-jdk-configs >= 3.3
+# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it,
+# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be
+# considered as regression
+Requires: copy-jdk-configs >= 3.3
OrderWithRequires: copy-jdk-configs
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
+# for optional support of kernel stream control, card reader and printing bindings
+Suggests: lksctp-tools%{?_isa}, pcsc-lite-devel%{?_isa}, cups
-# Standard JPackage base provides.
+# Standard JPackage base provides
+#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-headless%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: jndi%{?1} = %{epoch}:%{version}
-#Provides: jndi-ldap%{?1} = %{epoch}:%{version}
-#Provides: jndi-cos%{?1} = %{epoch}:%{version}
-#Provides: jndi-rmi%{?1} = %{epoch}:%{version}
-#Provides: jndi-dns%{?1} = %{epoch}:%{version}
-#Provides: jaas%{?1} = %{epoch}:%{version}
-#Provides: jsse%{?1} = %{epoch}:%{version}
-#Provides: jce%{?1} = %{epoch}:%{version}
-#Provides: jdbc-stdext%{?1} = 4.1
-#Provides: java-sasl%{?1} = %{epoch}:%{version}
-
-#https://bugzilla.redhat.com/show_bug.cgi?id=1312019
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1312019
#Provides: /usr/bin/jjs
-Obsoletes: java-1.7.0-openjdk-headless%{?1}
}
%define java_devel_rpo() %{expand:
-# Require base package.
+# Requires base package
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage devel provides.
+# Standard JPackage devel provides
#Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk%{?1} = %{epoch}:%{javaver}
#Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version}
+#Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version}
#Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-devel%{?1} = %{epoch}:%{javaver}
-Obsoletes: java-1.7.0-openjdk-devel%{?1}
-Obsoletes: java-1.5.0-gcj-devel%{?1}
}
@@ -939,39 +964,36 @@ Obsoletes: java-1.5.0-gcj-devel%{?1}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+#Provides: java-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-demo%{?1}
}
%define java_javadoc_rpo() %{expand:
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install javadoc alternative.
+# Post requires alternatives to install javadoc alternative
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall javadoc alternative.
+# Postun requires alternatives to uninstall javadoc alternative
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage javadoc provides.
+# Standard JPackage javadoc provides
#Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
-
-Obsoletes: java-1.7.0-openjdk-javadoc%{?1}
-
+#Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release}
}
%define java_src_rpo() %{expand:
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Standard JPackage javadoc provides.
+# Standard JPackage sources provides
#Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-src%{?1}
+#Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release}
}
%define java_accessibility_rpo() %{expand:
@@ -979,24 +1001,25 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-accessibility = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-accessibility = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
Name: java-%{javaver}-%{origin}-aarch32
-Version: %{javaver}.%{updatever}
-Release: 2.%{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
+Version: %{javaver}.%{updatever}.%{buildver}
+Release: 1%{?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
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
-# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
-# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
-# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
+# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
+# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
+# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
@@ -1025,18 +1048,25 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+# aarch64-port/jdk8u-shenandoah contains an integration forest of
+# OpenJDK 8u, the aarch64 port and Shenandoah
+# To regenerate, use:
+# VERSION=%%{shenandoah_revision}
+# FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> REPOS=hotspot generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
+#Source1: {shenandoah_project}-{shenandoah_repo}-{shenandoah_revision}.tar.xz
# Custom README for -src subpackage
-Source2: README.src
+Source2: README.md
# Use 'generate_tarballs.sh' to generate the following tarballs
-# They are based on code contained in the IcedTea7 project.
+# They are based on code contained in the IcedTea project (3.x)
# Systemtap tapsets. Zipped up to keep it small.
Source8: systemtap-tapset-3.4.0pre01.tar.xz
-# Desktop files. Adapated from IcedTea.
+# Desktop files. Adapted from IcedTea
Source9: jconsole.desktop.in
Source10: policytool.desktop.in
@@ -1058,7 +1088,11 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess
Source101: config.sub
+############################################
+#
# RPM/distribution specific patches
+#
+############################################
# Accessibility patches
# Ignore AWTError when assistive technologies are loaded
@@ -1066,7 +1100,11 @@ Patch1: java-1.8.0-openjdk-accessible-toolkit.patch
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
+#############################################
+#
# Upstreamable patches
+#
+#############################################
# PR2737: Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# PR2095, RH1163501: 2048-bit DH upper bound too small for Fedora infrastructure (sync with IcedTea 2.x)
@@ -1097,30 +1135,39 @@ Patch509: rh1176206-root.patch
Patch523: pr2974-rh1337583.patch
# PR3083, RH1346460: Regression in SSL debug output without an ECC provider
Patch528: pr3083-rh1346460.patch
-# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
-# linking with unresolved symbols.
-Patch529: rhbz_1538767_fix_linking.patch
-
+# RH1566890: CVE-2018-3639
+Patch529: rh1566890_embargoed20180521.patch
+# PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+Patch530: pr3601.patch
+# PR3183: Support Fedora/RHEL system crypto policy
+Patch300: pr3183.patch
+
+#############################################
+#
# Upstreamable debugging patches
+#
+#############################################
# 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
-# 8200556, PR3566: AArch64 port crashes on slowdebug builds
-#Patch207: 8200556-pr3566.patch
+# 8207234: More libraries with .gnu_debuglink sections added unconditionally
+Patch205: 8207234-dont-add-unnecessary-debug-links.patch
# Arch-specific upstreamable patches
-# PR2415: JVM -Xmx requirement is too high on s390
-#Patch100: {name}-s390-java-opts.patch
-# Type fixing for s390
-#Patch102: {name}-size_t.patch
-# Use "%z" for size_t on s390 as size_t != intptr_t
-#Patch103: s390-size_t_format_flags.patch
-# Fix more cases of missing return statements on AArch64
-#Patch104: pr3458-rh1540242.patch
-
+# s390: PR2415: JVM -Xmx requirement is too high on s390
+Patch100: java-1.8.0-openjdk-s390-java-opts.patch
+# s390: Type fixing for s390
+Patch102: java-1.8.0-openjdk-size_t.patch
+# s390: PR3593: Use "%z" for size_t on s390 as size_t != intptr_t
+Patch103: pr3593-s390-size_t_format_flags.patch
+# x86: S8199936, PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations (-mstackrealign workaround)
+Patch105: 8199936-pr3533-workaround.patch
+# AArch64: PR3519: Fix further functions with a missing return value (AArch64)
+#Patch106: pr3519.patch
+
+#############################################
+#
# Patches which need backporting to 8u
+#
+#############################################
# S8073139, RH1191652; fix name of ppc64le architecture
#Patch601: {name}-rh1191652-root.patch
#Patch602: {name}-rh1191652-jdk.patch
@@ -1131,45 +1178,104 @@ Patch7: include-all-srcs.patch
Patch202: system-libpng.patch
# 8042159: Allow using a system-installed lcms2
Patch203: system-lcms.patch
-# PR2462: Backport "8074839: Resolve disabled warnings for libunpack and the unpack200 binary"
+# S8074839, PR2462: Resolve disabled warnings for libunpack and the unpack200 binary
# This fixes printf warnings that lead to build failure with -Werror=format-security from optflags
Patch502: pr2462.patch
-# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
-Patch506: pr2842-01.patch
-Patch507: pr2842-02.patch
# S8154313: Generated javadoc scattered all over the place
Patch400: 8154313.patch
+# 8197429, PR3546, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
+Patch561: 8197429-pr3546-rh1536622.patch
+# 8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Patch563: 8171000-pr3542-rh1402819.patch
+# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
+Patch564: 8197546-pr3542-rh1402819.patch
+# PR3559: Use ldrexd for atomic reads on ARMv7.
+Patch567: pr3559.patch
+# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+Patch571: pr3591.patch
+# 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Patch572: 8184309-pr3596.patch
+# 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Patch573: 8141570-pr3548.patch
+# 8143245, PR3548: Zero build requires disabled warnings
+Patch574: 8143245-pr3548.patch
+# 8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Patch575: 8197981-pr3548.patch
+# 8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Patch576: 8064786-pr3599.patch
+# 8062808, PR3548: Turn on the -Wreturn-type warning
+Patch577: 8062808-pr3548.patch
+# 8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs
+Patch210: 8165852-pr3468.patch
+# 8207057, PR3613: Enable debug information for assembly code files
+Patch206: 8207057-pr3613-hotspot-assembler-debuginfo.patch
+
+#############################################
+#
+# Patches appearing in 8u192
+#
+#############################################
+# S8031668, PR2842: TOOLCHAIN_FIND_COMPILER unexpectedly resolves symbolic links
+Patch506: pr2842-01.patch
+# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
+Patch507: pr2842-02.patch
# S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-Patch540: rhbz1548475-LDFLAGSusage.patch
# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present
Patch560: 8188030-pr3459-rh1484079.patch
-# 8197429, PR3456, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
-Patch561: 8197429-pr3456-rh1536622.patch
-
+# 8205104, PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+Patch562: pr3539-rh1548475.patch
+# 8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Patch565: 8185723-pr3553.patch
+# 8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Patch566: 8186461-pr3557.patch
+# 8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Patch569: 8201509-pr3579.patch
+# 8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Patch570: 8165489-pr3589.patch
+# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
+# linking with unresolved symbols.
+Patch531: 8196516-pr3523-rh1538767.patch
+# 8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Patch578: 8075942-pr3602-rh1582032.patch
+# 8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Patch579: 8203182-pr3603-rh1568033.patch
+# 8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Patch580: 8206406-pr3610-rh1597825.patch
+# 8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Patch581: 8146115-pr3508-rh1463098.patch
+# 8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Patch204: 8206425-hotspot-remove-debuglink.patch
+
+#############################################
+#
# Patches ineligible for 8u
+#
+#############################################
# 8043805: Allow using a system-installed libjpeg
Patch201: system-libjpeg.patch
-Patch209: 8035496-hotspot.patch
-Patch210: suse_linuxfilestore.patch
-# custom securities
-Patch300: PR3183.patch
+#############################################
+#
# Local fixes
+#
+#############################################
# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
Patch525: pr1834-rh1022017.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
+# PR3575, RH1567204: System cacerts database handling should not affect jssecacerts
+Patch540: pr3575-rh1567204.patch
-# Shenandoah fixes
-# PR3573: Fix TCK crash with Shenandoah
-#Patch700: pr3573.patch
-
+#############################################
+#
# Non-OpenJDK fixes
+#
+#############################################
Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
@@ -1178,7 +1284,8 @@ BuildRequires: alsa-lib-devel
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
-BuildRequires: elfutils
+# elfutils only are OK for build without AOT
+BuildRequires: elfutils-devel
BuildRequires: fontconfig
BuildRequires: freetype-devel
BuildRequires: giflib-devel
@@ -1202,11 +1309,12 @@ BuildRequires: zip
# Use OpenJDK 7 where available (on RHEL) to avoid
# having to use the rhel-7.x-java-unsafe-candidate hack
%if ! 0%{?fedora} && 0%{?rhel} <= 7
+# Require a boot JDK which doesn't fail due to RH1482244
BuildRequires: java-1.7.0-openjdk-devel >= 1.7.0.151-2.6.11.3
%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
%endif
-# Zero-assembler build requirement.
+# Zero-assembler build requirement
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
@@ -1220,8 +1328,8 @@ BuildRequires: nss-softokn-freebl-devel >= 3.16.1
BuildRequires: systemtap-sdt-devel
%endif
-# this is built always, also during debug-only build
-# when it is built in debug-only, then this package is just placeholder
+# this is always built, also during debug-only build
+# when it is built in debug-only this package is just placeholder
%{java_rpo %{nil}}
ExclusiveArch: %{arm}
@@ -1231,110 +1339,112 @@ A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
-%package debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package slowdebug
+Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on}
Group: Development/Languages
%{java_rpo -- %{debug_suffix_unquoted}}
-%description debug
-The OpenJDK runtime environment.
+%description slowdebug
+The %{origin_nice} runtime environment.
%{debug_warning}
%endif
%if %{include_normal_build}
%package headless
-Summary: OpenJDK Runtime Environment
+Summary: %{origin_nice} Headless Runtime Environment %{majorver}
Group: Development/Languages
%{java_headless_rpo %{nil}}
%description headless
-The OpenJDK runtime environment without audio and video support.
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%endif
%if %{include_debug_build}
-%package headless-debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package headless-slowdebug
+Summary: %{origin_nice} Runtime Environment %{debug_on}
Group: Development/Languages
%{java_headless_rpo -- %{debug_suffix_unquoted}}
-%description headless-debug
-The OpenJDK runtime environment without audio and video support.
+%description headless-slowdebug
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%{debug_warning}
%endif
%if %{include_normal_build}
%package devel
-Summary: OpenJDK Development Environment
+Summary: %{origin_nice} Development Environment %{majorver}
Group: Development/Tools
%{java_devel_rpo %{nil}}
%description devel
-The OpenJDK development tools.
+The %{origin_nice} development tools %{majorver}.
%endif
%if %{include_debug_build}
-%package devel-debug
-Summary: OpenJDK Development Environment %{debug_on}
+%package devel-slowdebug
+Summary: %{origin_nice} Development Environment %{majorver} %{debug_on}
Group: Development/Tools
%{java_devel_rpo -- %{debug_suffix_unquoted}}
-%description devel-debug
-The OpenJDK development tools.
+%description devel-slowdebug
+The %{origin_nice} development tools %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package demo
-Summary: OpenJDK Demos
+Summary: %{origin_nice} Demos %{majorver}
Group: Development/Languages
%{java_demo_rpo %{nil}}
%description demo
-The OpenJDK demos.
+The %{origin_nice} demos %{majorver}.
%endif
%if %{include_debug_build}
-%package demo-debug
-Summary: OpenJDK Demos %{debug_on}
+%package demo-slowdebug
+Summary: %{origin_nice} Demos %{majorver} %{debug_on}
Group: Development/Languages
%{java_demo_rpo -- %{debug_suffix_unquoted}}
-%description demo-debug
-The OpenJDK demos.
+%description demo-slowdebug
+The %{origin_nice} demos %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package src
-Summary: OpenJDK Source Bundle
+Summary: %{origin_nice} Source Bundle %{majorver}
Group: Development/Languages
%{java_src_rpo %{nil}}
%description src
-The OpenJDK source bundle.
+The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver}
+class library source code for use by IDE indexers and debuggers.
%endif
%if %{include_debug_build}
-%package src-debug
-Summary: OpenJDK Source Bundle %{for_debug}
+%package src-slowdebug
+Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug}
Group: Development/Languages
%{java_src_rpo -- %{debug_suffix_unquoted}}
-%description src-debug
-The OpenJDK source bundle %{for_debug}.
+%description src-slowdebug
+The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
+ class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
%endif
%if %{include_normal_build}
%package javadoc
-Summary: OpenJDK API Documentation
+Summary: %{origin_nice} %{majorver} API documentation
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1342,12 +1452,12 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc
-The OpenJDK API documentation.
+The %{origin_nice} %{majorver} API documentation.
%endif
%if %{include_normal_build}
%package javadoc-zip
-Summary: OpenJDK API Documentation compressed in single archive
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1355,60 +1465,60 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc-zip
-The OpenJDK API documentation compressed in single archive.
+The %{origin_nice} %{majorver} API documentation compressed in single archive.
%endif
%if %{include_debug_build}
-%package javadoc-debug
-Summary: OpenJDK API Documentation %{for_debug}
+%package javadoc-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-debug
-The OpenJDK API documentation %{for_debug}.
+%description javadoc-slowdebug
+The %{origin_nice} %{majorver} API documentation %{for_debug}.
%endif
%if %{include_debug_build}
-%package javadoc-zip-debug
-Summary: OpenJDK API Documentation compressed in single archive %{for_debug}
+%package javadoc-zip-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-zip-debug
-The OpenJDK API documentation compressed in single archive %{for_debug}.
+%description javadoc-zip-slowdebug
+The %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}.
%endif
%if %{include_normal_build}
%package accessibility
-Summary: OpenJDK accessibility connector
+Summary: %{origin_nice} %{majorver} accessibility connector
%{java_accessibility_rpo %{nil}}
%description accessibility
-Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows
+Enables accessibility support in %{origin_nice} %{majorver} by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
-Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
+Please note, the java-atk-wrapper is still in beta, and %{origin_nice} %{majorver} itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%endif
%if %{include_debug_build}
-%package accessibility-debug
-Summary: OpenJDK accessibility connector %{for_debug}
+%package accessibility-slowdebug
+Summary: %{origin_nice} %{majorver} accessibility connector %{for_debug}
%{java_accessibility_rpo -- %{debug_suffix_unquoted}}
-%description accessibility-debug
+%description accessibility-slowdebug
See normal java-%{version}-openjdk-accessibility description.
%endif
@@ -1431,21 +1541,21 @@ Provides: javafx-devel = %{epoch}:%{version}-%{release}
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}
+%package openjfx-slowdebug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-slowdebug
+Requires: %{name}-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx%{?_isa}
-Provides: javafx-debug = %{epoch}:%{version}-%{release}
-%description openjfx-debug
-Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-slowdebug
+Set of links from OpenJDK-slowdebug (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}
+%package openjfx-devel-slowdebug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-slowdebug
+Requires: %{name}-devel-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx-devel%{?_isa}
-Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
-%description openjfx-devel-debug
-Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-devel-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-slowdebug
+Set of links from OpenJDK-slowdebug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
%endif
%endif
@@ -1463,7 +1573,7 @@ else
exit 12
fi
if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then
- echo "you have disabled both include_debug_build and include_debug_build. no go."
+ echo "You have disabled both include_debug_build and include_normal_build. That is a no go."
exit 13
fi
%setup -q -c -n %{uniquesuffix ""} -T -a 0
@@ -1509,9 +1619,8 @@ sh %{SOURCE12}
%patch204
%patch205
%patch206
-#%patch207
-%patch209
%patch210
+
%patch300
%patch1
@@ -1520,20 +1629,21 @@ sh %{SOURCE12}
%patch7
# s390 build fixes
-#%patch100
-#%patch102
-#%patch103
+%patch100
+%patch102
+%patch103
# AArch64 fixes
-#%patch104
+#%patch106
+
+# x86 fixes
+%patch105
# ppc64le fixes
#%patch603
#%patch601
#%patch602
-# Zero fixes.
-
# Upstreamable fixes
%patch502
%patch504
@@ -1554,17 +1664,37 @@ sh %{SOURCE12}
%patch523
%patch526
%patch528
+%patch529
+%patch530
%patch538
-%patch540
%patch560
pushd openjdk/jdk
-%patch529 -p1
+%patch531 -p1
popd
%patch561
+%patch562
+%patch563
+%patch564
+%patch565
+%patch566
+%patch567
+%patch569
+%patch571
+%patch572
+%patch573
+%patch574
+%patch575
+%patch576
+%patch577
+%patch578
+%patch579
+%patch580
+%patch581
# RPM-only fixes
%patch525
%patch539
+%patch540
# RHEL-only patches
%if ! 0%{?fedora} && 0%{?rhel} <= 7
@@ -1573,7 +1703,8 @@ popd
# Shenandoah-only patches
%if %{use_shenandoah_hotspot}
-%patch700
+%else
+%patch570
%endif
%patch1000
@@ -1588,17 +1719,17 @@ cp -r tapset tapset%{debug_suffix}
for suffix in %{build_loop} ; do
for file in "tapset"$suffix/*.in; do
- OUTPUT_FILE=`echo $file | sed -e s:%{javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g`
- sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g $file > $file.1
+ OUTPUT_FILE=`echo $file | sed -e "s:%{systemtap_javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
+ sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g" $file > $file.1
# TODO find out which architectures other than i686 have a client vm
%ifarch %{ix86}
- sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE
+ sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g" $file.1 > $OUTPUT_FILE
%else
- sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE
+ sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE
%endif
- sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
- sed -i -e s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g $OUTPUT_FILE
+ sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE
+ sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE
done
done
# systemtap tapsets ends
@@ -1611,18 +1742,20 @@ for file in %{SOURCE9} %{SOURCE10} ; do
EXT="${FILE##*.}"
NAME="${FILE%.*}"
OUTPUT_FILE=$NAME$suffix.$EXT
- sed -e s:#JAVA_HOME#:%{sdkbindir -- $suffix}:g $file > $OUTPUT_FILE
- sed -i -e s:#JRE_HOME#:%{jrebindir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:#ARCH#:%{version}-%{release}.%{_arch}$suffix:g $OUTPUT_FILE
+ sed -e "s:@JAVA_HOME@:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE
+ sed -i -e "s:@JRE_HOME@:%{jrebindir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
done
done
# Setup nss.cfg
-sed -e s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g %{SOURCE11} > nss.cfg
+sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
%build
-# How many cpu's do we have?
+# How many CPU's do we have?
export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
export NUM_PROC=${NUM_PROC:-1}
%if 0%{?_smp_ncpus_max}
@@ -1630,7 +1763,6 @@ export NUM_PROC=${NUM_PROC:-1}
[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
%endif
-# Build IcedTea and OpenJDK.
%ifarch s390x sparc64 alpha %{power64} %{aarch64}
export ARCH_DATA_MODEL=64
%endif
@@ -1643,23 +1775,28 @@ export CFLAGS="$CFLAGS -mieee"
# Explicitly set the C++ standard as the default has changed on GCC >= 6
EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse"
EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
+
%ifarch %{power64} ppc
# fix rpmlint warnings
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
%endif
export EXTRA_CFLAGS
-(cd openjdk/common/autoconf
+(cd %{top_level_dir_name}/common/autoconf
bash ./autogen.sh
)
for suffix in %{build_loop} ; do
-if [ "$suffix" = "%{debug_suffix}" ] ; then
-debugbuild=%{debugbuild_parameter}
+if [ "x$suffix" = "x" ] ; then
+ debugbuild=release
else
-debugbuild=%{normalbuild_parameter}
+ # change --something to something
+ debugbuild=`echo $suffix | sed "s/-//g"`
fi
+# Variable used in hs_err hook on build failures
+top_dir_abs_path=$(pwd)/%{top_level_dir_name}
+
mkdir -p %{buildoutputdir -- $suffix}
pushd %{buildoutputdir -- $suffix}
@@ -1679,7 +1816,7 @@ bash ../../configure \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
- --with-lcms=bundled \
+ --with-lcms=system \
--with-stdc++lib=dynamic \
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
--with-extra-cflags="$EXTRA_CFLAGS" \
@@ -1701,24 +1838,29 @@ make \
POST_STRIP_CMD="" \
LOG=trace \
SCTP_WERROR= \
- %{targets}
+ %{targets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false )
make zip-docs
# the build (erroneously) removes read permissions from some jars
# this is a regression in OpenJDK 7 (our compiler):
# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
-find images/%{j2sdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
-chmod ugo+r images/%{j2sdkimage}/lib/ct.sym
+find images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
+chmod ugo+r images/%{jdkimage}/lib/ct.sym
# remove redundant *diz and *debuginfo files
-find images/%{j2sdkimage} -iname '*.diz' -exec rm {} \;
-find images/%{j2sdkimage} -iname '*.debuginfo' -exec rm {} \;
+find images/%{jdkimage} -iname '*.diz' -exec rm {} \;
+find images/%{jdkimage} -iname '*.debuginfo' -exec rm {} \;
+
+# Build screws up permissions on binaries
+# https://bugs.openjdk.java.net/browse/JDK-8173610
+find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \;
+find images/%{jdkimage}/bin/ -exec chmod +x {} \;
popd >& /dev/null
# Install nss.cfg right away as we will be using the JRE above
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Install nss.cfg right away as we will be using the JRE above
install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
@@ -1727,7 +1869,7 @@ install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
rm $JAVA_HOME/jre/lib/tzdb.dat
ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat
-#build cycles
+# build cycles
done
%check
@@ -1735,7 +1877,7 @@ done
# We test debug first as it will give better diagnostics on a crash
for suffix in %{rev_build_loop} ; do
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE13}
@@ -1753,14 +1895,14 @@ do
# All these tests rely on RPM failing the build if the exit code of any set
# of piped commands is non-zero.
- # Test for .debug_* sections in the shared object. This is the main test.
- # Stripped objects will not contain these.
+ # Test for .debug_* sections in the shared object. This is the main test
+ # Stripped objects will not contain these
eu-readelf -S "$lib" | grep "] .debug_"
test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
- # Test FILE symbols. These will most likely be removed by anyting that
+ # Test FILE symbols. These will most likely be removed by anything that
# manipulates symbol tables because it's generally useless. So a nice test
- # that nothing has messed with symbols.
+ # that nothing has messed with symbols
old_IFS="$IFS"
IFS=$'\n'
for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT")
@@ -1771,7 +1913,7 @@ do
done
IFS="$old_IFS"
- # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking.
+ # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
if [ "`basename $lib`" = "libjvm.so" ]; then
eu-readelf -s "$lib" | \
grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$"
@@ -1779,7 +1921,7 @@ do
# Test that there are no .gnu_debuglink sections pointing to another
# debuginfo file. There shouldn't be any debuginfo files, so the link makes
- # no sense either.
+ # no sense either
eu-readelf -S "$lib" | grep 'gnu'
if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
echo "bad .gnu_debuglink section."
@@ -1821,7 +1963,7 @@ $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
-#build cycles check
+# build cycles check
done
%install
@@ -1829,9 +1971,10 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+# Install the jdk
+pushd %{buildoutputdir -- $suffix}/images/%{jdkimage}
-#install jsa directories so we can owe them
+# Install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/
@@ -1842,7 +1985,7 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}
%if %{with_systemtap}
- # Install systemtap support files.
+ # Install systemtap support files
install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset
# note, that uniquesuffix is in BUILD dir in this case
cp -a $RPM_BUILD_DIR/%{uniquesuffix ""}/tapset$suffix/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
@@ -1850,28 +1993,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
tapsetFiles=`ls *.stp`
popd
install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
- pushd $RPM_BUILD_ROOT%{tapsetdir}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir -- $suffix}/tapset %{tapsetdir})
- for name in $tapsetFiles ; do
- targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
- ln -sf $RELATIVE/$name $targetName
- done
- popd
+ for name in $tapsetFiles ; do
+ targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
+ ln -sf %{_jvmdir}/%{sdkdir -- $suffix}/tapset/$name $RPM_BUILD_ROOT%{tapsetdir}/$targetName
+ done
%endif
- # Remove empty cacerts database.
+ # 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.
+ # 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 .
+ ln -sf /etc/pki/java/cacerts .
popd
- # Install JCE policy symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix -- $suffix}/jce/vanilla
-
- # Install versioned symlinks.
+ # Install versioned symlinks
pushd $RPM_BUILD_ROOT%{_jvmdir}
ln -sf %{jredir -- $suffix} %{jrelnk -- $suffix}
popd
@@ -1879,11 +2014,11 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
# Remove javaws man page
rm -f man/man1/javaws*
- # Install man pages.
+ # Install man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*
do
- # Convert man pages to UTF8 encoding.
+ # Convert man pages to UTF8 encoding
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
@@ -1902,19 +2037,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
popd
-# Install Javadoc documentation.
+# Install Javadoc documentation
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir -- $suffix}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}
-cp -a %{buildoutputdir -- $suffix}/bundles/jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
+built_doc_archive=`echo "jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip" | sed s/slowdebug/debug/`
+cp -a %{buildoutputdir -- $suffix}/bundles/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
-# Install icons and menu entries.
+# Install icons and menu entries
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png
done
-# Install desktop files.
+# Install desktop files
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
for e in jconsole$suffix policytool$suffix ; do
desktop-file-install --vendor=%{uniquesuffix -- $suffix} --mode=644 \
@@ -1925,7 +2061,7 @@ done
# See https://bugzilla.redhat.com/show_bug.cgi?id=741821
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs
-# FIXME: remove SONAME entries from demo DSOs. See
+# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
@@ -2061,17 +2197,24 @@ 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
+# stabilize permissions
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ;
+
# end, dual install
done
-%if %{include_normal_build}
-# intentioanlly only for non-debug
+%if %{include_normal_build}
+# intentionally only for non-debug
%pretrans headless -p <lua>
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre
-- if copy-jdk-configs is in transaction, it installs in pretrans to temp
--- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in tranasction and so is
--- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
+-- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is
+-- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
-- whether copy-jdk-configs is installed or not. If so, then configs are copied
-- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all
local posix = require "posix"
@@ -2088,10 +2231,10 @@ local stat2 = posix.stat(SOURCE2, "type");
print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.")
end;
package.path = package.path .. ";" .. SOURCE1
-else
+else
if (stat2 ~= nil) then
if (debug) then
- print(SOURCE2 .." exists - copy-jdk-configs alrady installed and NOT in transation. Using.")
+ print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.")
end;
package.path = package.path .. ";" .. SOURCE2
else
@@ -2103,11 +2246,11 @@ else
return
end
end
--- run contetn of included file with fake args
+-- run content of included file with fake args
arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"}
require "copy_jdk_configs.lua"
-%post
+%post
%{post_script %{nil}}
%post headless
@@ -2144,45 +2287,45 @@ require "copy_jdk_configs.lua"
%{postun_javadoc_zip %{nil}}
%endif
-%if %{include_debug_build}
-%post debug
+%if %{include_debug_build}
+%post slowdebug
%{post_script -- %{debug_suffix_unquoted}}
-%post headless-debug
+%post headless-slowdebug
%{post_headless -- %{debug_suffix_unquoted}}
-%postun debug
+%postun slowdebug
%{postun_script -- %{debug_suffix_unquoted}}
-%postun headless-debug
+%postun headless-slowdebug
%{postun_headless -- %{debug_suffix_unquoted}}
-%posttrans debug
+%posttrans slowdebug
%{posttrans_script -- %{debug_suffix_unquoted}}
-%post devel-debug
+%post devel-slowdebug
%{post_devel -- %{debug_suffix_unquoted}}
-%postun devel-debug
+%postun devel-slowdebug
%{postun_devel -- %{debug_suffix_unquoted}}
-%posttrans devel-debug
+%posttrans devel-slowdebug
%{posttrans_devel -- %{debug_suffix_unquoted}}
-%post javadoc-debug
+%post javadoc-slowdebug
%{post_javadoc -- %{debug_suffix_unquoted}}
-%postun javadoc-debug
+%postun javadoc-slowdebug
%{postun_javadoc -- %{debug_suffix_unquoted}}
-%post javadoc-zip-debug
+%post javadoc-zip-slowdebug
%{post_javadoc_zip -- %{debug_suffix_unquoted}}
-%postun javadoc-zip-debug
+%postun javadoc-zip-slowdebug
%{postun_javadoc_zip -- %{debug_suffix_unquoted}}
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files
# main package builds always
%{files_jre %{nil}}
@@ -2192,10 +2335,10 @@ require "copy_jdk_configs.lua"
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files headless
-# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-# all config/norepalce files (and more) have to be declared in pretrans. See pretrans
+# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
+# all config/noreplace files (and more) have to be declared in pretrans. See pretrans
%{files_jre_headless %{nil}}
%files devel
@@ -2210,6 +2353,10 @@ require "copy_jdk_configs.lua"
%files javadoc
%{files_javadoc %{nil}}
+# this puts huge file to /usr/share
+# unluckily ti is really a documentation file
+# and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only
+# same for debug variant
%files javadoc-zip
%{files_javadoc_zip %{nil}}
@@ -2223,39 +2370,43 @@ require "copy_jdk_configs.lua"
%endif
%endif
-%if %{include_debug_build}
-%files debug
+%if %{include_debug_build}
+%files slowdebug
%{files_jre -- %{debug_suffix_unquoted}}
-%files headless-debug
+%files headless-slowdebug
%{files_jre_headless -- %{debug_suffix_unquoted}}
-%files devel-debug
+%files devel-slowdebug
%{files_devel -- %{debug_suffix_unquoted}}
-%files demo-debug -f %{name}-demo.files-debug
+%files demo-slowdebug -f %{name}-demo.files-slowdebug
%{files_demo -- %{debug_suffix_unquoted}}
-%files src-debug
+%files src-slowdebug
%{files_src -- %{debug_suffix_unquoted}}
-%files javadoc-debug
+%files javadoc-slowdebug
%{files_javadoc -- %{debug_suffix_unquoted}}
-%files javadoc-zip-debug
+%files javadoc-zip-slowdebug
%{files_javadoc_zip -- %{debug_suffix_unquoted}}
-%files accessibility-debug
+%files accessibility-slowdebug
%{files_accessibility -- %{debug_suffix_unquoted}}
%if %{with_openjfx_binding}
-%files openjfx-debug -f %{name}-openjfx.files-debug
+%files openjfx-slowdebug -f %{name}-openjfx.files-slowdebug
-%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%files openjfx-devel-slowdebug -f %{name}-openjfx-devel.files-slowdebug
%endif
%endif
%changelog
+* Thu Aug 30 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.181-1.180802
+- update sources to 8u181
+- sync with mainline package
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
diff --git a/java-1.8.0-openjdk-size_t.patch b/java-1.8.0-openjdk-size_t.patch
index c9c6b97..6e0d762 100644
--- a/java-1.8.0-openjdk-size_t.patch
+++ b/java-1.8.0-openjdk-size_t.patch
@@ -1,7 +1,7 @@
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -2659,7 +2659,7 @@ void CFLS_LAB::get_from_global_pool(size
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+@@ -2659,7 +2659,7 @@
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
@@ -10,10 +10,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compact
}
assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -957,7 +957,7 @@ void ConcurrentMarkSweepGeneration::comp
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+@@ -957,7 +957,7 @@
if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size");
@@ -22,7 +22,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: ");
-@@ -6575,7 +6575,7 @@ void CMSCollector::reset(bool asynch) {
+@@ -6577,7 +6577,7 @@
HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
@@ -31,7 +31,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
_markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() &&
-@@ -6873,7 +6873,7 @@ void CMSMarkStack::expand() {
+@@ -6875,7 +6875,7 @@
return;
}
// Double capacity if possible
@@ -40,10 +40,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
// Do not give up existing stack until we have managed to
// get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -3902,7 +3902,7 @@ void CMTask::drain_local_queue(bool part
+diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+@@ -3903,7 +3903,7 @@
// of things to do) or totally (at the very end).
size_t target_size;
if (partially) {
@@ -52,7 +52,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
} else {
target_size = 0;
}
-@@ -4728,7 +4728,7 @@ size_t G1PrintRegionLivenessInfoClosure:
+@@ -4707,7 +4707,7 @@
// The > 0 check is to deal with the prev and next live bytes which
// could be 0.
if (*hum_bytes > 0) {
@@ -61,10 +61,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
*hum_bytes -= bytes;
}
return bytes;
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1726,7 +1726,7 @@ HeapWord* G1CollectedHeap::expand_and_al
+diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+@@ -1726,7 +1726,7 @@
verify_region_sets_optional();
@@ -73,10 +73,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size
ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion",
ergo_format_reason("allocation request failed")
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -38,7 +38,7 @@ G1StringDedupQueue::G1StringDedupQueue()
+diff --git a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+@@ -117,7 +117,7 @@
+ return reserved_size() - committed_size();
+ }
+
+-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
++uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+ return (addr - _low_boundary) / _page_size;
+ }
+
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+@@ -38,7 +38,7 @@
_cancel(false),
_empty(true),
_dropped(0) {
@@ -85,22 +97,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.s
_queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
for (size_t i = 0; i < _nqueues; i++) {
new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -110,7 +110,7 @@ public:
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+@@ -120,7 +120,7 @@
};
- G1StringDedupEntryCache::G1StringDedupEntryCache() {
-- _nlists = MAX2(ParallelGCThreads, (size_t)1);
-+ _nlists = MAX2(ParallelGCThreads, (uintx)1);
- _lists = PaddedArray<G1StringDedupEntryFreeList, mtGC>::create_unfreeable((uint)_nlists);
- }
-
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -109,7 +109,7 @@ void HeapRegion::setup_heap_region_size(
+ G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
+- _nlists(MAX2(ParallelGCThreads, (size_t)1)),
++ _nlists(MAX2(ParallelGCThreads, (uintx)1)),
+ _max_list_length(0),
+ _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
+ _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
+diff --git a/src/share/vm/gc_implementation/g1/heapRegion.cpp b/src/share/vm/gc_implementation/g1/heapRegion.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
+@@ -109,7 +109,7 @@
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
@@ -109,10 +121,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jd
}
int region_size_log = log2_long((jlong) region_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -194,7 +194,7 @@ bool ParScanThreadState::take_from_overf
+diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+@@ -194,7 +194,7 @@
const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4,
@@ -121,10 +133,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow
// stack to our work queue.
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -910,8 +910,8 @@ void PSParallelCompact::initialize_space
+diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+@@ -910,8 +910,8 @@
void PSParallelCompact::initialize_dead_wood_limiter()
{
const size_t max = 100;
@@ -135,10 +147,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallel
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0);
-diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -385,7 +385,7 @@ void TwoGenerationCollectorPolicy::initi
+diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+@@ -385,7 +385,7 @@
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
@@ -147,7 +159,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to
-@@ -433,7 +433,7 @@ void GenCollectorPolicy::initialize_size
+@@ -433,7 +433,7 @@
// yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize.
@@ -156,7 +168,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
}
assert(max_new_size > 0, "All paths should set max_new_size");
-@@ -455,24 +455,23 @@ void GenCollectorPolicy::initialize_size
+@@ -455,24 +455,23 @@
// lower limit.
_min_gen0_size = NewSize;
desired_new_size = NewSize;
@@ -186,7 +198,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
assert(_min_gen0_size > 0, "Sanity check");
_initial_gen0_size = desired_new_size;
-@@ -573,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi
+@@ -573,7 +572,7 @@
} else {
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
@@ -195,10 +207,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
-diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp
---- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1455,7 +1455,7 @@ void MetaspaceGC::initialize() {
+diff --git a/src/share/vm/memory/metaspace.cpp b/src/share/vm/memory/metaspace.cpp
+--- openjdk/hotspot/src/share/vm/memory/metaspace.cpp
++++ openjdk/hotspot/src/share/vm/memory/metaspace.cpp
+@@ -1455,7 +1455,7 @@
void MetaspaceGC::post_initialize() {
// Reset the high-water mark once the VM initialization is done.
@@ -207,7 +219,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
}
bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
-@@ -1515,7 +1515,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1515,7 +1515,7 @@
(size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity,
@@ -216,7 +228,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
-@@ -1573,7 +1573,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1573,7 +1573,7 @@
const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity,
@@ -225,7 +237,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f"
-@@ -3245,7 +3245,7 @@ void Metaspace::global_initialize() {
+@@ -3285,7 +3285,7 @@
// on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
@@ -234,10 +246,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size.
-diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -238,13 +238,13 @@ size_t ThreadLocalAllocBuffer::initial_d
+diff --git a/src/share/vm/memory/threadLocalAllocBuffer.cpp b/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+@@ -238,13 +238,13 @@
size_t init_sz = 0;
if (TLABSize > 0) {
@@ -254,10 +266,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8
init_sz = align_object_size(init_sz);
}
init_sz = MIN2(MAX2(init_sz, min_size()), max_size());
-diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
---- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2015-06-09 10:21:39.000000000 -0400
-@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont
+diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+@@ -48,7 +48,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -266,7 +278,7 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont
+@@ -82,7 +82,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -275,10 +287,10 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp
---- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1277,7 +1277,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1283,7 +1283,7 @@
// NewSize was set on the command line and it is larger than
// preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
@@ -287,7 +299,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
} else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
}
-@@ -1302,8 +1302,8 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1308,8 +1308,8 @@
// Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) {
@@ -298,7 +310,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1313,7 +1313,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1319,7 +1319,7 @@
// so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) {
@@ -307,15 +319,3 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t 2015-06-09 10:35:04.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp 2015-06-09 10:33:21.000000000 -0400
-@@ -117,7 +117,7 @@ size_t G1PageBasedVirtualSpace::uncommit
- return reserved_size() - committed_size();
- }
-
--size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
-+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
- return (addr - _low_boundary) / _page_size;
- }
-
diff --git a/jconsole.desktop.in b/jconsole.desktop.in
index a096349..a8917c1 100644
--- a/jconsole.desktop.in
+++ b/jconsole.desktop.in
@@ -1,10 +1,10 @@
[Desktop Entry]
-Name=OpenJDK 8 Monitoring & Management Console #ARCH#
-Comment=Monitor and manage OpenJDK applications for #ARCH#
-Exec=#JAVA_HOME#/jconsole
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
+Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
+Exec=@JAVA_HOME@/jconsole
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
-Categories=Development;Monitor;Java;
+Categories=Development;Profiling;Java;
Version=1.0
diff --git a/policytool.desktop.in b/policytool.desktop.in
index d38b42d..e05969d 100644
--- a/policytool.desktop.in
+++ b/policytool.desktop.in
@@ -1,8 +1,8 @@
[Desktop Entry]
-Name=OpenJDK 8 Policy Tool #ARCH#
-Comment=Manage OpenJDK policy files #ARCH#
-Exec=#JRE_HOME#/policytool
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Policy Tool #ARCH#
+Comment=Manage OpenJDK @JAVA_MAJOR_VERSION@ policy files #ARCH#
+Exec=@JRE_HOME@/policytool
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-security-tools-PolicyTool
diff --git a/pr3183.patch b/pr3183.patch
new file mode 100644
index 0000000..5a619b4
--- /dev/null
+++ b/pr3183.patch
@@ -0,0 +1,158 @@
+
+# HG changeset patch
+# User andrew
+# Date 1478057514 0
+# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
+# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
+PR3183: Support Fedora/RHEL system crypto policy
+
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
+--- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
+@@ -43,6 +43,9 @@
+ * implementation-specific location, which is typically the properties file
+ * {@code lib/security/java.security} in the Java installation directory.
+ *
++ * <p>Additional default values of security properties are read from a
++ * system-specific location, if available.</p>
++ *
+ * @author Benjamin Renaud
+ */
+
+@@ -52,6 +55,10 @@
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+
++ /* System property file*/
++ private static final String SYSTEM_PROPERTIES =
++ "/etc/crypto-policies/back-ends/java.config";
++
+ /* The java.security properties */
+ private static Properties props;
+
+@@ -93,6 +100,7 @@
+ if (sdebug != null) {
+ sdebug.println("reading security properties file: " +
+ propFile);
++ sdebug.println(props.toString());
+ }
+ } catch (IOException e) {
+ if (sdebug != null) {
+@@ -114,6 +122,31 @@
+ }
+
+ if ("true".equalsIgnoreCase(props.getProperty
++ ("security.useSystemPropertiesFile"))) {
++
++ // now load the system file, if it exists, so its values
++ // will win if they conflict with the earlier values
++ try (BufferedInputStream bis =
++ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
++ props.load(bis);
++ loadedProps = true;
++
++ if (sdebug != null) {
++ sdebug.println("reading system security properties file " +
++ SYSTEM_PROPERTIES);
++ sdebug.println(props.toString());
++ }
++ } catch (IOException e) {
++ if (sdebug != null) {
++ sdebug.println
++ ("unable to load security properties from " +
++ SYSTEM_PROPERTIES);
++ e.printStackTrace();
++ }
++ }
++ }
++
++ if ("true".equalsIgnoreCase(props.getProperty
+ ("security.overridePropertiesFile"))) {
+
+ String extraPropFile = System.getProperty
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
+--- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=true
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
+--- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
+--- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
+@@ -278,6 +278,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
+--- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+
diff --git a/pr3539-rh1548475.patch b/pr3539-rh1548475.patch
new file mode 100644
index 0000000..0bae3de
--- /dev/null
+++ b/pr3539-rh1548475.patch
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User andrew
+# Date 1526065930 -3600
+# Fri May 11 20:12:10 2018 +0100
+# Node ID b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+# Parent afb31413c73cbc06420fdb447aa90a7a38258904
+PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/jsig.make openjdk/hotspot/make/aix/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/aix/makefiles/jsig.make
++++ openjdk/hotspot/make/aix/makefiles/jsig.make
+@@ -45,7 +45,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ LFLAGS_JSIG += $(BIN_UTILS)
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/saproc.make openjdk/hotspot/make/aix/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/aix/makefiles/saproc.make
++++ openjdk/hotspot/make/aix/makefiles/saproc.make
+@@ -66,7 +66,7 @@
+ endif
+
+
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
+ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+diff --git openjdk.orig/hotspot/make/aix/makefiles/vm.make openjdk/hotspot/make/aix/makefiles/vm.make
+--- openjdk.orig/hotspot/make/aix/makefiles/vm.make
++++ openjdk/hotspot/make/aix/makefiles/vm.make
+@@ -117,7 +117,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/jsig.make openjdk/hotspot/make/bsd/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/jsig.make
++++ openjdk/hotspot/make/bsd/makefiles/jsig.make
+@@ -52,7 +52,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/saproc.make openjdk/hotspot/make/bsd/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/saproc.make
++++ openjdk/hotspot/make/bsd/makefiles/saproc.make
+@@ -114,7 +114,7 @@
+ # bring in minimum version argument or we'll fail on OSX 10.10
+ SA_LFLAGS = $(LFLAGS)
+ endif
+-SA_LFLAGS += $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS += $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \
+ -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]")
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/vm.make openjdk/hotspot/make/bsd/makefiles/vm.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/vm.make
++++ openjdk/hotspot/make/bsd/makefiles/vm.make
+@@ -119,7 +119,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -44,7 +44,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -73,7 +73,7 @@
+ else
+ ALT_SAINCDIR=
+ endif
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ SAARCH ?= $(BUILDARCH)
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -130,7 +130,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
diff --git a/pr3559.patch b/pr3559.patch
new file mode 100644
index 0000000..48211dc
--- /dev/null
+++ b/pr3559.patch
@@ -0,0 +1,29 @@
+# HG changeset patch
+# User aph
+# Date 1338206478 14400
+# Mon May 28 08:01:18 2012 -0400
+# Node ID 6275d7b419091092752d5a1854194c98897892ba
+# Parent be1379a186ba527b32c93a83e04c9600735fe44b
+PR3559: Use ldrexd for atomic reads on ARMv7.
+
+2012-05-28 Andrew Haley <aph(a)redhat.com>
+
+ * os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
+ on ARMv7.
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -54,6 +54,12 @@
+ "std %0, 0(%2)\n"
+ : "=r"(tmp)
+ : "a"(src), "a"(dst));
++#elif defined(__ARM_ARCH_7A__)
++ jlong tmp;
++ asm volatile ("ldrexd %0, [%1]\n"
++ : "=r"(tmp)
++ : "r"(src), "m"(src));
++ *(jlong *) dst = tmp;
+ #else
+ *(jlong *) dst = *(jlong *) src;
+ #endif
diff --git a/pr3575-rh1567204.patch b/pr3575-rh1567204.patch
new file mode 100644
index 0000000..ce24c59
--- /dev/null
+++ b/pr3575-rh1567204.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User andrew
+# Date 1525111445 -3600
+# Mon Apr 30 19:04:05 2018 +0100
+# Node ID 388fc8da23044317c160678ffa8ff541c216a255
+# Parent 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+PR3575: System cacerts database handling should not affect jssecacerts
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+@@ -162,7 +162,7 @@
+ * Try:
+ * javax.net.ssl.trustStore (if this variable exists, stop)
+ * jssecacerts
+- * cacerts
++ * cacerts (system and local)
+ *
+ * If none exists, we use an empty keystore.
+ */
+@@ -174,14 +174,14 @@
+ storeFile = new File(storeFileName);
+ fis = getFileInputStream(storeFile);
+ } else {
+- /* Check system cacerts DB first; /etc/pki/java/cacerts */
+- storeFile = new File(sep + "etc" + sep + "pki" + sep
+- + "java" + sep + "cacerts");
++ String javaHome = props.get("javaHome");
++ storeFile = new File(javaHome + sep + "lib" + sep
++ + "security" + sep +
++ "jssecacerts");
+ if ((fis = getFileInputStream(storeFile)) == null) {
+- 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) {
+ storeFile = new File(javaHome + sep + "lib" + sep
+ + "security" + sep +
diff --git a/pr3591.patch b/pr3591.patch
new file mode 100644
index 0000000..e287590
--- /dev/null
+++ b/pr3591.patch
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User andrew
+# Date 1526489197 -3600
+# Wed May 16 17:46:37 2018 +0100
+# Node ID 64e87a408afd2b56d59dad73dee28d4b99463810
+# Parent 00ccc73498628a51a45301322e64ce2ad06e49be
+PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -794,6 +794,8 @@
+ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
+ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ CFLAGS_JDK="${CFLAGS_JDK} ${REALIGN_CFLAG}"
++ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${REALIGN_CFLAG}"
+ AC_SUBST([REALIGN_CFLAG])
+ fi
+
diff --git a/pr3593-s390-size_t_format_flags.patch b/pr3593-s390-size_t_format_flags.patch
new file mode 100644
index 0000000..b9ae9ab
--- /dev/null
+++ b/pr3593-s390-size_t_format_flags.patch
@@ -0,0 +1,143 @@
+diff -r cf43a852f486 src/share/vm/asm/codeBuffer.cpp
+--- openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -977,7 +977,7 @@
+ for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) {
+ CodeSection* sect = code_section(n);
+ if (!sect->is_allocated() || sect->is_empty()) continue;
+- xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>",
++ xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>",
+ n, sect->limit() - sect->start(), sect->limit() - sect->end());
+ }
+ xtty->print_cr("</blob>");
+diff -r cf43a852f486 src/share/vm/code/codeCache.cpp
+--- openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -191,7 +191,7 @@
+ }
+ if (PrintCodeCacheExtension) {
+ ResourceMark rm;
+- tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)",
++ tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)",
+ (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(),
+ (address)_heap->high() - (address)_heap->low_boundary());
+ }
+diff -r cf43a852f486 src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -556,7 +556,7 @@
+ " [Table]\n"
+ " [Memory Usage: "G1_STRDEDUP_BYTES_FORMAT_NS"]\n"
+ " [Size: "SIZE_FORMAT", Min: "SIZE_FORMAT", Max: "SIZE_FORMAT"]\n"
+- " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " UINTX_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
++ " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " SIZE_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
+ " [Resize Count: "UINTX_FORMAT", Shrink Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS"), Grow Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS")]\n"
+ " [Rehash Count: "UINTX_FORMAT", Rehash Threshold: "UINTX_FORMAT", Hash Seed: 0x%x]\n"
+ " [Age Threshold: "UINTX_FORMAT"]",
+diff -r cf43a852f486 src/share/vm/memory/blockOffsetTable.cpp
+--- openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -57,7 +57,7 @@
+ gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: ");
+ gclog_or_tty->print_cr(" "
+ " rs.base(): " INTPTR_FORMAT
+- " rs.size(): " INTPTR_FORMAT
++ " rs.size(): " SIZE_FORMAT
+ " rs end(): " INTPTR_FORMAT,
+ p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size()));
+ gclog_or_tty->print_cr(" "
+diff -r cf43a852f486 src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1285,14 +1285,14 @@
+ }
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
++ tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize);
+ }
+
+ // Code along this path potentially sets NewSize and OldSize
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
+- " initial_heap_size: " SIZE_FORMAT
++ tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT
++ " initial_heap_size: " UINTX_FORMAT
+ " max_heap: " SIZE_FORMAT,
+ min_heap_size(), InitialHeapSize, max_heap);
+ }
+@@ -1308,7 +1308,7 @@
+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t)NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
++ tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize);
+ }
+ }
+ // Unless explicitly requested otherwise, size old gen
+@@ -1318,7 +1318,7 @@
+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
++ tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize);
+ }
+ }
+ }
+@@ -1834,7 +1834,7 @@
+
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
++ tty->print_cr(" Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial);
+ }
+ FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
+ }
+@@ -1844,7 +1844,7 @@
+ set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size());
++ tty->print_cr(" Minimum heap size " UINTX_FORMAT, min_heap_size());
+ }
+ }
+ }
+diff -r cf43a852f486 src/share/vm/utilities/globalDefinitions.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1382,12 +1382,21 @@
+
+ #define INTPTR_FORMAT_W(width) "%" #width PRIxPTR
+
++#if defined(S390) && !defined(_LP64)
++#define SSIZE_FORMAT "%z" PRIdPTR
++#define SIZE_FORMAT "%z" PRIuPTR
++#define SIZE_FORMAT_HEX "0x%z" PRIxPTR
++#define SSIZE_FORMAT_W(width) "%" #width "z" PRIdPTR
++#define SIZE_FORMAT_W(width) "%" #width "z" PRIuPTR
++#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR
++#else // !S390
+ #define SSIZE_FORMAT "%" PRIdPTR
+ #define SIZE_FORMAT "%" PRIuPTR
+ #define SIZE_FORMAT_HEX "0x%" PRIxPTR
+ #define SSIZE_FORMAT_W(width) "%" #width PRIdPTR
+ #define SIZE_FORMAT_W(width) "%" #width PRIuPTR
+ #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR
++#endif // S390
+
+ #define INTX_FORMAT "%" PRIdPTR
+ #define UINTX_FORMAT "%" PRIuPTR
+diff -r 388e9d0905e6 src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Mon Apr 11 11:33:18 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Tue Apr 12 04:12:50 2016 +0100
+@@ -1056,7 +1056,8 @@
+ size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size);
+ assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected));
+ assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,
+- err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize));
++ err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT,
++ expected, NewSize));
+ }
+
+ private:
diff --git a/pr3601.patch b/pr3601.patch
new file mode 100644
index 0000000..d1e9576
--- /dev/null
+++ b/pr3601.patch
@@ -0,0 +1,38 @@
+# HG changeset patch
+# User andrew
+# Date 1529475043 -3600
+# Wed Jun 20 07:10:43 2018 +0100
+# Node ID f6341f4635dacb56678264d29a88cd052b74036b
+# Parent 30520d5018b509b0ae68f5fcc9a5c540e3e5b2de
+PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -835,7 +835,7 @@
+ JVM_ENTRY(jboolean, JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname))
+ JVMWrapper("JVM_KnownToNotExist");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::known_to_not_exist(env, loader, classname, CHECK_(false));
++ return ClassLoaderExt::known_to_not_exist(env, loader, classname, THREAD);
+ #else
+ return false;
+ #endif
+@@ -845,7 +845,7 @@
+ JVM_ENTRY(jobjectArray, JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader))
+ JVMWrapper("JVM_GetResourceLookupCacheURLs");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache_urls(env, loader, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache_urls(env, loader, THREAD);
+ #else
+ return NULL;
+ #endif
+@@ -855,7 +855,7 @@
+ JVM_ENTRY(jintArray, JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name))
+ JVMWrapper("JVM_GetResourceLookupCache");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, THREAD);
+ #else
+ return NULL;
+ #endif
diff --git a/rh1566890_embargoed20180521.patch b/rh1566890_embargoed20180521.patch
new file mode 100644
index 0000000..e29bdb9
--- /dev/null
+++ b/rh1566890_embargoed20180521.patch
@@ -0,0 +1,44 @@
+# ssbd2.patch
+--- ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp~ 2018-05-02 13:02:51.924489199 -0400
++++ ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2018-05-02 13:04:57.274216581 -0400
+@@ -102,6 +102,8 @@
+ # include <inttypes.h>
+ # include <sys/ioctl.h>
+
++#include <sys/prctl.h>
++
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+
+ #ifndef _GNU_SOURCE
+@@ -4892,6 +4894,31 @@
+ }
+ }
+
++/* Per task speculation control */
++#ifndef PR_GET_SPECULATION_CTRL
++#define PR_GET_SPECULATION_CTRL 52
++#endif
++#ifndef PR_SET_SPECULATION_CTRL
++#define PR_SET_SPECULATION_CTRL 53
++#endif
++/* Speculation control variants */
++# undef PR_SPEC_STORE_BYPASS
++# define PR_SPEC_STORE_BYPASS 0
++/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
++# undef PR_SPEC_NOT_AFFECTED
++# undef PR_SPEC_PRCTL
++# undef PR_SPEC_ENABLE
++# undef PR_SPEC_DISABLE
++# define PR_SPEC_NOT_AFFECTED 0
++# define PR_SPEC_PRCTL (1UL << 0)
++# define PR_SPEC_ENABLE (1UL << 1)
++# define PR_SPEC_DISABLE (1UL << 2)
++
++static void set_speculation() __attribute__((constructor));
++static void set_speculation() {
++ prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
++}
++
+ // this is called _before_ the most of global arguments have been parsed
+ void os::init(void) {
+ char dummy; /* used to get a guess on initial stack address */
diff --git a/rhbz1548475-LDFLAGSusage.patch b/rhbz1548475-LDFLAGSusage.patch
deleted file mode 100644
index 243c71b..0000000
--- a/rhbz1548475-LDFLAGSusage.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-# User jvanek
-# https://bugzilla.redhat.com/show_bug.cgi?id=1548475
-# java-1.8.0-openjdk: Partial build flags injection
-# LFLAGS += $(EXTRA_CFLAGS) corrected to LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
---- openjdk/hotspot/make/aix/makefiles/vm.make
-+++ openjdk/hotspot/make/aix/makefiles/vm.make
-@@ -117,7 +117,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/bsd/makefiles/vm.make
-+++ openjdk/hotspot/make/bsd/makefiles/vm.make
-@@ -119,7 +119,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -122,7 +122,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -73,7 +73,7 @@
- else
- ALT_SAINCDIR=
- endif
--SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
-+SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- SAARCH ?= $(BUILDARCH)
-
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -44,7 +44,7 @@ LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
- # cause problems with interposing. See CR: 6466665
- # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
--LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
- ifeq ($(DEBUG_BINARIES), true)
diff --git a/rhbz_1538767_fix_linking.patch b/rhbz_1538767_fix_linking.patch
deleted file mode 100644
index b321611..0000000
--- a/rhbz_1538767_fix_linking.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User sgehwolf
-# Date 1523360781 -7200
-# Tue Apr 10 13:46:21 2018 +0200
-# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
-# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
-8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
-Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
-
-diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
---- a/make/lib/Awt2dLibraries.gmk
-+++ b/make/lib/Awt2dLibraries.gmk
-@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
- BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
- endif
-
-+# LDFLAGS clarification:
-+# Filter relevant linker flags disallowing unresolved symbols as we cannot
-+# build-time decide to which library to link against (libawt_headless or
-+# libawt_xawt). See JDK-8196516 for details.
- $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- LIBRARY := fontmanager, \
- OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
- -DCC_NOEX, \
- MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
-- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
-+ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
-+ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/sources b/sources
index ad9eb3b..9132140 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz) = 30c94eee26b2134cb254786d7d9dcc3ef7a05ec545d60edcda098b77247bc1f276345bde5555b373b58a7b29e66e8f5bb07fd34813460f7a7f07008a611bb43a
+SHA512 (aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz) = dc0def6e3c25653bfcd9a3463c8946cfa7ea60eba86be28a5c372d7a1306f7acfafdf18c110bdc33fff961c9af0d085e65cbcbe5d68d1960b2b10b161d5c970a
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
diff --git a/suse_linuxfilestore.patch b/suse_linuxfilestore.patch
deleted file mode 100644
index 6a9f643..0000000
--- a/suse_linuxfilestore.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
-+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
-@@ -74,8 +74,16 @@
- } catch (UnixException x) {
- x.rethrowAsIOException(parent);
- }
-- if (attrs.dev() != dev())
-- break;
-+ if (attrs.dev() != dev()) {
-+
-+ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
-+ // find the file system even when not in /etc/mtab)
-+ byte[] dir = path.asByteArray();
-+ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
-+ if (Arrays.equals(dir, entry.dir()))
-+ return entry;
-+ }
-+ }
- path = parent;
- parent = parent.getParent();
- }
commit 3fabb2dd19ad3b6fc9191292b1d97dc1e7a66142
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 13 06:03:40 2018 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 573c2a4..503eeca 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -989,7 +989,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
Name: java-%{javaver}-%{origin}-aarch32
Version: %{javaver}.%{updatever}
-Release: 1.%{buildver}%{?dist}
+Release: 2.%{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
@@ -2256,6 +2256,9 @@ require "copy_jdk_configs.lua"
%endif
%changelog
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
* Sun May 27 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.171-1.180511
- update sources to 8u171
- sync with mainline package
5 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.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-aarch32.git/co....
Change:
-%ifarch %{aarch64}
Thanks.
Full change:
============
commit d6f9d063833af31676df653da8f9b24fecfbbd86
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Sep 4 20:15:12 2018 +0000
8u181 update
diff --git a/.gitignore b/.gitignore
index 308ced8..7c80fdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/aarch32-port-jdk8u-jdk8u152-b17-aarch32-171102.tar.xz
/aarch32-port-jdk8u-jdk8u161-b12-aarch32-180220.tar.xz
/aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz
+/aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz
diff --git a/8035496-hotspot.patch b/8035496-hotspot.patch
deleted file mode 100644
index 426bdbe..0000000
--- a/8035496-hotspot.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-# HG changeset patch
-# User bdelsart
-# Date 1508481469 -28800
-# Fri Oct 20 14:37:49 2017 +0800
-# Node ID 111ed1a4719008b83bf427ae16bbeac2a7a516bc
-# Parent 471de666658d7ec14c5d3f97076fb95f70dd6ffa
-8035496: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0
-Summary: release_store used when registering a PerRegionTable. Also reviewed-by: vitalyd(a)gmail.com
-Reviewed-by: jmasa, tschatzl, brutisso
-
-diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-@@ -514,7 +514,15 @@
-
- PerRegionTable* first_prt = _fine_grain_regions[ind];
- prt->set_collision_list_next(first_prt);
-- _fine_grain_regions[ind] = prt;
-+ // The assignment into _fine_grain_regions allows the prt to
-+ // start being used concurrently. In addition to
-+ // collision_list_next which must be visible (else concurrent
-+ // parsing of the list, if any, may fail to see other entries),
-+ // the content of the prt must be visible (else for instance
-+ // some mark bits may not yet seem cleared or a 'later' update
-+ // performed by a concurrent thread could be undone when the
-+ // zeroing becomes visible). This requires store ordering.
-+ OrderAccess::release_store_ptr((volatile PerRegionTable*)&_fine_grain_regions[ind], prt);
- _n_fine_entries++;
-
- if (G1HRRSUseSparseTable) {
diff --git a/8062808-pr3548.patch b/8062808-pr3548.patch
new file mode 100644
index 0000000..e91abd3
--- /dev/null
+++ b/8062808-pr3548.patch
@@ -0,0 +1,191 @@
+# HG changeset patch
+# User stefank
+# Date 1525453613 -3600
+# Fri May 04 18:06:53 2018 +0100
+# Node ID 07a1135a327362f157955d470fad5df07cc35164
+# Parent de79964656fc652f2085dac4fe99bcc128b5a3b1
+8062808, PR3548: Turn on the -Wreturn-type warning
+Reviewed-by: mgerdin, tschatzl, coleenp, jrose, kbarrett
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
++++ openjdk/hotspot/make/linux/makefiles/gcc.make
+@@ -210,7 +210,7 @@
+ WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
+ endif
+
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
++WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wreturn-type
+
+ ifeq ($(USE_CLANG),)
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+diff --git openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+--- openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad
++++ openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+@@ -1250,6 +1250,7 @@
+
+
+ Unimplemented();
++ return 0; // Mute compiler
+ }
+
+ #ifndef PRODUCT
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -541,6 +541,7 @@
+ err.report_and_die();
+
+ ShouldNotReachHere();
++ return true; // Mute compiler
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp
++++ openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+@@ -506,7 +506,7 @@
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+ Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
+@@ -521,7 +521,7 @@
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ }
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp
++++ openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+@@ -249,7 +249,7 @@
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+ // Otherwise, add to symbol to table
+- return the_table()->basic_add(index, (u1*)name, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)name, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup(const Symbol* sym, int begin, int end, TRAPS) {
+@@ -288,7 +288,7 @@
+ // Grab SymbolTable_lock first.
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+- return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup_only(const char* name, int len,
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp
++++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+@@ -229,15 +229,15 @@
+ class_name->as_C_string(),
+ class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string()));
+ if (FieldType::is_array(class_name)) {
+- return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ } else if (FieldType::is_obj(class_name)) {
+ ResourceMark rm(THREAD);
+ // Ignore wrapping L and ;.
+ TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
+ class_name->utf8_length() - 2, CHECK_NULL);
+- return resolve_instance_class_or_null(name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
+ } else {
+- return resolve_instance_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp
++++ openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+@@ -367,7 +367,7 @@
+ _csv_format(csv_format), _print_help(print_help),
+ _print_class_stats(print_class_stats), _columns(columns) {}
+ void heap_inspection(outputStream* st) NOT_SERVICES_RETURN;
+- size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN;
++ size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN_(0);
+ static void find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) NOT_SERVICES_RETURN;
+ private:
+ void iterate_over_heap(KlassInfoTable* cit, BoolObjectClosure* filter = NULL);
+diff --git openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp
++++ openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+@@ -93,7 +93,7 @@
+ static void preload_and_dump(TRAPS) NOT_CDS_RETURN;
+ static int preload_and_dump(const char * class_list_path,
+ GrowableArray<Klass*>* class_promote_order,
+- TRAPS) NOT_CDS_RETURN;
++ TRAPS) NOT_CDS_RETURN_(0);
+
+ static ReservedSpace* shared_rs() {
+ CDS_ONLY(return _shared_rs);
+diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+--- openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp
++++ openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+@@ -352,7 +352,7 @@
+
+ Klass* klass_at(int which, TRAPS) {
+ constantPoolHandle h_this(THREAD, this);
+- return klass_at_impl(h_this, which, CHECK_NULL);
++ return klass_at_impl(h_this, which, THREAD);
+ }
+
+ Symbol* klass_name_at(int which); // Returns the name, w/o resolving.
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -4244,7 +4244,7 @@
+ JVM_DTraceProvider* providers))
+ JVMWrapper("JVM_DTraceActivate");
+ return DTraceJSDT::activate(
+- version, module_name, providers_count, providers, CHECK_0);
++ version, module_name, providers_count, providers, THREAD);
+ JVM_END
+
+ JVM_ENTRY(jboolean,JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method))
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp
++++ openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+@@ -1093,7 +1093,7 @@
+ } else {
+ if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT)
+ narrow((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
+- return box((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
++ return box((jvalue*) result.get_value_addr(), rtype, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+@@ -1046,7 +1046,7 @@
+ // last java frame on stack (which includes native call frames)
+ vframeStream vfst(thread, true); // Do not skip and javaCalls
+
+- return find_callee_info_helper(thread, vfst, bc, callinfo, CHECK_(Handle()));
++ return find_callee_info_helper(thread, vfst, bc, callinfo, THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp openjdk/hotspot/src/share/vm/services/memTracker.hpp
+--- openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp
++++ openjdk/hotspot/src/share/vm/services/memTracker.hpp
+@@ -64,7 +64,7 @@
+ const NativeCallStack& stack, MEMFLAGS flag = mtNone) { }
+ static inline void record_virtual_memory_commit(void* addr, size_t size, const NativeCallStack& stack) { }
+ static inline Tracker get_virtual_memory_uncommit_tracker() { return Tracker(); }
+- static inline Tracker get_virtual_memory_release_tracker() { }
++ static inline Tracker get_virtual_memory_release_tracker() { return Tracker(); }
+ static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) { }
+ static inline void record_thread_stack(void* addr, size_t size) { }
+ static inline void release_thread_stack(void* addr, size_t size) { }
diff --git a/8064786-pr3599.patch b/8064786-pr3599.patch
new file mode 100644
index 0000000..790ee0d
--- /dev/null
+++ b/8064786-pr3599.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User goetz
+# Date 1415873641 -3600
+# Thu Nov 13 11:14:01 2014 +0100
+# Node ID 1878c4c1d04e1f3c6f67a19d36c35863d6b5f906
+# Parent 533473c67de6ff767710594639033c8e83523fe5
+8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Reviewed-by: stefank, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp
+@@ -708,6 +708,7 @@
+
+ THROW_OOP_(JNIHandles::resolve(obj), JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+ #ifndef USDT2
+@@ -734,6 +735,7 @@
+ Handle protection_domain (THREAD, k->protection_domain());
+ THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+
diff --git a/8075942-pr3602-rh1582032.patch b/8075942-pr3602-rh1582032.patch
new file mode 100644
index 0000000..bd2a40e
--- /dev/null
+++ b/8075942-pr3602-rh1582032.patch
@@ -0,0 +1,95 @@
+# HG changeset patch
+# User prr
+# Date 1429299166 25200
+# Fri Apr 17 12:32:46 2015 -0700
+# Node ID 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+# Parent 533117ae5b7587c8d9c0612581682ab984475430
+8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Reviewed-by: flar, lbourges
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+@@ -146,7 +146,7 @@
+ if (dashOn) {
+ if (starting) {
+ firstSegmentsBuffer = Helpers.widenArray(firstSegmentsBuffer,
+- firstSegidx, type - 2);
++ firstSegidx, type - 2 + 1);
+ firstSegmentsBuffer[firstSegidx++] = type;
+ System.arraycopy(pts, off, firstSegmentsBuffer, firstSegidx, type - 2);
+ firstSegidx += type - 2;
+diff --git a/test/javopenjdk.orig/jdk/awt/BasicStroke/DashStrokeTest.java openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2015, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ * @test
++ * @bug 8075942
++ * @summary test there is no exception rendering a dashed stroke
++ * @run DashStrokeTest
++ * @run -Dsun.java2d.renderer=sun.java2d.pisces.PiscesRenderingEngine
++ */
++
++import java.awt.BasicStroke;
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.Stroke;
++import java.awt.geom.GeneralPath;
++import java.awt.image.BufferedImage;
++
++
++public class DashStrokeTest {
++
++ public static void main(String[] args) {
++
++ GeneralPath shape = new GeneralPath();
++ int[] pointTypes = {0, 0, 1, 1, 0, 1, 1, 0};
++ double[] xpoints = {428, 420, 400, 400, 400, 400, 420, 733};
++ double[] ypoints = {180, 180, 180, 160, 30, 10, 10, 10};
++ shape.moveTo(xpoints[0], ypoints[0]);
++ for (int i = 1; i < pointTypes.length; i++) {
++ if (pointTypes[i] == 1 && i < pointTypes.length - 1) {
++ shape.quadTo(xpoints[i], ypoints[i],
++ xpoints[i + 1], ypoints[i + 1]);
++ } else {
++ shape.lineTo(xpoints[i], ypoints[i]);
++ }
++ }
++
++ BufferedImage image = new
++ BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
++ Graphics2D g2 = image.createGraphics();
++
++ Color color = new Color(124, 0, 124, 255);
++ g2.setColor(color);
++ Stroke stroke = new BasicStroke(1.0f,
++ BasicStroke.CAP_BUTT,
++ BasicStroke.JOIN_BEVEL,
++ 10.0f, new float[] {9, 6}, 0.0f);
++ g2.setStroke(stroke);
++ g2.draw(shape);
++ }
++}
diff --git a/8141570-pr3548.patch b/8141570-pr3548.patch
new file mode 100644
index 0000000..f1e3215
--- /dev/null
+++ b/8141570-pr3548.patch
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User coleenp
+# Date 1525713256 -3600
+# Mon May 07 18:14:16 2018 +0100
+# Node ID bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+# Parent 07a1135a327362f157955d470fad5df07cc35164
+8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Summary: change to include atomic.inline.hpp and allocation.inline.hpp only in .cpp files and some build fixes from Kim to build on ubuntu without devkits
+Reviewed-by: kbarrett, sgehwolf, erikj
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -25,8 +25,15 @@
+
+ # Setup common to Zero (non-Shark) and Shark versions of VM
+
+-# override this from the main file because some version of llvm do not like -Wundef
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
++# Some versions of llvm do not like -Wundef
++ifeq ($(USE_CLANG), true)
++ WARNING_FLAGS += -Wno-undef
++endif
++# Suppress some warning flags that are normally turned on for hotspot,
++# because some of the zero code has not been updated accordingly.
++WARNING_FLAGS += -Wno-return-type \
++ -Wno-format-nonliteral -Wno-format-security \
++ -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+@@ -42,5 +49,3 @@
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS += -D_LP64=1
+ endif
+-
+-OPT_CFLAGS/compactingPermGenGen.o = -O1
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp
++++ openjdk/hotspot/src/share/vm/runtime/java.cpp
+@@ -45,6 +45,7 @@
+ #include "runtime/arguments.hpp"
+ #include "runtime/biasedLocking.hpp"
+ #include "runtime/compilationPolicy.hpp"
++#include "runtime/deoptimization.hpp"
+ #include "runtime/fprofiler.hpp"
+ #include "runtime/init.hpp"
+ #include "runtime/interfaceSupport.hpp"
diff --git a/8143245-pr3548.patch b/8143245-pr3548.patch
new file mode 100644
index 0000000..eccb110
--- /dev/null
+++ b/8143245-pr3548.patch
@@ -0,0 +1,154 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1525714161 -3600
+# Mon May 07 18:29:21 2018 +0100
+# Node ID afb31413c73cbc06420fdb447aa90a7a38258904
+# Parent bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+8143245, PR3548: Zero build requires disabled warnings
+Reviewed-by: dholmes, coleenp
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -29,11 +29,6 @@
+ ifeq ($(USE_CLANG), true)
+ WARNING_FLAGS += -Wno-undef
+ endif
+-# Suppress some warning flags that are normally turned on for hotspot,
+-# because some of the zero code has not been updated accordingly.
+-WARNING_FLAGS += -Wno-return-type \
+- -Wno-format-nonliteral -Wno-format-security \
+- -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+@@ -100,7 +100,7 @@
+ case T_DOUBLE:
+ case T_VOID:
+ return result;
+- default : ShouldNotReachHere();
++ default : ShouldNotReachHere(); return NULL_WORD;
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -62,7 +62,7 @@
+ }
+
+ void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
+- ffi_type *ftype;
++ ffi_type *ftype = NULL;
+ switch (type) {
+ case T_VOID:
+ ftype = &ffi_type_void;
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
++ * Copyright 2016 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -61,6 +61,7 @@
+
+ frame os::get_sender_for_C_frame(frame* fr) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warning.
+ }
+
+ frame os::current_frame() {
+@@ -98,16 +99,19 @@
+
+ address os::Linux::ucontext_get_pc(ucontext_t* uc) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
+ intptr_t** ret_sp,
+ intptr_t** ret_fp) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ frame os::fetch_frame_from_context(void* ucVoid) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warnings
+ }
+
+ extern "C" JNIEXPORT int
+@@ -247,11 +251,16 @@
+ }
+ #endif // !PRODUCT
+
+- const char *fmt = "caught unhandled signal %d";
+ char buf[64];
+
+- sprintf(buf, fmt, sig);
++ sprintf(buf, "caught unhandled signal %d", sig);
++
++// Silence -Wformat-security warning for fatal()
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
+ fatal(buf);
++PRAGMA_DIAG_POP
++ return true; // silence compiler warnings
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+@@ -260,6 +269,7 @@
+
+ int os::Linux::get_fpu_control_word() {
+ ShouldNotCallThis();
++ return -1; // silence compile warnings
+ }
+
+ void os::Linux::set_fpu_control_word(int fpu) {
+@@ -408,6 +418,7 @@
+
+ extern "C" {
+ int SpinPause() {
++ return -1; // silence compile warnings
+ }
+
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -110,6 +110,7 @@
+ void* ucontext,
+ bool isInJava) {
+ ShouldNotCallThis();
++ return false; // silence compile warning
+ }
+
+ // These routines are only used on cpu architectures that
diff --git a/8146115-pr3508-rh1463098.patch b/8146115-pr3508-rh1463098.patch
new file mode 100644
index 0000000..a04728b
--- /dev/null
+++ b/8146115-pr3508-rh1463098.patch
@@ -0,0 +1,1494 @@
+# HG changeset patch
+# User poonam
+# Date 1530903013 0
+# Fri Jul 06 18:50:13 2018 +0000
+# Node ID 2f2d2af6fa5c44e67e0a9987f56392315a1e4b64
+# Parent 95b72537801cc9946c27ad27f07e3f0790a21b08
+8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Reviewed-by: bobv, dbuck
+
+diff --git openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+--- openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp
++++ openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+@@ -4008,6 +4008,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
+ assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
+ return online_cpus;
+diff --git openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+--- openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp
++++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+@@ -3770,6 +3770,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ return _processor_count;
+ }
+
+diff --git openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2018, 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
+@@ -49,8 +49,13 @@
+ product(bool, UseSHM, false, \
+ "Use SYSV shared memory for large pages") \
+ \
+- diagnostic(bool, PrintActiveCpus, false, \
+- "Print the number of CPUs detected in os::active_processor_count")
++ product(bool, UseContainerSupport, true, \
++ "Enable detection and runtime container configuration support") \
++ \
++ product(bool, PreferContainerQuotaForCPUCount, true, \
++ "Calculate the container CPU availability based on the value" \
++ " of quotas (if set), when true. Otherwise, use the CPU" \
++ " shares value, provided it is less than quota.")
+
+ //
+ // Defines Linux-specific default values. The flags are available on all
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.cpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+@@ -0,0 +1,680 @@
++/*
++ * Copyright (c) 2017, 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#include <string.h>
++#include <math.h>
++#include <errno.h>
++#include "utilities/globalDefinitions.hpp"
++#include "memory/allocation.hpp"
++#include "runtime/os.hpp"
++#include "osContainer_linux.hpp"
++
++#define PER_CPU_SHARES 1024
++
++bool OSContainer::_is_initialized = false;
++bool OSContainer::_is_containerized = false;
++julong _unlimited_memory;
++
++class CgroupSubsystem: CHeapObj<mtInternal> {
++ friend class OSContainer;
++
++ private:
++ /* mountinfo contents */
++ char *_root;
++ char *_mount_point;
++
++ /* Constructed subsystem directory */
++ char *_path;
++
++ public:
++ CgroupSubsystem(char *root, char *mountpoint) {
++ _root = os::strdup(root);
++ _mount_point = os::strdup(mountpoint);
++ _path = NULL;
++ }
++
++ /*
++ * Set directory to subsystem specific files based
++ * on the contents of the mountinfo and cgroup files.
++ */
++ void set_subsystem_path(char *cgroup_path) {
++ char buf[MAXPATHLEN+1];
++ if (_root != NULL && cgroup_path != NULL) {
++ if (strcmp(_root, "/") == 0) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ if (strcmp(cgroup_path,"/") != 0) {
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path, MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ }
++ _path = os::strdup(buf);
++ } else {
++ if (strcmp(_root, cgroup_path) == 0) {
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ } else {
++ char *p = strstr(_root, cgroup_path);
++ if (p != NULL && p == _root) {
++ if (strlen(cgroup_path) > strlen(_root)) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path + strlen(_root), MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ }
++ }
++ }
++ }
++ }
++ }
++
++ char *subsystem_path() { return _path; }
++};
++
++CgroupSubsystem* memory = NULL;
++CgroupSubsystem* cpuset = NULL;
++CgroupSubsystem* cpu = NULL;
++CgroupSubsystem* cpuacct = NULL;
++
++typedef char * cptr;
++
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
++template <typename T> int subsystem_file_contents(CgroupSubsystem* c,
++ const char *filename,
++ const char *scan_fmt,
++ T returnval) {
++ FILE *fp = NULL;
++ char *p;
++ char file[MAXPATHLEN+1];
++ char buf[MAXPATHLEN+1];
++
++ if (c == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: CgroupSubsytem* is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++ if (c->subsystem_path() == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: subsystem path is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++
++ strncpy(file, c->subsystem_path(), MAXPATHLEN);
++ file[MAXPATHLEN-1] = '\0';
++ int filelen = strlen(file);
++ if ((filelen + strlen(filename)) > (MAXPATHLEN-1)) {
++ if (PrintContainerInfo) {
++ tty->print_cr("File path too long %s, %s", file, filename);
++ }
++ return OSCONTAINER_ERROR;
++ }
++ strncat(file, filename, MAXPATHLEN-filelen);
++ if (PrintContainerInfo) {
++ tty->print_cr("Path to %s is %s", filename, file);
++ }
++ fp = fopen(file, "r");
++ if (fp != NULL) {
++ p = fgets(buf, MAXPATHLEN, fp);
++ if (p != NULL) {
++ int matched = sscanf(p, scan_fmt, returnval);
++ if (matched == 1) {
++ fclose(fp);
++ return 0;
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Type %s not found in file %s", scan_fmt, file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Empty file %s", file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Open of file %s failed, %s", file, strerror(errno));
++ }
++ }
++ if (fp != NULL)
++ fclose(fp);
++ return OSCONTAINER_ERROR;
++}
++PRAGMA_DIAG_POP
++
++#define GET_CONTAINER_INFO(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable) \
++ return_type variable; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ &variable); \
++ if (err != 0) \
++ return (return_type) OSCONTAINER_ERROR; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++#define GET_CONTAINER_INFO_CPTR(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable, bufsize) \
++ char variable[bufsize]; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ variable); \
++ if (err != 0) \
++ return (return_type) NULL; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++/* init
++ *
++ * Initialize the container support and determine if
++ * we are running under cgroup control.
++ */
++void OSContainer::init() {
++ int mountid;
++ int parentid;
++ int major;
++ int minor;
++ FILE *mntinfo = NULL;
++ FILE *cgroup = NULL;
++ char buf[MAXPATHLEN+1];
++ char tmproot[MAXPATHLEN+1];
++ char tmpmount[MAXPATHLEN+1];
++ char tmpbase[MAXPATHLEN+1];
++ char *p;
++ jlong mem_limit;
++
++ assert(!_is_initialized, "Initializing OSContainer more than once");
++
++ _is_initialized = true;
++ _is_containerized = false;
++
++ _unlimited_memory = (LONG_MAX / os::vm_page_size()) * os::vm_page_size();
++
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::init: Initializing Container Support");
++ }
++ if (!UseContainerSupport) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Container Support not enabled");
++ }
++ return;
++ }
++
++ /*
++ * Find the cgroup mount point for memory and cpuset
++ * by reading /proc/self/mountinfo
++ *
++ * Example for docker:
++ * 219 214 0:29 /docker/7208cebd00fa5f2e342b1094f7bed87fa25661471a4637118e65f1c995be8a34 /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,memory
++ *
++ * Example for host:
++ * 34 28 0:29 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,memory
++ */
++ mntinfo = fopen("/proc/self/mountinfo", "r");
++ if (mntinfo == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/mountinfo, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
++ // Look for the filesystem type and see if it's cgroup
++ char fstype[MAXPATHLEN+1];
++ fstype[0] = '\0';
++ char *s = strstr(p, " - ");
++ if (s != NULL &&
++ sscanf(s, " - %s", fstype) == 1 &&
++ strcmp(fstype, "cgroup") == 0) {
++
++ if (strstr(p, "memory") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ memory = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and memory: %s", p);
++ }
++ } else if (strstr(p, "cpuset") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuset = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuset: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu,cpuacct") != NULL || strstr(p, "cpuacct,cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu,cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpuacct") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu: %s", p);
++ }
++ }
++ }
++ }
++ }
++
++ fclose(mntinfo);
++
++ if (memory == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup memory subsystem not found");
++ }
++ return;
++ }
++ if (cpuset == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuset subsystem not found");
++ }
++ return;
++ }
++ if (cpu == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpu subsystem not found");
++ }
++ return;
++ }
++ if (cpuacct == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuacct subsystem not found");
++ }
++ return;
++ }
++
++ /*
++ * Read /proc/self/cgroup and map host mount point to
++ * local one via /proc/self/mountinfo content above
++ *
++ * Docker example:
++ * 5:memory:/docker/6558aed8fc662b194323ceab5b964f69cf36b3e8af877a14b80256e93aecb044
++ *
++ * Host example:
++ * 5:memory:/user.slice
++ *
++ * Construct a path to the process specific memory and cpuset
++ * cgroup directory.
++ *
++ * For a container running under Docker from memory example above
++ * the paths would be:
++ *
++ * /sys/fs/cgroup/memory
++ *
++ * For a Host from memory example above the path would be:
++ *
++ * /sys/fs/cgroup/memory/user.slice
++ *
++ */
++ cgroup = fopen("/proc/self/cgroup", "r");
++ if (cgroup == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/cgroup, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, cgroup)) != NULL) {
++ int cgno;
++ int matched;
++ char *controller;
++ char *base;
++
++ /* Skip cgroup number */
++ strsep(&p, ":");
++ /* Get controller and base */
++ controller = strsep(&p, ":");
++ base = strsep(&p, "\n");
++
++ if (controller != NULL) {
++ if (strstr(controller, "memory") != NULL) {
++ memory->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuset") != NULL) {
++ cpuset->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu,cpuacct") != NULL || strstr(controller, "cpuacct,cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuacct") != NULL) {
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ }
++ }
++ }
++
++ fclose(cgroup);
++
++ // We need to update the amount of physical memory now that
++ // command line arguments have been processed.
++ if ((mem_limit = memory_limit_in_bytes()) > 0) {
++ os::Linux::set_physical_memory(mem_limit);
++ }
++
++ _is_containerized = true;
++
++}
++
++const char * OSContainer::container_type() {
++ if (is_containerized()) {
++ return "cgroupv1";
++ } else {
++ return NULL;
++ }
++}
++
++
++/* memory_limit_in_bytes
++ *
++ * Return the limit of available memory for this process.
++ *
++ * return:
++ * memory limit in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.limit_in_bytes",
++ "Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
++
++ if (memlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ }
++ else {
++ return (jlong)memlimit;
++ }
++}
++
++jlong OSContainer::memory_and_swap_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.memsw.limit_in_bytes",
++ "Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
++ if (memswlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory and Swap Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memswlimit;
++ }
++}
++
++jlong OSContainer::memory_soft_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.soft_limit_in_bytes",
++ "Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
++ if (memsoftlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Soft Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memsoftlimit;
++ }
++}
++
++/* memory_usage_in_bytes
++ *
++ * Return the amount of used memory for this process.
++ *
++ * return:
++ * memory usage in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.usage_in_bytes",
++ "Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memusage);
++ return memusage;
++}
++
++/* memory_max_usage_in_bytes
++ *
++ * Return the maximum amount of used memory for this process.
++ *
++ * return:
++ * max memory usage in bytes or
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_max_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.max_usage_in_bytes",
++ "Maximum Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memmaxusage);
++ return memmaxusage;
++}
++
++/* active_processor_count
++ *
++ * Calculate an appropriate number of active processors for the
++ * VM to use based on these three inputs.
++ *
++ * cpu affinity
++ * cgroup cpu quota & cpu period
++ * cgroup cpu shares
++ *
++ * Algorithm:
++ *
++ * Determine the number of available CPUs from sched_getaffinity
++ *
++ * If user specified a quota (quota != -1), calculate the number of
++ * required CPUs by dividing quota by period.
++ *
++ * If shares are in effect (shares != -1), calculate the number
++ * of CPUs required for the shares by dividing the share value
++ * by PER_CPU_SHARES.
++ *
++ * All results of division are rounded up to the next whole number.
++ *
++ * If neither shares or quotas have been specified, return the
++ * number of active processors in the system.
++ *
++ * If both shares and quotas have been specified, the results are
++ * based on the flag PreferContainerQuotaForCPUCount. If true,
++ * return the quota value. If false return the smallest value
++ * between shares or quotas.
++ *
++ * If shares and/or quotas have been specified, the resulting number
++ * returned will never exceed the number of active processors.
++ *
++ * return:
++ * number of CPUs
++ */
++int OSContainer::active_processor_count() {
++ int quota_count = 0, share_count = 0;
++ int cpu_count, limit_count;
++ int result;
++
++ cpu_count = limit_count = os::Linux::active_processor_count();
++ int quota = cpu_quota();
++ int period = cpu_period();
++ int share = cpu_shares();
++
++ if (quota > -1 && period > 0) {
++ quota_count = ceilf((float)quota / (float)period);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Quota count based on quota/period: %d", quota_count);
++ }
++ }
++ if (share > -1) {
++ share_count = ceilf((float)share / (float)PER_CPU_SHARES);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Share count based on shares: %d", share_count);
++ }
++ }
++
++ // If both shares and quotas are setup results depend
++ // on flag PreferContainerQuotaForCPUCount.
++ // If true, limit CPU count to quota
++ // If false, use minimum of shares and quotas
++ if (quota_count !=0 && share_count != 0) {
++ if (PreferContainerQuotaForCPUCount) {
++ limit_count = quota_count;
++ } else {
++ limit_count = MIN2(quota_count, share_count);
++ }
++ } else if (quota_count != 0) {
++ limit_count = quota_count;
++ } else if (share_count != 0) {
++ limit_count = share_count;
++ }
++
++ result = MIN2(cpu_count, limit_count);
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::active_processor_count: %d", result);
++ }
++ return result;
++}
++
++char * OSContainer::cpu_cpuset_cpus() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.cpus",
++ "cpuset.cpus is: %s", "%1023s", cpus, 1024);
++ return os::strdup(cpus);
++}
++
++char * OSContainer::cpu_cpuset_memory_nodes() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.mems",
++ "cpuset.mems is: %s", "%1023s", mems, 1024);
++ return os::strdup(mems);
++}
++
++/* cpu_quota
++ *
++ * Return the number of milliseconds per period
++ * process is guaranteed to run.
++ *
++ * return:
++ * quota time in milliseconds
++ * -1 for no quota
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_quota() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_quota_us",
++ "CPU Quota is: %d", "%d", quota);
++ return quota;
++}
++
++int OSContainer::cpu_period() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_period_us",
++ "CPU Period is: %d", "%d", period);
++ return period;
++}
++
++/* cpu_shares
++ *
++ * Return the amount of cpu shares available to the process
++ *
++ * return:
++ * Share number (typically a number relative to 1024)
++ * (2048 typically expresses 2 CPUs worth of processing)
++ * -1 for no share setup
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_shares() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.shares",
++ "CPU Shares is: %d", "%d", shares);
++ // Convert 1024 to no shares setup
++ if (shares == 1024) return -1;
++
++ return shares;
++}
++
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.hpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+@@ -0,0 +1,68 @@
++/*
++ * Copyright (c) 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#ifndef OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++#define OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++
++#include "utilities/globalDefinitions.hpp"
++#include "utilities/macros.hpp"
++#include "memory/allocation.hpp"
++
++#define OSCONTAINER_ERROR (-2)
++
++class OSContainer: AllStatic {
++
++ private:
++ static bool _is_initialized;
++ static bool _is_containerized;
++
++ public:
++ static void init();
++ static inline bool is_containerized();
++ static const char * container_type();
++
++ static jlong memory_limit_in_bytes();
++ static jlong memory_and_swap_limit_in_bytes();
++ static jlong memory_soft_limit_in_bytes();
++ static jlong memory_usage_in_bytes();
++ static jlong memory_max_usage_in_bytes();
++
++ static int active_processor_count();
++
++ static char * cpu_cpuset_cpus();
++ static char * cpu_cpuset_memory_nodes();
++
++ static int cpu_quota();
++ static int cpu_period();
++
++ static int cpu_shares();
++
++};
++
++inline bool OSContainer::is_containerized() {
++ assert(_is_initialized, "OSContainer not initialized");
++ return _is_containerized;
++}
++
++#endif // OS_LINUX_VM_OSCONTAINER_LINUX_HPP
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -37,6 +37,7 @@
+ #include "mutex_linux.inline.hpp"
+ #include "oops/oop.inline.hpp"
+ #include "os_share_linux.hpp"
++#include "osContainer_linux.hpp"
+ #include "prims/jniFastGetField.hpp"
+ #include "prims/jvm.h"
+ #include "prims/jvm_misc.hpp"
+@@ -179,13 +180,62 @@
+ julong os::Linux::available_memory() {
+ // values in struct sysinfo are "unsigned long"
+ struct sysinfo si;
++ julong avail_mem;
++
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit, mem_usage;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ if (mem_limit > 0 && (mem_usage = OSContainer::memory_usage_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory usage failed: " JLONG_FORMAT ", using host value", mem_usage);
++ }
++ }
++
++ if (mem_limit > 0 && mem_usage > 0 ) {
++ avail_mem = mem_limit > mem_usage ? (julong)mem_limit - (julong)mem_usage : 0;
++ if (PrintContainerInfo) {
++ tty->print_cr("available container memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
++ }
++ }
++
+ sysinfo(&si);
+-
+- return (julong)si.freeram * si.mem_unit;
++ avail_mem = (julong)si.freeram * si.mem_unit;
++ if (Verbose) {
++ tty->print_cr("available memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
+ }
+
+ julong os::physical_memory() {
+- return Linux::physical_memory();
++ jlong phys_mem = 0;
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) > 0) {
++ if (PrintContainerInfo) {
++ tty->print_cr("total container memory: " JLONG_FORMAT, mem_limit);
++ }
++ return mem_limit;
++ }
++
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ phys_mem = Linux::physical_memory();
++ if (Verbose) {
++ tty->print_cr("total system memory: " JLONG_FORMAT, phys_mem);
++ }
++ return phys_mem;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -2129,6 +2179,8 @@
+ os::Posix::print_load_average(st);
+
+ os::Linux::print_full_memory_info(st);
++
++ os::Linux::print_container_info(st);
+ }
+
+ // Try to identify popular distros.
+@@ -2194,6 +2246,57 @@
+ st->cr();
+ }
+
++void os::Linux::print_container_info(outputStream* st) {
++if (!OSContainer::is_containerized()) {
++ return;
++ }
++
++ st->print("container (cgroup) information:\n");
++
++ const char *p_ct = OSContainer::container_type();
++ st->print("container_type: %s\n", p_ct != NULL ? p_ct : "failed");
++
++ char *p = OSContainer::cpu_cpuset_cpus();
++ st->print("cpu_cpuset_cpus: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ p = OSContainer::cpu_cpuset_memory_nodes();
++ st->print("cpu_memory_nodes: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ int i = OSContainer::active_processor_count();
++ if (i > 0) {
++ st->print("active_processor_count: %d\n", i);
++ } else {
++ st->print("active_processor_count: failed\n");
++ }
++
++ i = OSContainer::cpu_quota();
++ st->print("cpu_quota: %d\n", i);
++
++ i = OSContainer::cpu_period();
++ st->print("cpu_period: %d\n", i);
++
++ i = OSContainer::cpu_shares();
++ st->print("cpu_shares: %d\n", i);
++
++ jlong j = OSContainer::memory_limit_in_bytes();
++ st->print("memory_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_and_swap_limit_in_bytes();
++ st->print("memory_and_swap_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_soft_limit_in_bytes();
++ st->print("memory_soft_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_usage_in_bytes();
++ st->print("memory_usage_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_max_usage_in_bytes();
++ st->print("memory_max_usage_in_bytes: " JLONG_FORMAT "\n", j);
++ st->cr();
++}
++
+ void os::print_memory_info(outputStream* st) {
+
+ st->print("Memory:");
+@@ -4966,6 +5069,10 @@
+ }
+ }
+
++void os::pd_init_container_support() {
++ OSContainer::init();
++}
++
+ // this is called _after_ the global arguments have been parsed
+ jint os::init_2(void)
+ {
+@@ -5146,7 +5253,7 @@
+ // sched_getaffinity gives an accurate answer as it accounts for cpusets.
+ // If anything goes wrong we fallback to returning the number of online
+ // processors - which can be greater than the number available to the process.
+-int os::active_processor_count() {
++int os::Linux::active_processor_count() {
+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
+ int cpus_size = sizeof(cpu_set_t);
+ int cpu_count = 0;
+@@ -5164,10 +5271,48 @@
+ "which may exceed available processors", strerror(errno), cpu_count);
+ }
+
+- assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
++ assert(cpu_count > 0 && cpu_count <= os::processor_count(), "sanity check");
+ return cpu_count;
+ }
+
++// Determine the active processor count from one of
++// three different sources:
++//
++// 1. User option -XX:ActiveProcessorCount
++// 2. kernel os calls (sched_getaffinity or sysconf(_SC_NPROCESSORS_ONLN)
++// 3. extracted from cgroup cpu subsystem (shares and quotas)
++//
++// Option 1, if specified, will always override.
++// If the cgroup subsystem is active and configured, we
++// will return the min of the cgroup and option 2 results.
++// This is required since tools, such as numactl, that
++// alter cpu affinity do not update cgroup subsystem
++// cpuset configuration files.
++int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
++ int active_cpus;
++ if (OSContainer::is_containerized()) {
++ active_cpus = OSContainer::active_processor_count();
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: determined by OSContainer: %d",
++ active_cpus);
++ }
++ } else {
++ active_cpus = os::Linux::active_processor_count();
++ }
++
++ return active_cpus;
++}
++
+ void os::set_native_thread_name(const char *name) {
+ // Not yet implemented.
+ return;
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+@@ -35,6 +35,7 @@
+
+ class Linux {
+ friend class os;
++ friend class OSContainer;
+ friend class TestReserveMemorySpecial;
+
+ // For signal-chaining
+@@ -79,6 +80,9 @@
+
+ static julong available_memory();
+ static julong physical_memory() { return _physical_memory; }
++ static void set_physical_memory(julong phys_mem) { _physical_memory = phys_mem; }
++ static int active_processor_count();
++
+ static void initialize_system_info();
+
+ static int commit_memory_impl(char* addr, size_t bytes, bool exec);
+@@ -116,6 +120,7 @@
+ static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
+
+ static void print_full_memory_info(outputStream* st);
++ static void print_container_info(outputStream* st);
+ static void print_distro_info(outputStream* st);
+ static void print_libversion_info(outputStream* st);
+
+diff --git openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+--- openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+@@ -357,6 +357,16 @@
+ }
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (Verbose) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ pid_t pid = getpid();
+ psetid_t pset = PS_NONE;
+diff --git openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+--- openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp
++++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+@@ -716,6 +716,16 @@
+ #endif
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ DWORD_PTR lpProcessAffinityMask = 0;
+ DWORD_PTR lpSystemAffinityMask = 0;
+ int proc_count = processor_count();
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -1801,20 +1801,34 @@
+ }
+ }
+
++ // Convert Fraction to Precentage values
++ if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MaxRAMFraction))
++ MaxRAMPercentage = 100.0 / MaxRAMFraction;
++
++ if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MinRAMFraction))
++ MinRAMPercentage = 100.0 / MinRAMFraction;
++
++ if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
++ !FLAG_IS_DEFAULT(InitialRAMFraction))
++ InitialRAMPercentage = 100.0 / InitialRAMFraction;
++
+ // If the maximum heap size has not been set with -Xmx,
+ // then set it as fraction of the size of physical memory,
+ // respecting the maximum and minimum sizes of the heap.
+ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- julong reasonable_max = phys_mem / MaxRAMFraction;
+-
+- if (phys_mem <= MaxHeapSize * MinRAMFraction) {
++ julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
++ const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
++ if (reasonable_min < MaxHeapSize) {
+ // Small physical memory, so use a minimum fraction of it for the heap
+- reasonable_max = phys_mem / MinRAMFraction;
++ reasonable_max = reasonable_min;
+ } else {
+ // Not-small physical memory, so require a heap at least
+ // as large as MaxHeapSize
+ reasonable_max = MAX2(reasonable_max, (julong)MaxHeapSize);
+ }
++
+ if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
+ // Limit the heap size to ErgoHeapSizeLimit
+ reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
+@@ -1856,7 +1870,7 @@
+ reasonable_minimum = limit_by_allocatable_memory(reasonable_minimum);
+
+ if (InitialHeapSize == 0) {
+- julong reasonable_initial = phys_mem / InitialRAMFraction;
++ julong reasonable_initial = (julong)((phys_mem * InitialRAMPercentage) / 100);
+
+ reasonable_initial = MAX3(reasonable_initial, reasonable_minimum, (julong)min_heap_size());
+ reasonable_initial = MIN2(reasonable_initial, (julong)MaxHeapSize);
+@@ -1881,6 +1895,94 @@
+ }
+ }
+
++// This option inspects the machine and attempts to set various
++// parameters to be optimal for long-running, memory allocation
++// intensive jobs. It is intended for machines with large
++// amounts of cpu and memory.
++jint Arguments::set_aggressive_heap_flags() {
++ // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
++ // VM, but we may not be able to represent the total physical memory
++ // available (like having 8gb of memory on a box but using a 32bit VM).
++ // Thus, we need to make sure we're using a julong for intermediate
++ // calculations.
++ julong initHeapSize;
++ julong total_memory = os::physical_memory();
++
++ if (total_memory < (julong) 256 * M) {
++ jio_fprintf(defaultStream::error_stream(),
++ "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
++ vm_exit(1);
++ }
++
++ // The heap size is half of available memory, or (at most)
++ // all of possible memory less 160mb (leaving room for the OS
++ // when using ISM). This is the maximum; because adaptive sizing
++ // is turned on below, the actual space used may be smaller.
++
++ initHeapSize = MIN2(total_memory / (julong) 2,
++ total_memory - (julong) 160 * M);
++
++ initHeapSize = limit_by_allocatable_memory(initHeapSize);
++
++ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
++ FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
++ FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
++ // Currently the minimum size and the initial heap sizes are the same.
++ set_min_heap_size(initHeapSize);
++ }
++ if (FLAG_IS_DEFAULT(NewSize)) {
++ // Make the young generation 3/8ths of the total heap.
++ FLAG_SET_CMDLINE(uintx, NewSize,
++ ((julong) MaxHeapSize / (julong) 8) * (julong) 3);
++ FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
++ }
++
++#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
++ FLAG_SET_DEFAULT(UseLargePages, true);
++#endif
++
++ // Increase some data structure sizes for efficiency
++ FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
++ FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
++ FLAG_SET_CMDLINE(uintx, TLABSize, 256 * K);
++
++ // See the OldPLABSize comment below, but replace 'after promotion'
++ // with 'after copying'. YoungPLABSize is the size of the survivor
++ // space per-gc-thread buffers. The default is 4kw.
++ FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256 * K); // Note: this is in words
++
++ // OldPLABSize is the size of the buffers in the old gen that
++ // UseParallelGC uses to promote live data that doesn't fit in the
++ // survivor spaces. At any given time, there's one for each gc thread.
++ // The default size is 1kw. These buffers are rarely used, since the
++ // survivor spaces are usually big enough. For specjbb, however, there
++ // are occasions when there's lots of live data in the young gen
++ // and we end up promoting some of it. We don't have a definite
++ // explanation for why bumping OldPLABSize helps, but the theory
++ // is that a bigger PLAB results in retaining something like the
++ // original allocation order after promotion, which improves mutator
++ // locality. A minor effect may be that larger PLABs reduce the
++ // number of PLAB allocation events during gc. The value of 8kw
++ // was arrived at by experimenting with specjbb.
++ FLAG_SET_CMDLINE(uintx, OldPLABSize, 8 * K); // Note: this is in words
++
++ // Enable parallel GC and adaptive generation sizing
++ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
++
++ // Encourage steady state memory management
++ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
++
++ // This appears to improve mutator locality
++ FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
++
++ // Get around early Solaris scheduling bug
++ // (affinity vs other jobs on system)
++ // but disallow DR and offlining (5008695).
++ FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
++
++ return JNI_OK;
++}
++
+ // This must be called after ergonomics because we want bytecode rewriting
+ // if the server compiler is used, or if UseSharedSpaces is disabled.
+ void Arguments::set_bytecode_flags() {
+@@ -2644,6 +2746,14 @@
+ return result;
+ }
+
++ // We need to ensure processor and memory resources have been properly
++ // configured - which may rely on arguments we just processed - before
++ // doing the final argument processing. Any argument processing that
++ // needs to know about processor and memory resources must occur after
++ // this point.
++
++ os::init_container_support();
++
+ // Do final processing now that all arguments have been parsed
+ result = finalize_vm_init_args(&scp, scp_assembly_required);
+ if (result != JNI_OK) {
+@@ -3117,94 +3227,6 @@
+ _exit_hook = CAST_TO_FN_PTR(exit_hook_t, option->extraInfo);
+ } else if (match_option(option, "abort", &tail)) {
+ _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo);
+- // -XX:+AggressiveHeap
+- } else if (match_option(option, "-XX:+AggressiveHeap", &tail)) {
+-
+- // This option inspects the machine and attempts to set various
+- // parameters to be optimal for long-running, memory allocation
+- // intensive jobs. It is intended for machines with large
+- // amounts of cpu and memory.
+-
+- // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
+- // VM, but we may not be able to represent the total physical memory
+- // available (like having 8gb of memory on a box but using a 32bit VM).
+- // Thus, we need to make sure we're using a julong for intermediate
+- // calculations.
+- julong initHeapSize;
+- julong total_memory = os::physical_memory();
+-
+- if (total_memory < (julong)256*M) {
+- jio_fprintf(defaultStream::error_stream(),
+- "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
+- vm_exit(1);
+- }
+-
+- // The heap size is half of available memory, or (at most)
+- // all of possible memory less 160mb (leaving room for the OS
+- // when using ISM). This is the maximum; because adaptive sizing
+- // is turned on below, the actual space used may be smaller.
+-
+- initHeapSize = MIN2(total_memory / (julong)2,
+- total_memory - (julong)160*M);
+-
+- initHeapSize = limit_by_allocatable_memory(initHeapSize);
+-
+- if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
+- FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
+- // Currently the minimum size and the initial heap sizes are the same.
+- set_min_heap_size(initHeapSize);
+- }
+- if (FLAG_IS_DEFAULT(NewSize)) {
+- // Make the young generation 3/8ths of the total heap.
+- FLAG_SET_CMDLINE(uintx, NewSize,
+- ((julong)MaxHeapSize / (julong)8) * (julong)3);
+- FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
+- }
+-
+-#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
+- FLAG_SET_DEFAULT(UseLargePages, true);
+-#endif
+-
+- // Increase some data structure sizes for efficiency
+- FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
+- FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
+- FLAG_SET_CMDLINE(uintx, TLABSize, 256*K);
+-
+- // See the OldPLABSize comment below, but replace 'after promotion'
+- // with 'after copying'. YoungPLABSize is the size of the survivor
+- // space per-gc-thread buffers. The default is 4kw.
+- FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words
+-
+- // OldPLABSize is the size of the buffers in the old gen that
+- // UseParallelGC uses to promote live data that doesn't fit in the
+- // survivor spaces. At any given time, there's one for each gc thread.
+- // The default size is 1kw. These buffers are rarely used, since the
+- // survivor spaces are usually big enough. For specjbb, however, there
+- // are occasions when there's lots of live data in the young gen
+- // and we end up promoting some of it. We don't have a definite
+- // explanation for why bumping OldPLABSize helps, but the theory
+- // is that a bigger PLAB results in retaining something like the
+- // original allocation order after promotion, which improves mutator
+- // locality. A minor effect may be that larger PLABs reduce the
+- // number of PLAB allocation events during gc. The value of 8kw
+- // was arrived at by experimenting with specjbb.
+- FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words
+-
+- // Enable parallel GC and adaptive generation sizing
+- FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+-
+- // Encourage steady state memory management
+- FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+-
+- // This appears to improve mutator locality
+- FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
+-
+- // Get around early Solaris scheduling bug
+- // (affinity vs other jobs on system)
+- // but disallow DR and offlining (5008695).
+- FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
+-
+ } else if (match_option(option, "-XX:+NeverTenure", &tail)) {
+ // The last option must always win.
+ FLAG_SET_CMDLINE(bool, AlwaysTenure, false);
+@@ -3605,6 +3627,15 @@
+ return JNI_ERR;
+ }
+
++ // This must be done after all arguments have been processed
++ // and the container support has been initialized since AggressiveHeap
++ // relies on the amount of total memory available.
++ if (AggressiveHeap) {
++ jint result = set_aggressive_heap_flags();
++ if (result != JNI_OK) {
++ return result;
++ }
++ }
+ // This must be done after all arguments have been processed.
+ // java_compiler() true means set to "NONE" or empty.
+ if (java_compiler() && !xdebug_mode()) {
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -365,6 +365,8 @@
+ // Aggressive optimization flags.
+ static void set_aggressive_opts_flags();
+
++ static jint set_aggressive_heap_flags();
++
+ // Argument parsing
+ static void do_pd_flag_adjustments();
+ static bool parse_argument(const char* arg, Flag::Flags origin);
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
+@@ -2076,13 +2076,23 @@
+ product_pd(uint64_t, MaxRAM, \
+ "Real memory size (in bytes) used to set maximum heap size") \
+ \
++ product(bool, AggressiveHeap, false, \
++ "Optimize heap options for long-running memory intensive apps") \
++ \
+ product(uintx, ErgoHeapSizeLimit, 0, \
+ "Maximum ergonomically set heap size (in bytes); zero means use " \
+- "MaxRAM / MaxRAMFraction") \
++ "MaxRAM * MaxRAMPercentage / 100") \
+ \
+ experimental(bool, UseCGroupMemoryLimitForHeap, false, \
+ "Use CGroup memory limit as physical memory limit for heap " \
+- "sizing") \
++ "sizing" \
++ "Deprecated, replaced by container support") \
++ \
++ diagnostic(bool, PrintContainerInfo, false, \
++ "Print container related information") \
++ \
++ diagnostic(bool, PrintActiveCpus, false, \
++ "Print the number of CPUs detected in os::active_processor_count") \
+ \
+ product(uintx, MaxRAMFraction, 4, \
+ "Maximum fraction (1/n) of real memory used for maximum heap " \
+@@ -2099,6 +2109,19 @@
+ product(uintx, InitialRAMFraction, 64, \
+ "Fraction (1/n) of real memory used for initial heap size") \
+ \
++ product(double, MaxRAMPercentage, 25.0, \
++ "Maximum percentage of real memory used for maximum heap size") \
++ \
++ product(double, MinRAMPercentage, 50.0, \
++ "Minimum percentage of real memory used for maximum heap" \
++ "size on systems with small physical memory size") \
++ \
++ product(double, InitialRAMPercentage, 1.5625, \
++ "Percentage of real memory used for initial heap size") \
++ \
++ product(intx, ActiveProcessorCount, -1, \
++ "Specify the CPU count the VM should use and report as active") \
++ \
+ develop(uintx, MaxVirtMemFraction, 2, \
+ "Maximum fraction (1/n) of virtual memory used for ergonomically "\
+ "determining maximum heap size") \
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp
++++ openjdk/hotspot/src/share/vm/runtime/os.hpp
+@@ -152,8 +152,16 @@
+ static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned);
+
+ static void initialize_initial_active_processor_count();
++
++ LINUX_ONLY(static void pd_init_container_support();)
++
+ public:
+ static void init(void); // Called before command line parsing
++
++ static void init_container_support() { // Called during command line parsing.
++ LINUX_ONLY(pd_init_container_support();)
++ }
++
+ static void init_before_ergo(void); // Called after command line parsing
+ // before VM ergonomics processing.
+ static jint init_2(void); // Called after command line parsing
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp openjdk/hotspot/src/share/vm/runtime/thread.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp
++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp
+@@ -3332,6 +3332,7 @@
+ Arguments::init_version_specific_system_properties();
+
+ // Parse arguments
++ // Note: this internally calls os::init_container_support()
+ jint parse_result = Arguments::parse(args);
+ if (parse_result != JNI_OK) return parse_result;
+
diff --git a/8165489-pr3589.patch b/8165489-pr3589.patch
new file mode 100644
index 0000000..1674dec
--- /dev/null
+++ b/8165489-pr3589.patch
@@ -0,0 +1,123 @@
+# HG changeset patch
+# User mdoerr
+# Date 1473159687 -7200
+# Tue Sep 06 13:01:27 2016 +0200
+# Node ID 7f6e1069a5719c8908b53774d3560ce851c7cd70
+# Parent b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Summary: Add missing barrier, sharing code with Unsafe_GetObject.
+Reviewed-by: kbarrett, mgerdin, pliden, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+@@ -199,37 +199,40 @@
+
+ // Get/SetObject must be special-cased, since it works with handles.
+
++// We could be accessing the referent field in a reference
++// object. If G1 is enabled then we need to register non-null
++// referent with the SATB barrier.
++
++#if INCLUDE_ALL_GCS
++static bool is_java_lang_ref_Reference_access(oop o, jlong offset) {
++ if (offset == java_lang_ref_Reference::referent_offset && o != NULL) {
++ Klass* k = o->klass();
++ if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
++ assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
++ return true;
++ }
++ }
++ return false;
++}
++#endif
++
++static void ensure_satb_referent_alive(oop o, jlong offset, oop v) {
++#if INCLUDE_ALL_GCS
++ if (UseG1GC && v != NULL && is_java_lang_ref_Reference_access(o, offset)) {
++ G1SATBCardTableModRefBS::enqueue(v);
++ }
++#endif
++}
++
+ // The xxx140 variants for backward compatibility do not allow a full-width offset.
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ if (obj == NULL) THROW_0(vmSymbols::java_lang_NullPointerException());
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register a non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset) {
+- oop o = JNIHandles::resolve_non_null(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset, jobject x_h))
+@@ -262,32 +265,10 @@
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) {
+- oop o = JNIHandles::resolve(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject x_h))
+@@ -312,6 +293,9 @@
+ } else {
+ (void)const_cast<oop&>(v = *(volatile oop*) addr);
+ }
++
++ ensure_satb_referent_alive(p, offset, v);
++
+ OrderAccess::acquire();
+ return JNIHandles::make_local(env, v);
+ UNSAFE_END
diff --git a/8165852-pr3468.patch b/8165852-pr3468.patch
new file mode 100644
index 0000000..6a9f643
--- /dev/null
+++ b/8165852-pr3468.patch
@@ -0,0 +1,21 @@
+--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
+@@ -74,8 +74,16 @@
+ } catch (UnixException x) {
+ x.rethrowAsIOException(parent);
+ }
+- if (attrs.dev() != dev())
+- break;
++ if (attrs.dev() != dev()) {
++
++ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
++ // find the file system even when not in /etc/mtab)
++ byte[] dir = path.asByteArray();
++ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
++ if (Arrays.equals(dir, entry.dir()))
++ return entry;
++ }
++ }
+ path = parent;
+ parent = parent.getParent();
+ }
diff --git a/8171000-pr3542-rh1402819.patch b/8171000-pr3542-rh1402819.patch
new file mode 100644
index 0000000..d831aa9
--- /dev/null
+++ b/8171000-pr3542-rh1402819.patch
@@ -0,0 +1,121 @@
+# HG changeset patch
+# User kaddepalli
+# Date 1517818481 -19800
+# Mon Feb 05 13:44:41 2018 +0530
+# Node ID b77308735540644d4710244e3c88865067f2905a
+# Parent 39bfc94b1f4265b645c2970a58389acc779dafe9
+8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Reviewed-by: serb, mhalder
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -394,77 +394,48 @@
+ XRectangle bbox; /* bounding box of grabbed area */
+ list_ptr regions;/* list of regions to read from */
+ {
+- image_region_type *reg;
+- int32_t dst_x, dst_y; /* where in pixmap to write (UL) */
+- int32_t diff;
+-
+- XImage *reg_image,*ximage ;
+- int32_t srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+- int32_t rem ;
+- int32_t bytes_per_line;
+- int32_t bitmap_unit;
+-
+- bitmap_unit = sizeof (long);
+- if (format == ZPixmap)
+- bytes_per_line = width*depth/8;
+- else
+- bytes_per_line = width/8;
+-
+-
+- /* Find out how many more bytes are required for padding so that
+- ** bytes per scan line will be multiples of bitmap_unit bits */
+- if (format == ZPixmap) {
+- rem = (bytes_per_line*8)%bitmap_unit;
+- if (rem)
+- bytes_per_line += (rem/8 + 1);
+- }
++ XImage *ximage ;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+
+- bytes_per_line = ximage->bytes_per_line;
+-
+- if (format == ZPixmap)
+- ximage->data = malloc(height*bytes_per_line);
+- else
+- ximage->data = malloc(height*bytes_per_line*depth);
+-
++ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (reg = (image_region_type *) first_in_list( regions); reg;
++ for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+- int32_t rect;
+- struct my_XRegion *vis_reg;
+- vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (rect = 0;
+- rect < vis_reg->numRects;
+- rect++)
++ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
++ for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
+ {
+- /** ------------------------------------------------------------------------
+- Intersect bbox with visible part of region giving src rect & output
+- location. Width is the min right side minus the max left side.
+- Similar for height. Offset src rect so x,y are relative to
+- origin of win, not the root-relative visible rect of win.
+- ------------------------------------------------------------------------ **/
+- srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
+- - MAX( vis_reg->rects[rect].x1, bbox.x);
++ /** ------------------------------------------------------------------------
++ Intersect bbox with visible part of region giving src rect & output
++ location. Width is the min right side minus the max left side.
++ Similar for height. Offset src rect so x,y are relative to
++ origin of win, not the root-relative visible rect of win.
++ ------------------------------------------------------------------------ **/
++ int32_t srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
++ - MAX( vis_reg->rects[rect].x1, bbox.x);
++
++ int32_t srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
++ - MAX( vis_reg->rects[rect].y1, bbox.y);
+
+- srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
+- - MAX( vis_reg->rects[rect].y1, bbox.y);
++ int32_t diff = bbox.x - vis_reg->rects[rect].x1;
++ int32_t srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
++ int32_t dst_x = MAX( 0, -diff) ;
+
+- diff = bbox.x - vis_reg->rects[rect].x1;
+- srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
+- dst_x = MAX( 0, -diff) ;
+- diff = bbox.y - vis_reg->rects[rect].y1;
+- srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
+- dst_y = MAX( 0, -diff) ;
+- reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
+- (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
+- TransferImage(disp,reg_image,srcRect_width,
+- srcRect_height,reg,ximage,dst_x,dst_y) ;
+- XDestroyImage(reg_image);
+- }
++ diff = bbox.y - vis_reg->rects[rect].y1;
++ int32_t srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
++ int32_t dst_y = MAX( 0, -diff) ;
++ XImage* reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
++ (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
++
++ if (reg_image) {
++ TransferImage(disp,reg_image,srcRect_width,
++ srcRect_height,reg,ximage,dst_x,dst_y) ;
++ XDestroyImage(reg_image);
++ }
++ }
+ }
+ return ximage ;
+ }
diff --git a/8184309-pr3596.patch b/8184309-pr3596.patch
new file mode 100644
index 0000000..00b6125
--- /dev/null
+++ b/8184309-pr3596.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User ysuenaga
+# Date 1527498573 -3600
+# Mon May 28 10:09:33 2018 +0100
+# Node ID ef176cb429c49d1c330d9575938f66b04e3fb730
+# Parent 6915dc9ae18cce5625d3a3fc74b37da70a5b4215
+8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Reviewed-by: kbarrett, vlivanov
+
+diff --git openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp openjdk/hotspot/src/share/vm/code/dependencies.cpp
+--- openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp
++++ openjdk/hotspot/src/share/vm/code/dependencies.cpp
+@@ -525,7 +525,7 @@
+ xtty->object("x", arg.metadata_value());
+ }
+ } else {
+- char xn[10]; sprintf(xn, "x%d", j);
++ char xn[12]; sprintf(xn, "x%d", j);
+ if (arg.is_oop()) {
+ xtty->object(xn, arg.oop_value());
+ } else {
diff --git a/8185723-pr3553.patch b/8185723-pr3553.patch
new file mode 100644
index 0000000..f8ee50a
--- /dev/null
+++ b/8185723-pr3553.patch
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User aph
+# Date 1501690960 -3600
+# Wed Aug 02 17:22:40 2017 +0100
+# Node ID 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+# Parent 4e2adbc3d2b512f6b2bf318d2db60f4d1903f8c7
+8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Reviewed-by: roland
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -38,10 +38,10 @@
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+ #if defined(PPC32)
+ double tmp;
+- asm volatile ("lfd %0, 0(%1)\n"
+- "stfd %0, 0(%2)\n"
+- : "=f"(tmp)
+- : "b"(src), "b"(dst));
++ asm volatile ("lfd %0, %2\n"
++ "stfd %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8186461-pr3557.patch b/8186461-pr3557.patch
new file mode 100644
index 0000000..cc8020c
--- /dev/null
+++ b/8186461-pr3557.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User glaubitz
+# Date 1524889690 -3600
+# Sat Apr 28 05:28:10 2018 +0100
+# Node ID be1379a186ba527b32c93a83e04c9600735fe44b
+# Parent 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -36,12 +36,18 @@
+
+ // Atomically copy 64 bits of data
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+-#if defined(PPC32)
++#if defined(PPC32) && !defined(__SPE__)
+ double tmp;
+ asm volatile ("lfd %0, %2\n"
+ "stfd %0, %1\n"
+ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
+ : "Q"(*(volatile double*)src));
++#elif defined(PPC32) && defined(__SPE__)
++ long tmp;
++ asm volatile ("evldd %0, %2\n"
++ "evstdd %0, %1\n"
++ : "=&r"(tmp), "=Q"(*(volatile long*)dst)
++ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8196516-pr3523-rh1538767.patch b/8196516-pr3523-rh1538767.patch
new file mode 100644
index 0000000..b321611
--- /dev/null
+++ b/8196516-pr3523-rh1538767.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1523360781 -7200
+# Tue Apr 10 13:46:21 2018 +0200
+# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
+# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
+8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
+Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
+
+diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
+--- a/make/lib/Awt2dLibraries.gmk
++++ b/make/lib/Awt2dLibraries.gmk
+@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+ BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
+ endif
+
++# LDFLAGS clarification:
++# Filter relevant linker flags disallowing unresolved symbols as we cannot
++# build-time decide to which library to link against (libawt_headless or
++# libawt_xawt). See JDK-8196516 for details.
+ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ LIBRARY := fontmanager, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
+ -DCC_NOEX, \
+ MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
+- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
++ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
++ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/8197429-pr3456-rh1536622.patch b/8197429-pr3456-rh1536622.patch
deleted file mode 100644
index fc60cd3..0000000
--- a/8197429-pr3456-rh1536622.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -674,6 +674,10 @@
- }
- }
-
-+void os::Linux::expand_stack_to(address bottom) {
-+ _expand_stack_to(bottom);
-+}
-+
- bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
- assert(t!=NULL, "just checking");
- assert(t->osthread()->expanding_stack(), "expand should be set");
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -245,6 +245,8 @@
- static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
-
- private:
-+ static void expand_stack_to(address bottom);
-+
- 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);
-diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -892,6 +892,25 @@
- void os::workaround_expand_exec_shield_cs_limit() {
- #if defined(IA32)
- size_t page_size = os::vm_page_size();
-+
-+ /*
-+ * JDK-8197429
-+ *
-+ * Expand the stack mapping to the end of the initial stack before
-+ * attempting to install the codebuf. This is needed because newer
-+ * Linux kernels impose a distance of a megabyte between stack
-+ * memory and other memory regions. If we try to install the
-+ * codebuf before expanding the stack the installation will appear
-+ * to succeed but we'll get a segfault later if we expand the stack
-+ * in Java code.
-+ *
-+ */
-+ if (os::Linux::is_initial_thread()) {
-+ address limit = Linux::initial_thread_stack_bottom();
-+ limit += (StackYellowPages + StackRedPages) * page_size;
-+ os::Linux::expand_stack_to(limit);
-+ }
-+
- /*
- * Take the highest VA the OS will give us and exec
- *
-@@ -910,6 +929,16 @@
- char* hint = (char*) (Linux::initial_thread_stack_bottom() -
- ((StackYellowPages + StackRedPages + 1) * page_size));
- char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+
-+ if (codebuf == NULL) {
-+ // JDK-8197429: There may be a stack gap of one megabyte between
-+ // the limit of the stack and the nearest memory region: this is a
-+ // Linux kernel workaround for CVE-2017-1000364. If we failed to
-+ // map our codebuf, try again at an address one megabyte lower.
-+ hint -= 1 * M;
-+ codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+ }
-+
- if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
- return; // No matter, we tried, best effort.
- }
diff --git a/8197429-pr3546-rh1536622.patch b/8197429-pr3546-rh1536622.patch
new file mode 100644
index 0000000..fc60cd3
--- /dev/null
+++ b/8197429-pr3546-rh1536622.patch
@@ -0,0 +1,93 @@
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -674,6 +674,10 @@
+ }
+ }
+
++void os::Linux::expand_stack_to(address bottom) {
++ _expand_stack_to(bottom);
++}
++
+ bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
+ assert(t!=NULL, "just checking");
+ assert(t->osthread()->expanding_stack(), "expand should be set");
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -245,6 +245,8 @@
+ static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
+
+ private:
++ static void expand_stack_to(address bottom);
++
+ 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);
+diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -892,6 +892,25 @@
+ void os::workaround_expand_exec_shield_cs_limit() {
+ #if defined(IA32)
+ size_t page_size = os::vm_page_size();
++
++ /*
++ * JDK-8197429
++ *
++ * Expand the stack mapping to the end of the initial stack before
++ * attempting to install the codebuf. This is needed because newer
++ * Linux kernels impose a distance of a megabyte between stack
++ * memory and other memory regions. If we try to install the
++ * codebuf before expanding the stack the installation will appear
++ * to succeed but we'll get a segfault later if we expand the stack
++ * in Java code.
++ *
++ */
++ if (os::Linux::is_initial_thread()) {
++ address limit = Linux::initial_thread_stack_bottom();
++ limit += (StackYellowPages + StackRedPages) * page_size;
++ os::Linux::expand_stack_to(limit);
++ }
++
+ /*
+ * Take the highest VA the OS will give us and exec
+ *
+@@ -910,6 +929,16 @@
+ char* hint = (char*) (Linux::initial_thread_stack_bottom() -
+ ((StackYellowPages + StackRedPages + 1) * page_size));
+ char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
++
++ if (codebuf == NULL) {
++ // JDK-8197429: There may be a stack gap of one megabyte between
++ // the limit of the stack and the nearest memory region: this is a
++ // Linux kernel workaround for CVE-2017-1000364. If we failed to
++ // map our codebuf, try again at an address one megabyte lower.
++ hint -= 1 * M;
++ codebuf = os::attempt_reserve_memory_at(page_size, hint);
++ }
++
+ if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
+ return; // No matter, we tried, best effort.
+ }
diff --git a/8197546-pr3542-rh1402819.patch b/8197546-pr3542-rh1402819.patch
new file mode 100644
index 0000000..ba712ad
--- /dev/null
+++ b/8197546-pr3542-rh1402819.patch
@@ -0,0 +1,35 @@
+# HG changeset patch
+# User prr
+# Date 1518454604 28800
+# Mon Feb 12 08:56:44 2018 -0800
+# Node ID 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+# Parent b77308735540644d4710244e3c88865067f2905a
+8197546: Fix for 8171000 breaks Solaris + Linux builds
+Reviewed-by: serb, jdv
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -395,6 +395,8 @@
+ list_ptr regions;/* list of regions to read from */
+ {
+ XImage *ximage ;
++ image_region_type* reg;
++ int32_t rect;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+@@ -402,11 +404,11 @@
+ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
++ for (reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
++ for (rect = 0; rect < vis_reg->numRects; rect++)
+ {
+ /** ------------------------------------------------------------------------
+ Intersect bbox with visible part of region giving src rect & output
diff --git a/8197981-pr3548.patch b/8197981-pr3548.patch
new file mode 100644
index 0000000..5f6d9ce
--- /dev/null
+++ b/8197981-pr3548.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User andrew
+# Date 1518667645 0
+# Thu Feb 15 04:07:25 2018 +0000
+# Node ID 1d35411eb7bdf16191e220ffe3b1dc4d5d0c6041
+# Parent 999983606f5c61b093c6f6316a7b26c4cd4ca79e
+8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Summary: Fix issue discovered by -Wreturn-type on systems without LP64.
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
++++ openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+@@ -457,6 +457,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -498,6 +498,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
diff --git a/8199936-pr3533-workaround.patch b/8199936-pr3533-workaround.patch
new file mode 100644
index 0000000..900e0c3
--- /dev/null
+++ b/8199936-pr3533-workaround.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User andrew
+# Date 1526122977 -3600
+# Sat May 12 12:02:57 2018 +0100
+# Node ID 00ccc73498628a51a45301322e64ce2ad06e49be
+# Parent aecf9f48f7b5c6148b62713a6b746301435b57cc
+PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations
+Summary: Enable -mstackrealign on x86 Linux as well as x86 Mac OS X
+
+diff --git openjdk.orig///common/autoconf/hotspot-spec.gmk.in openjdk///common/autoconf/hotspot-spec.gmk.in
+--- openjdk.orig///common/autoconf/hotspot-spec.gmk.in
++++ openjdk///common/autoconf/hotspot-spec.gmk.in
+@@ -110,7 +110,8 @@
+ RC:=@HOTSPOT_RC@
+
+ EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \
+- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \
++ $(REALIGN_CFLAG)
+ EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
+ EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
+
+diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in
+--- openjdk.orig///common/autoconf/spec.gmk.in
++++ openjdk///common/autoconf/spec.gmk.in
+@@ -333,6 +333,7 @@
+
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@
+ NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@
++REALIGN_CFLAG=@REALIGN_CFLAG@
+ CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+
+ CXX:=@FIXPATH@ @CCACHE@ @CXX@
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -796,20 +796,16 @@
+ #
+ # NOTE: check for -mstackrealign needs to be below potential addition of -m32
+ #
+- if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
++ if test "x$OPENJDK_TARGET_CPU" = xx86 && test "x$OPENJDK_TARGET_OS" = xmacosx -o \
++ "x$OPENJDK_TARGET_OS" = xlinux; then
+ # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
+- # While waiting for a better solution, the current workaround is to use -mstackrealign.
+- CFLAGS="$CFLAGS -mstackrealign"
+- AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
+- AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
+- [
+- AC_MSG_RESULT([yes])
+- ],
+- [
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+- ]
++ # While waiting for a better solution, the current workaround is to use -mstackrealign
++ # This is also required on Linux systems which use libraries compiled with SSE instructions
++ REALIGN_CFLAG="-mstackrealign"
++ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
++ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ AC_SUBST([REALIGN_CFLAG])
+ fi
+
+ C_FLAG_DEPS="-MMD -MF"
diff --git a/8201509-pr3579.patch b/8201509-pr3579.patch
new file mode 100644
index 0000000..132c225
--- /dev/null
+++ b/8201509-pr3579.patch
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User mbalao
+# Date 1525317412 -3600
+# Thu May 03 04:16:52 2018 +0100
+# Node ID de79964656fc652f2085dac4fe99bcc128b5a3b1
+# Parent ffd5260fe5adcb26f87a14f1aaaf3e1a075d712a
+8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Summary: The inline assembler for the S390 (S390 and not _LP64) has src and dst reversed thereby corrupting data
+Reviewed-by: shade
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2010 Red Hat, Inc.
++ * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -50,10 +50,10 @@
+ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+- asm volatile ("ld %0, 0(%1)\n"
+- "std %0, 0(%2)\n"
+- : "=r"(tmp)
+- : "a"(src), "a"(dst));
++ asm volatile ("ld %0, %2\n"
++ "std %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(__ARM_ARCH_7A__)
+ jlong tmp;
+ asm volatile ("ldrexd %0, [%1]\n"
diff --git a/8203182-pr3603-rh1568033.patch b/8203182-pr3603-rh1568033.patch
new file mode 100644
index 0000000..031a60c
--- /dev/null
+++ b/8203182-pr3603-rh1568033.patch
@@ -0,0 +1,131 @@
+# HG changeset patch
+# User igerasim
+# Date 1528992969 25200
+# Thu Jun 14 09:16:09 2018 -0700
+# Node ID d9b0b4bd2526818afa73b60da77403245554caa8
+# Parent 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Summary: Ensure session is properly released in P11Signature class
+Reviewed-by: valeriep
+Contributed-by: Martin Balao <mbalao(a)redhat.com>
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+@@ -309,47 +309,51 @@
+ session = token.killSession(session);
+ return;
+ }
+- // "cancel" operation by finishing it
+- // XXX make sure all this always works correctly
+- if (mode == M_SIGN) {
+- try {
+- if (type == T_UPDATE) {
+- token.p11.C_SignFinal(session.id(), 0);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
++ try {
++ // "cancel" operation by finishing it
++ // XXX make sure all this always works correctly
++ if (mode == M_SIGN) {
++ try {
++ if (type == T_UPDATE) {
++ token.p11.C_SignFinal(session.id(), 0);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Sign(session.id(), digest);
+ }
+- token.p11.C_Sign(session.id(), digest);
++ } catch (PKCS11Exception e) {
++ throw new ProviderException("cancel failed", e);
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
++ } else { // M_VERIFY
++ try {
++ byte[] signature;
++ if (keyAlgorithm.equals("DSA")) {
++ signature = new byte[40];
++ } else {
++ signature = new byte[(p11Key.length() + 7) >> 3];
++ }
++ if (type == T_UPDATE) {
++ token.p11.C_VerifyFinal(session.id(), signature);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Verify(session.id(), digest, signature);
++ }
++ } catch (PKCS11Exception e) {
++ // will fail since the signature is incorrect
++ // XXX check error code
++ }
+ }
+- } else { // M_VERIFY
+- try {
+- byte[] signature;
+- if (keyAlgorithm.equals("DSA")) {
+- signature = new byte[40];
+- } else {
+- signature = new byte[(p11Key.length() + 7) >> 3];
+- }
+- if (type == T_UPDATE) {
+- token.p11.C_VerifyFinal(session.id(), signature);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Verify(session.id(), digest, signature);
+- }
+- } catch (PKCS11Exception e) {
+- // will fail since the signature is incorrect
+- // XXX check error code
+- }
++ } finally {
++ session = token.releaseSession(session);
+ }
+ }
+
+@@ -368,6 +372,8 @@
+ }
+ initialized = true;
+ } catch (PKCS11Exception e) {
++ // release session when initialization failed
++ session = token.releaseSession(session);
+ throw new ProviderException("Initialization failed", e);
+ }
+ if (bytesProcessed != 0) {
+@@ -529,6 +535,8 @@
+ }
+ bytesProcessed += len;
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException(e);
+ }
+ break;
+@@ -576,6 +584,8 @@
+ bytesProcessed += len;
+ byteBuffer.position(ofs + len);
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException("Update failed", e);
+ }
+ break;
diff --git a/8206406-pr3610-rh1597825.patch b/8206406-pr3610-rh1597825.patch
new file mode 100644
index 0000000..0f38126
--- /dev/null
+++ b/8206406-pr3610-rh1597825.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User aph
+# Date 1531146945 -3600
+# Mon Jul 09 15:35:45 2018 +0100
+# Node ID 95b72537801cc9946c27ad27f07e3f0790a21b08
+# Parent f6341f4635dacb56678264d29a88cd052b74036b
+8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Reviewed-by: dholmes
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+@@ -34,12 +34,12 @@
+
+ // Implementation of StubCodeDesc
+
+-StubCodeDesc* StubCodeDesc::_list = NULL;
+-int StubCodeDesc::_count = 0;
++StubCodeDesc* volatile StubCodeDesc::_list = NULL;
++int StubCodeDesc::_count = 0;
+
+
+ StubCodeDesc* StubCodeDesc::desc_for(address pc) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && !p->contains(pc)) p = p->_next;
+ // p == NULL || p->contains(pc)
+ return p;
+@@ -47,7 +47,7 @@
+
+
+ StubCodeDesc* StubCodeDesc::desc_for_index(int index) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && p->index() != index) p = p->_next;
+ return p;
+ }
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+@@ -38,7 +38,7 @@
+
+ class StubCodeDesc: public CHeapObj<mtCode> {
+ protected:
+- static StubCodeDesc* _list; // the list of all descriptors
++ static StubCodeDesc* volatile _list; // the list of all descriptors
+ static int _count; // length of list
+
+ StubCodeDesc* _next; // the next element in the linked list
+@@ -69,13 +69,13 @@
+
+ StubCodeDesc(const char* group, const char* name, address begin) {
+ assert(name != NULL, "no name specified");
+- _next = _list;
++ _next = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ _group = group;
+ _name = name;
+ _index = ++_count; // (never zero)
+ _begin = begin;
+ _end = NULL;
+- _list = this;
++ OrderAccess::release_store_ptr(&_list, this);
+ };
+
+ const char* group() const { return _group; }
diff --git a/8206425-hotspot-remove-debuglink.patch b/8206425-hotspot-remove-debuglink.patch
new file mode 100644
index 0000000..adbf1f0
--- /dev/null
+++ b/8206425-hotspot-remove-debuglink.patch
@@ -0,0 +1,73 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1530808022 -7200
+# Thu Jul 05 18:27:02 2018 +0200
+# Node ID 5ba59d58d976db456c4455640111e8107b8d80e8
+# Parent ad057f2e3211cd18bc56550d8a2c400d92ec35b1
+8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Summary: Only add .gnu_debuglink sections when there is some stripping done.
+Reviewed-by: erikj, dholmes
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -57,14 +57,15 @@
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -100,14 +100,15 @@
+ -lthread_db
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -358,14 +358,15 @@
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/8207057-pr3613-hotspot-assembler-debuginfo.patch b/8207057-pr3613-hotspot-assembler-debuginfo.patch
new file mode 100644
index 0000000..894596d
--- /dev/null
+++ b/8207057-pr3613-hotspot-assembler-debuginfo.patch
@@ -0,0 +1,20 @@
+--- openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:04:12.497865891 -0400
++++ openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:06:16.371214049 -0400
+@@ -34,7 +34,7 @@
+ CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
+ CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
+
+-AS.S = $(AS) $(ASFLAGS)
++AS.S = $(AS) -g $(ASFLAGS)
+
+ COMPILE.CC = $(CC_COMPILE) -c
+ GENASM.CC = $(CC_COMPILE) -S
+@@ -169,7 +169,7 @@
+ %.o: %.s
+ @echo Assembling $<
+ $(QUIETLY) $(REMOVE_TARGET)
+- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
++ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+
+ %.s: %.cpp
+ @echo Generating assembly for $<
diff --git a/8207234-dont-add-unnecessary-debug-links.patch b/8207234-dont-add-unnecessary-debug-links.patch
new file mode 100644
index 0000000..9c29e6b
--- /dev/null
+++ b/8207234-dont-add-unnecessary-debug-links.patch
@@ -0,0 +1,77 @@
+--- openjdk/make/common/NativeCompilation.gmk
++++ openjdk/make/common/NativeCompilation.gmk
+@@ -437,29 +437,6 @@
+
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+- ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+- else # not solaris
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+- endif # Touch to not retrigger rule on rebuild
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -483,7 +460,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
+ $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
+ endif
+ endif
+ endif
+@@ -522,28 +498,8 @@
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ else # not solaris
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ endif
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -567,7 +523,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
+ $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
+ endif
+ endif
+ endif
diff --git a/PR3183.patch b/PR3183.patch
deleted file mode 100644
index 5a619b4..0000000
--- a/PR3183.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1478057514 0
-# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
-# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
-PR3183: Support Fedora/RHEL system crypto policy
-
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
---- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
-@@ -43,6 +43,9 @@
- * implementation-specific location, which is typically the properties file
- * {@code lib/security/java.security} in the Java installation directory.
- *
-+ * <p>Additional default values of security properties are read from a
-+ * system-specific location, if available.</p>
-+ *
- * @author Benjamin Renaud
- */
-
-@@ -52,6 +55,10 @@
- private static final Debug sdebug =
- Debug.getInstance("properties");
-
-+ /* System property file*/
-+ private static final String SYSTEM_PROPERTIES =
-+ "/etc/crypto-policies/back-ends/java.config";
-+
- /* The java.security properties */
- private static Properties props;
-
-@@ -93,6 +100,7 @@
- if (sdebug != null) {
- sdebug.println("reading security properties file: " +
- propFile);
-+ sdebug.println(props.toString());
- }
- } catch (IOException e) {
- if (sdebug != null) {
-@@ -114,6 +122,31 @@
- }
-
- if ("true".equalsIgnoreCase(props.getProperty
-+ ("security.useSystemPropertiesFile"))) {
-+
-+ // now load the system file, if it exists, so its values
-+ // will win if they conflict with the earlier values
-+ try (BufferedInputStream bis =
-+ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
-+ props.load(bis);
-+ loadedProps = true;
-+
-+ if (sdebug != null) {
-+ sdebug.println("reading system security properties file " +
-+ SYSTEM_PROPERTIES);
-+ sdebug.println(props.toString());
-+ }
-+ } catch (IOException e) {
-+ if (sdebug != null) {
-+ sdebug.println
-+ ("unable to load security properties from " +
-+ SYSTEM_PROPERTIES);
-+ e.printStackTrace();
-+ }
-+ }
-+ }
-+
-+ if ("true".equalsIgnoreCase(props.getProperty
- ("security.overridePropertiesFile"))) {
-
- String extraPropFile = System.getProperty
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
---- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
---- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=true
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
---- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
---- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
-@@ -278,6 +278,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
---- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..61b3b69
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+Package of LTS OpenJDK 8
+OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 10. LTSs (next is 11) will go as separate packages.
+
+JDK8 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/8/ and is landing to your RHEL. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives.
+
+See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
+See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
+
diff --git a/dont-add-unnecessary-debug-links.patch b/dont-add-unnecessary-debug-links.patch
deleted file mode 100644
index 9c29e6b..0000000
--- a/dont-add-unnecessary-debug-links.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- openjdk/make/common/NativeCompilation.gmk
-+++ openjdk/make/common/NativeCompilation.gmk
-@@ -437,29 +437,6 @@
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
-- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
-- else # not solaris
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
-- endif # Touch to not retrigger rule on rebuild
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -483,7 +460,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
-@@ -522,28 +498,8 @@
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -567,7 +523,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
diff --git a/hotspot-assembler-debuginfo.patch b/hotspot-assembler-debuginfo.patch
deleted file mode 100644
index bf51c43..0000000
--- a/hotspot-assembler-debuginfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/rules.make.orig 2016-12-06 12:25:19.099768390 -0500
-+++ openjdk/hotspot/make/linux/makefiles/rules.make 2016-12-06 12:25:42.449990112 -0500
-@@ -34,7 +34,7 @@
- CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
- CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
--AS.S = $(AS) $(ASFLAGS)
-+AS.S = $(AS) -g $(ASFLAGS)
-
- COMPILE.CC = $(CC_COMPILE) -c
- GENASM.CC = $(CC_COMPILE) -S
-@@ -169,7 +169,7 @@
- %.o: %.s
- @echo Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
-- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-+ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
- %.s: %.cpp
- @echo Generating assembly for $<
diff --git a/hotspot-remove-debuglink.patch b/hotspot-remove-debuglink.patch
deleted file mode 100644
index 3b3070d..0000000
--- a/hotspot-remove-debuglink.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Remove unnecessary .gnu_debuglink sections from libjvm
-
-The .gnu_debuglink section indicates which file contains the debuginfo. This
-is not needed if we not stripping the shared object.
-
-RPM's debuginfo extraction code will add the right file links automatically. As
-it is, RPM copies over the .gnu_debuglink link to the debug info file. Without
-this patch, the debug info file also ends up containing the .gnu_debuglink
-section pointing to a missing (and not needed) file.
-
-diff --git a/make/linux/makefiles/jsig.make b/make/linux/makefiles/jsig.make
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -57,14 +57,15 @@
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
-diff --git a/make/linux/makefiles/saproc.make b/make/linux/makefiles/saproc.make
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -99,14 +99,15 @@
- -lthread_db
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
-diff --git a/make/linux/makefiles/vm.make b/make/linux/makefiles/vm.make
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -358,14 +358,15 @@
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
-- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 503eeca..0f2b41f 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -1,19 +1,48 @@
-# note, parametrised macros are order-senisitve (unlike not-parametrized) even with normal macros
-# also necessary when passing it as parameter other macros. If not macro, then it is considered as switch
-%global debug_suffix_unquoted -debug
+# RPM conditionals so as to be able to dynamically produce
+# slowdebug/release builds. See:
+# http://rpm.org/user_doc/conditional_builds.html
+#
+# Examples:
+#
+# Produce release *and* slowdebug builds on x86_64 (default):
+# $ rpmbuild -ba java-1.8.0-openjdk.spec
+#
+# Produce only release builds (no slowdebug builds) on x86_64:
+# $ rpmbuild -ba java-1.8.0-openjdk.spec --without slowdebug
+#
+# Only produce a release build on x86_64:
+# $ fedpkg mockbuild --without slowdebug
+#
+# Only produce a debug build on x86_64:
+# $ fedpkg local --without release
+#
+# Enable slowdebug builds by default on relevant arches.
+%bcond_without slowdebug
+# Enable release builds by default on relevant arches.
+%bcond_without release
+
+%define _find_debuginfo_opts -g
+# note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros
+# also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch
+# see the difference between global and define:
+# See https://github.com/rpm-software-management/rpm/issues/127 to comments at "pmatilai commented on Aug 18, 2017"
+# (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192)
+%global debug_suffix_unquoted -slowdebug
# quoted one for shell operations
%global debug_suffix "%{debug_suffix_unquoted}"
%global normal_suffix ""
-#if you wont only debug build, but providing java, build only normal build, but set normalbuild_parameter
-%global debugbuild_parameter slowdebug
-%global normalbuild_parameter release
-%global debug_warning This package have full debug on. Install only in need, and remove asap.
+# if you want only debug build but providing java build only normal build but set normalbuild_parameter
+%global debug_warning This package has full debug on. Install only in need and remove asap.
%global debug_on with full debug on
%global for_debug for packages with debug on
-# by default we build normal build always.
+%if %{with release}
%global include_normal_build 1
+%else
+%global include_normal_build 0
+%endif
+
%if %{include_normal_build}
%global build_loop1 %{normal_suffix}
%else
@@ -21,23 +50,30 @@
%endif
%global aarch64 aarch64 arm64 armv8
-# sometimes we need to distinguish big and little endian PPC64
+# we need to distinguish between big and little endian PPC64
%global ppc64le ppc64le
%global ppc64be ppc64 ppc64p7
%global multilib_arches %{power64} sparc64 x86_64
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm}
# By default, we build a debug build during main build on JIT architectures
-# do not ever sync {arm} to main packages, unles whole this package is merged.
+%if %{with slowdebug}
%ifarch %{jit_arches}
+%ifnarch %{arm}
%global include_debug_build 1
%else
+%global include_debug_build 1
+%endif
+%else
+%global include_debug_build 0
+%endif
+%else
%global include_debug_build 0
%endif
# On x86_64 and AArch64, we use the Shenandoah HotSpot
%ifarch x86_64 %{aarch64}
-%global use_shenandoah_hotspot 0
+%global use_shenandoah_hotspot 1
%else
%global use_shenandoah_hotspot 0
%endif
@@ -48,10 +84,10 @@
%global build_loop2 %{nil}
%endif
-# if you disable both builds, then build fails
+# if you disable both builds, then the build fails
%global build_loop %{build_loop1} %{build_loop2}
-# note, that order normal_suffix debug_suffix, in case of both enabled,
-# is expected in one single case at the end of build
+# note: that order: normal_suffix debug_suffix, in case of both enabled
+# is expected in one single case at the end of the build
%global rev_build_loop %{build_loop2} %{build_loop1}
%ifarch %{jit_arches}
@@ -66,28 +102,15 @@
%global targets all
%endif
-%ifnarch %{jit_arches}
-# Disable hardened build on non-jit arches. Work-around for RHBZ#1290936.
-%undefine _hardened_build
-%global ourcppflags %{nil}
-%global ourldflags %{nil}
-%else
-%ifarch %{aarch64}
-# Disable hardened build on AArch64 as it didn't bootcycle
-%undefine _hardened_build
-%global ourcppflags "-fstack-protector-strong"
-%global ourldflags %{nil}
-%else
+
# Filter out flags from the optflags macro that cause problems with the OpenJDK build
-# We filter out -O flags so that the optimisation of HotSpot is not lowered from O3 to O2
+# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||')
%global ourldflags %{__global_ldflags}
-%endif
-%endif
%ifarch %{arm}
# Disable hardened build on aarch32. Work-around for RHBZ#1290936.
%undefine _hardened_build
@@ -95,9 +118,9 @@
%global ourldflags %{nil}
%endif
-# With diabled nss is NSS deactivated, so in NSS_LIBDIR can be wrong path
-# the initialisation must be here. LAter the pkg-connfig have bugy behaviour
-#looks liekopenjdk RPM specific bug
+# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path
+# the initialization must be here. Later the pkg-config have buggy behavior
+# looks like openjdk RPM specific bug
# Always set this so the nss.cfg file is not broken
%global NSS_LIBDIR %(pkg-config --variable=libdir nss)
%global NSS_LIBS %(pkg-config --libs nss)
@@ -105,13 +128,18 @@
# see https://bugzilla.redhat.com/show_bug.cgi?id=1332456
%global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : )
%global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : )
-#this is worakround for processing of requires during srpm creation
+# this is workaround for processing of requires during srpm creation
%global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi)
%global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi)
-# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
-%global _privatelibs libmawt[.]so.*
+# Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349.
+# See also https://bugzilla.redhat.com/show_bug.cgi?id=1590796
+# as to why some libraries *cannot* be excluded. In particular,
+# these are:
+# libjsig.so, libjava.so, libjawt.so, libjvm.so and libverify.so
+%global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjli[.]so.*|libjsdt[.]so.*|libjsoundalsa[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libnpt[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsplashscreen[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
+
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
@@ -121,66 +149,59 @@
# does not match that given by _build_cpu
%ifarch x86_64
%global archinstall amd64
-%global stapinstall x86_64
%endif
%ifarch ppc
%global archinstall ppc
-%global stapinstall powerpc
%endif
%ifarch %{ppc64be}
%global archinstall ppc64
-%global stapinstall powerpc
%endif
%ifarch %{ppc64le}
%global archinstall ppc64le
-%global stapinstall powerpc
%endif
%ifarch %{ix86}
%global archinstall i386
-%global stapinstall i386
%endif
%ifarch ia64
%global archinstall ia64
-%global stapinstall ia64
%endif
%ifarch s390
%global archinstall s390
-%global stapinstall s390
%endif
%ifarch s390x
%global archinstall s390x
-%global stapinstall s390
%endif
%ifarch %{arm}
%global archinstall arm
-%global stapinstall arm
%endif
%ifarch %{aarch64}
%global archinstall aarch64
-%global stapinstall arm64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global archinstall sparc
-%global stapinstall %{_build_cpu}
%endif
# 64 bit sparc
%ifarch sparc64
%global archinstall sparcv9
-%global stapinstall %{_build_cpu}
%endif
%ifnarch %{jit_arches}
%global archinstall %{_arch}
%endif
+
+
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+# New Version-String scheme-style defines
+%global majorver 8
+
%ifarch %{ix86} x86_64
-%global with_openjfx_binding 0
+%global with_openjfx_binding 1
%global openjfx_path %{_jvmdir}/openjfx
# links src directories
%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
@@ -199,19 +220,18 @@
%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.
-%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
-%global abs2rel %{__perl} -e %{script}
-
-
# Standard JPackage naming and versioning defines.
%global origin openjdk
+%global origin_nice OpenJDK
+%global top_level_dir_name %{origin}
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u171-b11-aarch32-180511
+%global revision jdk8u181-b13-aarch32-180802
+%global shenandoah_project aarch64-port
+%global shenandoah_repo jdk8u-shenandoah
+%global shenandoah_revision aarch64-shenandoah-jdk8u181-b13
+
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -221,17 +241,19 @@
# priority must be 7 digits in total. The expression is workarounding tip
%global priority %(TIP=1800%{updatever}; echo ${TIP/tip/999})
-%global javaver 1.8.0
+%global javaver 1.%{majorver}.0
+%global systemtap_javaver 9
# parametrized macros are order-sensitive
-%global fullversion %{name}-%{version}-%{release}
-#images stub
-%global j2sdkimage j2sdk-image
+%global compatiblename %{name}
+%global fullversion %{compatiblename}-%{version}-%{release}
+# images stub
+%global jdkimage j2sdk-image
# output dir stub
%define buildoutputdir() %{expand:openjdk/build/jdk8.build%{?1}}
-#we can copy the javadoc to not arched dir, or made it not noarch
+# we can copy the javadoc to not arched dir, or make it not noarch
%define uniquejavadocdir() %{expand:%{fullversion}%{?1}}
-#main id and dir of this jdk
+# main id and dir of this jdk
%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}}
# Standard JPackage directories and symbolic links.
@@ -246,18 +268,19 @@
%if %{with_systemtap}
# Where to install systemtap tapset (links)
-# We would like these to be in a package specific subdir,
+# We would like these to be in a package specific sub-dir,
# but currently systemtap doesn't support that, so we have to
-# use the root tapset dir for now. To distinquish between 64
+# use the root tapset dir for now. To distinguish between 64
# and 32 bit architectures we place the tapsets under the arch
# specific dir (note that systemtap will only pickup the tapset
# for the primary arch for now). Systemtap uses the machine name
# aka build_cpu as architecture specific directory name.
%global tapsetroot /usr/share/systemtap
-%global tapsetdir %{tapsetroot}/tapset/%{stapinstall}
+%global tapsetdirttapset %{tapsetroot}/tapset/
+%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
%endif
-# not-duplicated scriplets for normal/debug packages
+# not-duplicated scriptlets for normal/debug packages
%global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
@@ -332,7 +355,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
# see pretrans where this file is declared
-# also see that pretrans is only for nondebug
+# also see that pretrans is only for non-debug
if [ ! "%{?1}" == %{debug_suffix} ]; then
if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then
sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}}
@@ -530,7 +553,7 @@ exit 0
}
%define files_jre() %{expand:
-%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
+%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png
%{_datadir}/applications/*policytool%{?1}.desktop
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libsplashscreen.so
@@ -548,12 +571,11 @@ exit 0
%defattr(-,root,root,-)
%dir %{_sysconfdir}/.java/.systemPrefs
%dir %{_sysconfdir}/.java
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}
%{_jvmdir}/%{jrelnk -- %{?1}}
-%{_jvmprivdir}/*
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security
%{_jvmdir}/%{jredir -- %{?1}}/lib/security/cacerts
%dir %{_jvmdir}/%{jredir -- %{?1}}
@@ -569,6 +591,9 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/bin/servertool
%{_jvmdir}/%{jredir -- %{?1}}/bin/tnameserv
%{_jvmdir}/%{jredir -- %{?1}}/bin/unpack200
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar
@@ -592,8 +617,8 @@ exit 0
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/nss.cfg
%ifarch %{jit_arches}
%ifnarch %{power64}
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
%endif
%endif
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/
@@ -693,7 +718,17 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/management-agent.jar
%{_jvmdir}/%{jredir -- %{?1}}/lib/management/*
%{_jvmdir}/%{jredir -- %{?1}}/lib/cmm/*
-%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/*
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/cldrdata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/dnsns.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/jaccess.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/localedata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/meta-index
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/nashorn.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunec.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunjce_provider.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunpkcs11.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/zipfs.jar
+
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/management
@@ -703,9 +738,9 @@ exit 0
%define files_devel() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/include
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib
@@ -754,6 +789,9 @@ exit 0
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/aarch32
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
+%if %{with_systemtap}
+%{_jvmdir}/%{sdkdir -- %{?1}}/tapset
+%endif
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ir.idl
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jconsole.jar
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/orb.idl
@@ -795,34 +833,33 @@ exit 0
%{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1*
%if %{with_systemtap}
%dir %{tapsetroot}
+%dir %{tapsetdirttapset}
%dir %{tapsetdir}
-%{tapsetdir}/*%{version}-%{release}.%{_arch}%{?1}.stp
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/tapset
-%{_jvmdir}/%{sdkdir -- %{?1}}/tapset/*.stp
+%{tapsetdir}/*%{_arch}%{?1}.stp
%endif
}
%define files_demo() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_src() %{expand:
%defattr(-,root,root,-)
-%doc README.src
+%doc README.md
%{_jvmdir}/%{sdkdir -- %{?1}}/src.zip
}
%define files_javadoc() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_javadoc_zip() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_accessibility() %{expand:
@@ -832,106 +869,94 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/accessibility.properties
}
-# not-duplicated requires/provides/obsolate for normal/debug packages
+# not-duplicated requires/provides/obsoletes for normal/debug packages
%define java_rpo() %{expand:
Requires: fontconfig%{?_isa}
Requires: xorg-x11-fonts-Type1
-
# Requires rest of java
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+# for java-X-openjdk package's desktop binding
+Recommends: gtk2%{?_isa}
+#Provides: java-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
-# Standard JPackage base provides.
-#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
+# Standard JPackage base provides
+#Provides: jre = %{javaver}%{?1}
#Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
+#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre = %{javaver}%{?1}
#Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: java-fonts%{?1} = %{epoch}:%{version}
-
-Obsoletes: java-1.7.0-openjdk%{?1}
-Obsoletes: java-1.5.0-gcj%{?1}
-Obsoletes: sinjdoc
}
%define java_headless_rpo() %{expand:
-# Require /etc/pki/java/cacerts.
+# Require /etc/pki/java/cacerts
Requires: ca-certificates
# Require javapackages-filesystem for ownership of /usr/lib/jvm/
Requires: javapackages-filesystem
-# Require zoneinfo data provided by tzdata-java subpackage.
+# Require zone-info data provided by tzdata-java sub-package
Requires: tzdata-java >= 2015d
# libsctp.so.1 is being `dlopen`ed on demand
Requires: lksctp-tools%{?_isa}
# there is a need to depend on the exact version of NSS
Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION}
Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION}
-# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum eforce it, not rpm transaction and so no configs are persisted when pure rpm -u is run. I t may be consiedered as regression
-Requires: copy-jdk-configs >= 3.3
+# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it,
+# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be
+# considered as regression
+Requires: copy-jdk-configs >= 3.3
OrderWithRequires: copy-jdk-configs
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
+# for optional support of kernel stream control, card reader and printing bindings
+Suggests: lksctp-tools%{?_isa}, pcsc-lite-devel%{?_isa}, cups
-# Standard JPackage base provides.
+# Standard JPackage base provides
+#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-headless%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: jndi%{?1} = %{epoch}:%{version}
-#Provides: jndi-ldap%{?1} = %{epoch}:%{version}
-#Provides: jndi-cos%{?1} = %{epoch}:%{version}
-#Provides: jndi-rmi%{?1} = %{epoch}:%{version}
-#Provides: jndi-dns%{?1} = %{epoch}:%{version}
-#Provides: jaas%{?1} = %{epoch}:%{version}
-#Provides: jsse%{?1} = %{epoch}:%{version}
-#Provides: jce%{?1} = %{epoch}:%{version}
-#Provides: jdbc-stdext%{?1} = 4.1
-#Provides: java-sasl%{?1} = %{epoch}:%{version}
-
-#https://bugzilla.redhat.com/show_bug.cgi?id=1312019
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1312019
#Provides: /usr/bin/jjs
-Obsoletes: java-1.7.0-openjdk-headless%{?1}
}
%define java_devel_rpo() %{expand:
-# Require base package.
+# Requires base package
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage devel provides.
+# Standard JPackage devel provides
#Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk%{?1} = %{epoch}:%{javaver}
#Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version}
+#Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version}
#Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-devel%{?1} = %{epoch}:%{javaver}
-Obsoletes: java-1.7.0-openjdk-devel%{?1}
-Obsoletes: java-1.5.0-gcj-devel%{?1}
}
@@ -939,39 +964,36 @@ Obsoletes: java-1.5.0-gcj-devel%{?1}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+#Provides: java-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-demo%{?1}
}
%define java_javadoc_rpo() %{expand:
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install javadoc alternative.
+# Post requires alternatives to install javadoc alternative
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall javadoc alternative.
+# Postun requires alternatives to uninstall javadoc alternative
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage javadoc provides.
+# Standard JPackage javadoc provides
#Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
-
-Obsoletes: java-1.7.0-openjdk-javadoc%{?1}
-
+#Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release}
}
%define java_src_rpo() %{expand:
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Standard JPackage javadoc provides.
+# Standard JPackage sources provides
#Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-src%{?1}
+#Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release}
}
%define java_accessibility_rpo() %{expand:
@@ -979,24 +1001,25 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-accessibility = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-accessibility = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
Name: java-%{javaver}-%{origin}-aarch32
-Version: %{javaver}.%{updatever}
-Release: 2.%{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
+Version: %{javaver}.%{updatever}.%{buildver}
+Release: 1%{?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
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
-# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
-# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
-# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
+# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
+# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
+# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
@@ -1025,18 +1048,25 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+# aarch64-port/jdk8u-shenandoah contains an integration forest of
+# OpenJDK 8u, the aarch64 port and Shenandoah
+# To regenerate, use:
+# VERSION=%%{shenandoah_revision}
+# FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> REPOS=hotspot generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
+#Source1: {shenandoah_project}-{shenandoah_repo}-{shenandoah_revision}.tar.xz
# Custom README for -src subpackage
-Source2: README.src
+Source2: README.md
# Use 'generate_tarballs.sh' to generate the following tarballs
-# They are based on code contained in the IcedTea7 project.
+# They are based on code contained in the IcedTea project (3.x)
# Systemtap tapsets. Zipped up to keep it small.
Source8: systemtap-tapset-3.4.0pre01.tar.xz
-# Desktop files. Adapated from IcedTea.
+# Desktop files. Adapted from IcedTea
Source9: jconsole.desktop.in
Source10: policytool.desktop.in
@@ -1058,7 +1088,11 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess
Source101: config.sub
+############################################
+#
# RPM/distribution specific patches
+#
+############################################
# Accessibility patches
# Ignore AWTError when assistive technologies are loaded
@@ -1066,7 +1100,11 @@ Patch1: java-1.8.0-openjdk-accessible-toolkit.patch
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
+#############################################
+#
# Upstreamable patches
+#
+#############################################
# PR2737: Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# PR2095, RH1163501: 2048-bit DH upper bound too small for Fedora infrastructure (sync with IcedTea 2.x)
@@ -1097,30 +1135,39 @@ Patch509: rh1176206-root.patch
Patch523: pr2974-rh1337583.patch
# PR3083, RH1346460: Regression in SSL debug output without an ECC provider
Patch528: pr3083-rh1346460.patch
-# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
-# linking with unresolved symbols.
-Patch529: rhbz_1538767_fix_linking.patch
-
+# RH1566890: CVE-2018-3639
+Patch529: rh1566890_embargoed20180521.patch
+# PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+Patch530: pr3601.patch
+# PR3183: Support Fedora/RHEL system crypto policy
+Patch300: pr3183.patch
+
+#############################################
+#
# Upstreamable debugging patches
+#
+#############################################
# 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
-# 8200556, PR3566: AArch64 port crashes on slowdebug builds
-#Patch207: 8200556-pr3566.patch
+# 8207234: More libraries with .gnu_debuglink sections added unconditionally
+Patch205: 8207234-dont-add-unnecessary-debug-links.patch
# Arch-specific upstreamable patches
-# PR2415: JVM -Xmx requirement is too high on s390
-#Patch100: {name}-s390-java-opts.patch
-# Type fixing for s390
-#Patch102: {name}-size_t.patch
-# Use "%z" for size_t on s390 as size_t != intptr_t
-#Patch103: s390-size_t_format_flags.patch
-# Fix more cases of missing return statements on AArch64
-#Patch104: pr3458-rh1540242.patch
-
+# s390: PR2415: JVM -Xmx requirement is too high on s390
+Patch100: java-1.8.0-openjdk-s390-java-opts.patch
+# s390: Type fixing for s390
+Patch102: java-1.8.0-openjdk-size_t.patch
+# s390: PR3593: Use "%z" for size_t on s390 as size_t != intptr_t
+Patch103: pr3593-s390-size_t_format_flags.patch
+# x86: S8199936, PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations (-mstackrealign workaround)
+Patch105: 8199936-pr3533-workaround.patch
+# AArch64: PR3519: Fix further functions with a missing return value (AArch64)
+#Patch106: pr3519.patch
+
+#############################################
+#
# Patches which need backporting to 8u
+#
+#############################################
# S8073139, RH1191652; fix name of ppc64le architecture
#Patch601: {name}-rh1191652-root.patch
#Patch602: {name}-rh1191652-jdk.patch
@@ -1131,45 +1178,104 @@ Patch7: include-all-srcs.patch
Patch202: system-libpng.patch
# 8042159: Allow using a system-installed lcms2
Patch203: system-lcms.patch
-# PR2462: Backport "8074839: Resolve disabled warnings for libunpack and the unpack200 binary"
+# S8074839, PR2462: Resolve disabled warnings for libunpack and the unpack200 binary
# This fixes printf warnings that lead to build failure with -Werror=format-security from optflags
Patch502: pr2462.patch
-# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
-Patch506: pr2842-01.patch
-Patch507: pr2842-02.patch
# S8154313: Generated javadoc scattered all over the place
Patch400: 8154313.patch
+# 8197429, PR3546, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
+Patch561: 8197429-pr3546-rh1536622.patch
+# 8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Patch563: 8171000-pr3542-rh1402819.patch
+# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
+Patch564: 8197546-pr3542-rh1402819.patch
+# PR3559: Use ldrexd for atomic reads on ARMv7.
+Patch567: pr3559.patch
+# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+Patch571: pr3591.patch
+# 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Patch572: 8184309-pr3596.patch
+# 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Patch573: 8141570-pr3548.patch
+# 8143245, PR3548: Zero build requires disabled warnings
+Patch574: 8143245-pr3548.patch
+# 8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Patch575: 8197981-pr3548.patch
+# 8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Patch576: 8064786-pr3599.patch
+# 8062808, PR3548: Turn on the -Wreturn-type warning
+Patch577: 8062808-pr3548.patch
+# 8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs
+Patch210: 8165852-pr3468.patch
+# 8207057, PR3613: Enable debug information for assembly code files
+Patch206: 8207057-pr3613-hotspot-assembler-debuginfo.patch
+
+#############################################
+#
+# Patches appearing in 8u192
+#
+#############################################
+# S8031668, PR2842: TOOLCHAIN_FIND_COMPILER unexpectedly resolves symbolic links
+Patch506: pr2842-01.patch
+# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
+Patch507: pr2842-02.patch
# S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-Patch540: rhbz1548475-LDFLAGSusage.patch
# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present
Patch560: 8188030-pr3459-rh1484079.patch
-# 8197429, PR3456, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
-Patch561: 8197429-pr3456-rh1536622.patch
-
+# 8205104, PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+Patch562: pr3539-rh1548475.patch
+# 8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Patch565: 8185723-pr3553.patch
+# 8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Patch566: 8186461-pr3557.patch
+# 8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Patch569: 8201509-pr3579.patch
+# 8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Patch570: 8165489-pr3589.patch
+# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
+# linking with unresolved symbols.
+Patch531: 8196516-pr3523-rh1538767.patch
+# 8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Patch578: 8075942-pr3602-rh1582032.patch
+# 8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Patch579: 8203182-pr3603-rh1568033.patch
+# 8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Patch580: 8206406-pr3610-rh1597825.patch
+# 8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Patch581: 8146115-pr3508-rh1463098.patch
+# 8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Patch204: 8206425-hotspot-remove-debuglink.patch
+
+#############################################
+#
# Patches ineligible for 8u
+#
+#############################################
# 8043805: Allow using a system-installed libjpeg
Patch201: system-libjpeg.patch
-Patch209: 8035496-hotspot.patch
-Patch210: suse_linuxfilestore.patch
-# custom securities
-Patch300: PR3183.patch
+#############################################
+#
# Local fixes
+#
+#############################################
# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
Patch525: pr1834-rh1022017.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
+# PR3575, RH1567204: System cacerts database handling should not affect jssecacerts
+Patch540: pr3575-rh1567204.patch
-# Shenandoah fixes
-# PR3573: Fix TCK crash with Shenandoah
-#Patch700: pr3573.patch
-
+#############################################
+#
# Non-OpenJDK fixes
+#
+#############################################
Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
@@ -1178,7 +1284,8 @@ BuildRequires: alsa-lib-devel
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
-BuildRequires: elfutils
+# elfutils only are OK for build without AOT
+BuildRequires: elfutils-devel
BuildRequires: fontconfig
BuildRequires: freetype-devel
BuildRequires: giflib-devel
@@ -1202,11 +1309,12 @@ BuildRequires: zip
# Use OpenJDK 7 where available (on RHEL) to avoid
# having to use the rhel-7.x-java-unsafe-candidate hack
%if ! 0%{?fedora} && 0%{?rhel} <= 7
+# Require a boot JDK which doesn't fail due to RH1482244
BuildRequires: java-1.7.0-openjdk-devel >= 1.7.0.151-2.6.11.3
%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
%endif
-# Zero-assembler build requirement.
+# Zero-assembler build requirement
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
@@ -1220,8 +1328,8 @@ BuildRequires: nss-softokn-freebl-devel >= 3.16.1
BuildRequires: systemtap-sdt-devel
%endif
-# this is built always, also during debug-only build
-# when it is built in debug-only, then this package is just placeholder
+# this is always built, also during debug-only build
+# when it is built in debug-only this package is just placeholder
%{java_rpo %{nil}}
ExclusiveArch: %{arm}
@@ -1231,110 +1339,112 @@ A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
-%package debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package slowdebug
+Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on}
Group: Development/Languages
%{java_rpo -- %{debug_suffix_unquoted}}
-%description debug
-The OpenJDK runtime environment.
+%description slowdebug
+The %{origin_nice} runtime environment.
%{debug_warning}
%endif
%if %{include_normal_build}
%package headless
-Summary: OpenJDK Runtime Environment
+Summary: %{origin_nice} Headless Runtime Environment %{majorver}
Group: Development/Languages
%{java_headless_rpo %{nil}}
%description headless
-The OpenJDK runtime environment without audio and video support.
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%endif
%if %{include_debug_build}
-%package headless-debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package headless-slowdebug
+Summary: %{origin_nice} Runtime Environment %{debug_on}
Group: Development/Languages
%{java_headless_rpo -- %{debug_suffix_unquoted}}
-%description headless-debug
-The OpenJDK runtime environment without audio and video support.
+%description headless-slowdebug
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%{debug_warning}
%endif
%if %{include_normal_build}
%package devel
-Summary: OpenJDK Development Environment
+Summary: %{origin_nice} Development Environment %{majorver}
Group: Development/Tools
%{java_devel_rpo %{nil}}
%description devel
-The OpenJDK development tools.
+The %{origin_nice} development tools %{majorver}.
%endif
%if %{include_debug_build}
-%package devel-debug
-Summary: OpenJDK Development Environment %{debug_on}
+%package devel-slowdebug
+Summary: %{origin_nice} Development Environment %{majorver} %{debug_on}
Group: Development/Tools
%{java_devel_rpo -- %{debug_suffix_unquoted}}
-%description devel-debug
-The OpenJDK development tools.
+%description devel-slowdebug
+The %{origin_nice} development tools %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package demo
-Summary: OpenJDK Demos
+Summary: %{origin_nice} Demos %{majorver}
Group: Development/Languages
%{java_demo_rpo %{nil}}
%description demo
-The OpenJDK demos.
+The %{origin_nice} demos %{majorver}.
%endif
%if %{include_debug_build}
-%package demo-debug
-Summary: OpenJDK Demos %{debug_on}
+%package demo-slowdebug
+Summary: %{origin_nice} Demos %{majorver} %{debug_on}
Group: Development/Languages
%{java_demo_rpo -- %{debug_suffix_unquoted}}
-%description demo-debug
-The OpenJDK demos.
+%description demo-slowdebug
+The %{origin_nice} demos %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package src
-Summary: OpenJDK Source Bundle
+Summary: %{origin_nice} Source Bundle %{majorver}
Group: Development/Languages
%{java_src_rpo %{nil}}
%description src
-The OpenJDK source bundle.
+The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver}
+class library source code for use by IDE indexers and debuggers.
%endif
%if %{include_debug_build}
-%package src-debug
-Summary: OpenJDK Source Bundle %{for_debug}
+%package src-slowdebug
+Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug}
Group: Development/Languages
%{java_src_rpo -- %{debug_suffix_unquoted}}
-%description src-debug
-The OpenJDK source bundle %{for_debug}.
+%description src-slowdebug
+The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
+ class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
%endif
%if %{include_normal_build}
%package javadoc
-Summary: OpenJDK API Documentation
+Summary: %{origin_nice} %{majorver} API documentation
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1342,12 +1452,12 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc
-The OpenJDK API documentation.
+The %{origin_nice} %{majorver} API documentation.
%endif
%if %{include_normal_build}
%package javadoc-zip
-Summary: OpenJDK API Documentation compressed in single archive
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1355,60 +1465,60 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc-zip
-The OpenJDK API documentation compressed in single archive.
+The %{origin_nice} %{majorver} API documentation compressed in single archive.
%endif
%if %{include_debug_build}
-%package javadoc-debug
-Summary: OpenJDK API Documentation %{for_debug}
+%package javadoc-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-debug
-The OpenJDK API documentation %{for_debug}.
+%description javadoc-slowdebug
+The %{origin_nice} %{majorver} API documentation %{for_debug}.
%endif
%if %{include_debug_build}
-%package javadoc-zip-debug
-Summary: OpenJDK API Documentation compressed in single archive %{for_debug}
+%package javadoc-zip-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-zip-debug
-The OpenJDK API documentation compressed in single archive %{for_debug}.
+%description javadoc-zip-slowdebug
+The %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}.
%endif
%if %{include_normal_build}
%package accessibility
-Summary: OpenJDK accessibility connector
+Summary: %{origin_nice} %{majorver} accessibility connector
%{java_accessibility_rpo %{nil}}
%description accessibility
-Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows
+Enables accessibility support in %{origin_nice} %{majorver} by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
-Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
+Please note, the java-atk-wrapper is still in beta, and %{origin_nice} %{majorver} itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%endif
%if %{include_debug_build}
-%package accessibility-debug
-Summary: OpenJDK accessibility connector %{for_debug}
+%package accessibility-slowdebug
+Summary: %{origin_nice} %{majorver} accessibility connector %{for_debug}
%{java_accessibility_rpo -- %{debug_suffix_unquoted}}
-%description accessibility-debug
+%description accessibility-slowdebug
See normal java-%{version}-openjdk-accessibility description.
%endif
@@ -1431,21 +1541,21 @@ Provides: javafx-devel = %{epoch}:%{version}-%{release}
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}
+%package openjfx-slowdebug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-slowdebug
+Requires: %{name}-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx%{?_isa}
-Provides: javafx-debug = %{epoch}:%{version}-%{release}
-%description openjfx-debug
-Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-slowdebug
+Set of links from OpenJDK-slowdebug (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}
+%package openjfx-devel-slowdebug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-slowdebug
+Requires: %{name}-devel-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx-devel%{?_isa}
-Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
-%description openjfx-devel-debug
-Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-devel-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-slowdebug
+Set of links from OpenJDK-slowdebug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
%endif
%endif
@@ -1463,7 +1573,7 @@ else
exit 12
fi
if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then
- echo "you have disabled both include_debug_build and include_debug_build. no go."
+ echo "You have disabled both include_debug_build and include_normal_build. That is a no go."
exit 13
fi
%setup -q -c -n %{uniquesuffix ""} -T -a 0
@@ -1509,9 +1619,8 @@ sh %{SOURCE12}
%patch204
%patch205
%patch206
-#%patch207
-%patch209
%patch210
+
%patch300
%patch1
@@ -1520,20 +1629,21 @@ sh %{SOURCE12}
%patch7
# s390 build fixes
-#%patch100
-#%patch102
-#%patch103
+%patch100
+%patch102
+%patch103
# AArch64 fixes
-#%patch104
+#%patch106
+
+# x86 fixes
+%patch105
# ppc64le fixes
#%patch603
#%patch601
#%patch602
-# Zero fixes.
-
# Upstreamable fixes
%patch502
%patch504
@@ -1554,17 +1664,37 @@ sh %{SOURCE12}
%patch523
%patch526
%patch528
+%patch529
+%patch530
%patch538
-%patch540
%patch560
pushd openjdk/jdk
-%patch529 -p1
+%patch531 -p1
popd
%patch561
+%patch562
+%patch563
+%patch564
+%patch565
+%patch566
+%patch567
+%patch569
+%patch571
+%patch572
+%patch573
+%patch574
+%patch575
+%patch576
+%patch577
+%patch578
+%patch579
+%patch580
+%patch581
# RPM-only fixes
%patch525
%patch539
+%patch540
# RHEL-only patches
%if ! 0%{?fedora} && 0%{?rhel} <= 7
@@ -1573,7 +1703,8 @@ popd
# Shenandoah-only patches
%if %{use_shenandoah_hotspot}
-%patch700
+%else
+%patch570
%endif
%patch1000
@@ -1588,17 +1719,17 @@ cp -r tapset tapset%{debug_suffix}
for suffix in %{build_loop} ; do
for file in "tapset"$suffix/*.in; do
- OUTPUT_FILE=`echo $file | sed -e s:%{javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g`
- sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g $file > $file.1
+ OUTPUT_FILE=`echo $file | sed -e "s:%{systemtap_javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
+ sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g" $file > $file.1
# TODO find out which architectures other than i686 have a client vm
%ifarch %{ix86}
- sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE
+ sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g" $file.1 > $OUTPUT_FILE
%else
- sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE
+ sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE
%endif
- sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
- sed -i -e s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g $OUTPUT_FILE
+ sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE
+ sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE
done
done
# systemtap tapsets ends
@@ -1611,18 +1742,20 @@ for file in %{SOURCE9} %{SOURCE10} ; do
EXT="${FILE##*.}"
NAME="${FILE%.*}"
OUTPUT_FILE=$NAME$suffix.$EXT
- sed -e s:#JAVA_HOME#:%{sdkbindir -- $suffix}:g $file > $OUTPUT_FILE
- sed -i -e s:#JRE_HOME#:%{jrebindir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:#ARCH#:%{version}-%{release}.%{_arch}$suffix:g $OUTPUT_FILE
+ sed -e "s:@JAVA_HOME@:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE
+ sed -i -e "s:@JRE_HOME@:%{jrebindir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
done
done
# Setup nss.cfg
-sed -e s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g %{SOURCE11} > nss.cfg
+sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
%build
-# How many cpu's do we have?
+# How many CPU's do we have?
export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
export NUM_PROC=${NUM_PROC:-1}
%if 0%{?_smp_ncpus_max}
@@ -1630,7 +1763,6 @@ export NUM_PROC=${NUM_PROC:-1}
[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
%endif
-# Build IcedTea and OpenJDK.
%ifarch s390x sparc64 alpha %{power64} %{aarch64}
export ARCH_DATA_MODEL=64
%endif
@@ -1643,23 +1775,28 @@ export CFLAGS="$CFLAGS -mieee"
# Explicitly set the C++ standard as the default has changed on GCC >= 6
EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse"
EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
+
%ifarch %{power64} ppc
# fix rpmlint warnings
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
%endif
export EXTRA_CFLAGS
-(cd openjdk/common/autoconf
+(cd %{top_level_dir_name}/common/autoconf
bash ./autogen.sh
)
for suffix in %{build_loop} ; do
-if [ "$suffix" = "%{debug_suffix}" ] ; then
-debugbuild=%{debugbuild_parameter}
+if [ "x$suffix" = "x" ] ; then
+ debugbuild=release
else
-debugbuild=%{normalbuild_parameter}
+ # change --something to something
+ debugbuild=`echo $suffix | sed "s/-//g"`
fi
+# Variable used in hs_err hook on build failures
+top_dir_abs_path=$(pwd)/%{top_level_dir_name}
+
mkdir -p %{buildoutputdir -- $suffix}
pushd %{buildoutputdir -- $suffix}
@@ -1679,7 +1816,7 @@ bash ../../configure \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
- --with-lcms=bundled \
+ --with-lcms=system \
--with-stdc++lib=dynamic \
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
--with-extra-cflags="$EXTRA_CFLAGS" \
@@ -1701,24 +1838,29 @@ make \
POST_STRIP_CMD="" \
LOG=trace \
SCTP_WERROR= \
- %{targets}
+ %{targets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false )
make zip-docs
# the build (erroneously) removes read permissions from some jars
# this is a regression in OpenJDK 7 (our compiler):
# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
-find images/%{j2sdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
-chmod ugo+r images/%{j2sdkimage}/lib/ct.sym
+find images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
+chmod ugo+r images/%{jdkimage}/lib/ct.sym
# remove redundant *diz and *debuginfo files
-find images/%{j2sdkimage} -iname '*.diz' -exec rm {} \;
-find images/%{j2sdkimage} -iname '*.debuginfo' -exec rm {} \;
+find images/%{jdkimage} -iname '*.diz' -exec rm {} \;
+find images/%{jdkimage} -iname '*.debuginfo' -exec rm {} \;
+
+# Build screws up permissions on binaries
+# https://bugs.openjdk.java.net/browse/JDK-8173610
+find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \;
+find images/%{jdkimage}/bin/ -exec chmod +x {} \;
popd >& /dev/null
# Install nss.cfg right away as we will be using the JRE above
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Install nss.cfg right away as we will be using the JRE above
install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
@@ -1727,7 +1869,7 @@ install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
rm $JAVA_HOME/jre/lib/tzdb.dat
ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat
-#build cycles
+# build cycles
done
%check
@@ -1735,7 +1877,7 @@ done
# We test debug first as it will give better diagnostics on a crash
for suffix in %{rev_build_loop} ; do
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE13}
@@ -1753,14 +1895,14 @@ do
# All these tests rely on RPM failing the build if the exit code of any set
# of piped commands is non-zero.
- # Test for .debug_* sections in the shared object. This is the main test.
- # Stripped objects will not contain these.
+ # Test for .debug_* sections in the shared object. This is the main test
+ # Stripped objects will not contain these
eu-readelf -S "$lib" | grep "] .debug_"
test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
- # Test FILE symbols. These will most likely be removed by anyting that
+ # Test FILE symbols. These will most likely be removed by anything that
# manipulates symbol tables because it's generally useless. So a nice test
- # that nothing has messed with symbols.
+ # that nothing has messed with symbols
old_IFS="$IFS"
IFS=$'\n'
for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT")
@@ -1771,7 +1913,7 @@ do
done
IFS="$old_IFS"
- # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking.
+ # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
if [ "`basename $lib`" = "libjvm.so" ]; then
eu-readelf -s "$lib" | \
grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$"
@@ -1779,7 +1921,7 @@ do
# Test that there are no .gnu_debuglink sections pointing to another
# debuginfo file. There shouldn't be any debuginfo files, so the link makes
- # no sense either.
+ # no sense either
eu-readelf -S "$lib" | grep 'gnu'
if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
echo "bad .gnu_debuglink section."
@@ -1821,7 +1963,7 @@ $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
-#build cycles check
+# build cycles check
done
%install
@@ -1829,9 +1971,10 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+# Install the jdk
+pushd %{buildoutputdir -- $suffix}/images/%{jdkimage}
-#install jsa directories so we can owe them
+# Install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/
@@ -1842,7 +1985,7 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}
%if %{with_systemtap}
- # Install systemtap support files.
+ # Install systemtap support files
install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset
# note, that uniquesuffix is in BUILD dir in this case
cp -a $RPM_BUILD_DIR/%{uniquesuffix ""}/tapset$suffix/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
@@ -1850,28 +1993,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
tapsetFiles=`ls *.stp`
popd
install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
- pushd $RPM_BUILD_ROOT%{tapsetdir}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir -- $suffix}/tapset %{tapsetdir})
- for name in $tapsetFiles ; do
- targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
- ln -sf $RELATIVE/$name $targetName
- done
- popd
+ for name in $tapsetFiles ; do
+ targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
+ ln -sf %{_jvmdir}/%{sdkdir -- $suffix}/tapset/$name $RPM_BUILD_ROOT%{tapsetdir}/$targetName
+ done
%endif
- # Remove empty cacerts database.
+ # 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.
+ # 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 .
+ ln -sf /etc/pki/java/cacerts .
popd
- # Install JCE policy symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix -- $suffix}/jce/vanilla
-
- # Install versioned symlinks.
+ # Install versioned symlinks
pushd $RPM_BUILD_ROOT%{_jvmdir}
ln -sf %{jredir -- $suffix} %{jrelnk -- $suffix}
popd
@@ -1879,11 +2014,11 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
# Remove javaws man page
rm -f man/man1/javaws*
- # Install man pages.
+ # Install man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*
do
- # Convert man pages to UTF8 encoding.
+ # Convert man pages to UTF8 encoding
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
@@ -1902,19 +2037,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
popd
-# Install Javadoc documentation.
+# Install Javadoc documentation
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir -- $suffix}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}
-cp -a %{buildoutputdir -- $suffix}/bundles/jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
+built_doc_archive=`echo "jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip" | sed s/slowdebug/debug/`
+cp -a %{buildoutputdir -- $suffix}/bundles/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
-# Install icons and menu entries.
+# Install icons and menu entries
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png
done
-# Install desktop files.
+# Install desktop files
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
for e in jconsole$suffix policytool$suffix ; do
desktop-file-install --vendor=%{uniquesuffix -- $suffix} --mode=644 \
@@ -1925,7 +2061,7 @@ done
# See https://bugzilla.redhat.com/show_bug.cgi?id=741821
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs
-# FIXME: remove SONAME entries from demo DSOs. See
+# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
@@ -2061,17 +2197,24 @@ 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
+# stabilize permissions
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ;
+
# end, dual install
done
-%if %{include_normal_build}
-# intentioanlly only for non-debug
+%if %{include_normal_build}
+# intentionally only for non-debug
%pretrans headless -p <lua>
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre
-- if copy-jdk-configs is in transaction, it installs in pretrans to temp
--- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in tranasction and so is
--- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
+-- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is
+-- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
-- whether copy-jdk-configs is installed or not. If so, then configs are copied
-- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all
local posix = require "posix"
@@ -2088,10 +2231,10 @@ local stat2 = posix.stat(SOURCE2, "type");
print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.")
end;
package.path = package.path .. ";" .. SOURCE1
-else
+else
if (stat2 ~= nil) then
if (debug) then
- print(SOURCE2 .." exists - copy-jdk-configs alrady installed and NOT in transation. Using.")
+ print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.")
end;
package.path = package.path .. ";" .. SOURCE2
else
@@ -2103,11 +2246,11 @@ else
return
end
end
--- run contetn of included file with fake args
+-- run content of included file with fake args
arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"}
require "copy_jdk_configs.lua"
-%post
+%post
%{post_script %{nil}}
%post headless
@@ -2144,45 +2287,45 @@ require "copy_jdk_configs.lua"
%{postun_javadoc_zip %{nil}}
%endif
-%if %{include_debug_build}
-%post debug
+%if %{include_debug_build}
+%post slowdebug
%{post_script -- %{debug_suffix_unquoted}}
-%post headless-debug
+%post headless-slowdebug
%{post_headless -- %{debug_suffix_unquoted}}
-%postun debug
+%postun slowdebug
%{postun_script -- %{debug_suffix_unquoted}}
-%postun headless-debug
+%postun headless-slowdebug
%{postun_headless -- %{debug_suffix_unquoted}}
-%posttrans debug
+%posttrans slowdebug
%{posttrans_script -- %{debug_suffix_unquoted}}
-%post devel-debug
+%post devel-slowdebug
%{post_devel -- %{debug_suffix_unquoted}}
-%postun devel-debug
+%postun devel-slowdebug
%{postun_devel -- %{debug_suffix_unquoted}}
-%posttrans devel-debug
+%posttrans devel-slowdebug
%{posttrans_devel -- %{debug_suffix_unquoted}}
-%post javadoc-debug
+%post javadoc-slowdebug
%{post_javadoc -- %{debug_suffix_unquoted}}
-%postun javadoc-debug
+%postun javadoc-slowdebug
%{postun_javadoc -- %{debug_suffix_unquoted}}
-%post javadoc-zip-debug
+%post javadoc-zip-slowdebug
%{post_javadoc_zip -- %{debug_suffix_unquoted}}
-%postun javadoc-zip-debug
+%postun javadoc-zip-slowdebug
%{postun_javadoc_zip -- %{debug_suffix_unquoted}}
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files
# main package builds always
%{files_jre %{nil}}
@@ -2192,10 +2335,10 @@ require "copy_jdk_configs.lua"
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files headless
-# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-# all config/norepalce files (and more) have to be declared in pretrans. See pretrans
+# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
+# all config/noreplace files (and more) have to be declared in pretrans. See pretrans
%{files_jre_headless %{nil}}
%files devel
@@ -2210,6 +2353,10 @@ require "copy_jdk_configs.lua"
%files javadoc
%{files_javadoc %{nil}}
+# this puts huge file to /usr/share
+# unluckily ti is really a documentation file
+# and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only
+# same for debug variant
%files javadoc-zip
%{files_javadoc_zip %{nil}}
@@ -2223,39 +2370,43 @@ require "copy_jdk_configs.lua"
%endif
%endif
-%if %{include_debug_build}
-%files debug
+%if %{include_debug_build}
+%files slowdebug
%{files_jre -- %{debug_suffix_unquoted}}
-%files headless-debug
+%files headless-slowdebug
%{files_jre_headless -- %{debug_suffix_unquoted}}
-%files devel-debug
+%files devel-slowdebug
%{files_devel -- %{debug_suffix_unquoted}}
-%files demo-debug -f %{name}-demo.files-debug
+%files demo-slowdebug -f %{name}-demo.files-slowdebug
%{files_demo -- %{debug_suffix_unquoted}}
-%files src-debug
+%files src-slowdebug
%{files_src -- %{debug_suffix_unquoted}}
-%files javadoc-debug
+%files javadoc-slowdebug
%{files_javadoc -- %{debug_suffix_unquoted}}
-%files javadoc-zip-debug
+%files javadoc-zip-slowdebug
%{files_javadoc_zip -- %{debug_suffix_unquoted}}
-%files accessibility-debug
+%files accessibility-slowdebug
%{files_accessibility -- %{debug_suffix_unquoted}}
%if %{with_openjfx_binding}
-%files openjfx-debug -f %{name}-openjfx.files-debug
+%files openjfx-slowdebug -f %{name}-openjfx.files-slowdebug
-%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%files openjfx-devel-slowdebug -f %{name}-openjfx-devel.files-slowdebug
%endif
%endif
%changelog
+* Thu Aug 30 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.181-1.180802
+- update sources to 8u181
+- sync with mainline package
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
diff --git a/java-1.8.0-openjdk-size_t.patch b/java-1.8.0-openjdk-size_t.patch
index c9c6b97..6e0d762 100644
--- a/java-1.8.0-openjdk-size_t.patch
+++ b/java-1.8.0-openjdk-size_t.patch
@@ -1,7 +1,7 @@
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -2659,7 +2659,7 @@ void CFLS_LAB::get_from_global_pool(size
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+@@ -2659,7 +2659,7 @@
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
@@ -10,10 +10,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compact
}
assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -957,7 +957,7 @@ void ConcurrentMarkSweepGeneration::comp
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+@@ -957,7 +957,7 @@
if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size");
@@ -22,7 +22,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: ");
-@@ -6575,7 +6575,7 @@ void CMSCollector::reset(bool asynch) {
+@@ -6577,7 +6577,7 @@
HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
@@ -31,7 +31,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
_markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() &&
-@@ -6873,7 +6873,7 @@ void CMSMarkStack::expand() {
+@@ -6875,7 +6875,7 @@
return;
}
// Double capacity if possible
@@ -40,10 +40,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
// Do not give up existing stack until we have managed to
// get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -3902,7 +3902,7 @@ void CMTask::drain_local_queue(bool part
+diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+@@ -3903,7 +3903,7 @@
// of things to do) or totally (at the very end).
size_t target_size;
if (partially) {
@@ -52,7 +52,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
} else {
target_size = 0;
}
-@@ -4728,7 +4728,7 @@ size_t G1PrintRegionLivenessInfoClosure:
+@@ -4707,7 +4707,7 @@
// The > 0 check is to deal with the prev and next live bytes which
// could be 0.
if (*hum_bytes > 0) {
@@ -61,10 +61,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
*hum_bytes -= bytes;
}
return bytes;
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1726,7 +1726,7 @@ HeapWord* G1CollectedHeap::expand_and_al
+diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+@@ -1726,7 +1726,7 @@
verify_region_sets_optional();
@@ -73,10 +73,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size
ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion",
ergo_format_reason("allocation request failed")
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -38,7 +38,7 @@ G1StringDedupQueue::G1StringDedupQueue()
+diff --git a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+@@ -117,7 +117,7 @@
+ return reserved_size() - committed_size();
+ }
+
+-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
++uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+ return (addr - _low_boundary) / _page_size;
+ }
+
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+@@ -38,7 +38,7 @@
_cancel(false),
_empty(true),
_dropped(0) {
@@ -85,22 +97,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.s
_queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
for (size_t i = 0; i < _nqueues; i++) {
new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -110,7 +110,7 @@ public:
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+@@ -120,7 +120,7 @@
};
- G1StringDedupEntryCache::G1StringDedupEntryCache() {
-- _nlists = MAX2(ParallelGCThreads, (size_t)1);
-+ _nlists = MAX2(ParallelGCThreads, (uintx)1);
- _lists = PaddedArray<G1StringDedupEntryFreeList, mtGC>::create_unfreeable((uint)_nlists);
- }
-
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -109,7 +109,7 @@ void HeapRegion::setup_heap_region_size(
+ G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
+- _nlists(MAX2(ParallelGCThreads, (size_t)1)),
++ _nlists(MAX2(ParallelGCThreads, (uintx)1)),
+ _max_list_length(0),
+ _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
+ _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
+diff --git a/src/share/vm/gc_implementation/g1/heapRegion.cpp b/src/share/vm/gc_implementation/g1/heapRegion.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
+@@ -109,7 +109,7 @@
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
@@ -109,10 +121,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jd
}
int region_size_log = log2_long((jlong) region_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -194,7 +194,7 @@ bool ParScanThreadState::take_from_overf
+diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+@@ -194,7 +194,7 @@
const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4,
@@ -121,10 +133,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow
// stack to our work queue.
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -910,8 +910,8 @@ void PSParallelCompact::initialize_space
+diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+@@ -910,8 +910,8 @@
void PSParallelCompact::initialize_dead_wood_limiter()
{
const size_t max = 100;
@@ -135,10 +147,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallel
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0);
-diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -385,7 +385,7 @@ void TwoGenerationCollectorPolicy::initi
+diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+@@ -385,7 +385,7 @@
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
@@ -147,7 +159,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to
-@@ -433,7 +433,7 @@ void GenCollectorPolicy::initialize_size
+@@ -433,7 +433,7 @@
// yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize.
@@ -156,7 +168,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
}
assert(max_new_size > 0, "All paths should set max_new_size");
-@@ -455,24 +455,23 @@ void GenCollectorPolicy::initialize_size
+@@ -455,24 +455,23 @@
// lower limit.
_min_gen0_size = NewSize;
desired_new_size = NewSize;
@@ -186,7 +198,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
assert(_min_gen0_size > 0, "Sanity check");
_initial_gen0_size = desired_new_size;
-@@ -573,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi
+@@ -573,7 +572,7 @@
} else {
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
@@ -195,10 +207,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
-diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp
---- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1455,7 +1455,7 @@ void MetaspaceGC::initialize() {
+diff --git a/src/share/vm/memory/metaspace.cpp b/src/share/vm/memory/metaspace.cpp
+--- openjdk/hotspot/src/share/vm/memory/metaspace.cpp
++++ openjdk/hotspot/src/share/vm/memory/metaspace.cpp
+@@ -1455,7 +1455,7 @@
void MetaspaceGC::post_initialize() {
// Reset the high-water mark once the VM initialization is done.
@@ -207,7 +219,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
}
bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
-@@ -1515,7 +1515,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1515,7 +1515,7 @@
(size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity,
@@ -216,7 +228,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
-@@ -1573,7 +1573,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1573,7 +1573,7 @@
const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity,
@@ -225,7 +237,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f"
-@@ -3245,7 +3245,7 @@ void Metaspace::global_initialize() {
+@@ -3285,7 +3285,7 @@
// on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
@@ -234,10 +246,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size.
-diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -238,13 +238,13 @@ size_t ThreadLocalAllocBuffer::initial_d
+diff --git a/src/share/vm/memory/threadLocalAllocBuffer.cpp b/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+@@ -238,13 +238,13 @@
size_t init_sz = 0;
if (TLABSize > 0) {
@@ -254,10 +266,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8
init_sz = align_object_size(init_sz);
}
init_sz = MIN2(MAX2(init_sz, min_size()), max_size());
-diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
---- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2015-06-09 10:21:39.000000000 -0400
-@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont
+diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+@@ -48,7 +48,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -266,7 +278,7 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont
+@@ -82,7 +82,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -275,10 +287,10 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp
---- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1277,7 +1277,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1283,7 +1283,7 @@
// NewSize was set on the command line and it is larger than
// preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
@@ -287,7 +299,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
} else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
}
-@@ -1302,8 +1302,8 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1308,8 +1308,8 @@
// Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) {
@@ -298,7 +310,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1313,7 +1313,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1319,7 +1319,7 @@
// so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) {
@@ -307,15 +319,3 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t 2015-06-09 10:35:04.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp 2015-06-09 10:33:21.000000000 -0400
-@@ -117,7 +117,7 @@ size_t G1PageBasedVirtualSpace::uncommit
- return reserved_size() - committed_size();
- }
-
--size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
-+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
- return (addr - _low_boundary) / _page_size;
- }
-
diff --git a/jconsole.desktop.in b/jconsole.desktop.in
index a096349..a8917c1 100644
--- a/jconsole.desktop.in
+++ b/jconsole.desktop.in
@@ -1,10 +1,10 @@
[Desktop Entry]
-Name=OpenJDK 8 Monitoring & Management Console #ARCH#
-Comment=Monitor and manage OpenJDK applications for #ARCH#
-Exec=#JAVA_HOME#/jconsole
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
+Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
+Exec=@JAVA_HOME@/jconsole
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
-Categories=Development;Monitor;Java;
+Categories=Development;Profiling;Java;
Version=1.0
diff --git a/policytool.desktop.in b/policytool.desktop.in
index d38b42d..e05969d 100644
--- a/policytool.desktop.in
+++ b/policytool.desktop.in
@@ -1,8 +1,8 @@
[Desktop Entry]
-Name=OpenJDK 8 Policy Tool #ARCH#
-Comment=Manage OpenJDK policy files #ARCH#
-Exec=#JRE_HOME#/policytool
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Policy Tool #ARCH#
+Comment=Manage OpenJDK @JAVA_MAJOR_VERSION@ policy files #ARCH#
+Exec=@JRE_HOME@/policytool
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-security-tools-PolicyTool
diff --git a/pr3183.patch b/pr3183.patch
new file mode 100644
index 0000000..5a619b4
--- /dev/null
+++ b/pr3183.patch
@@ -0,0 +1,158 @@
+
+# HG changeset patch
+# User andrew
+# Date 1478057514 0
+# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
+# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
+PR3183: Support Fedora/RHEL system crypto policy
+
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
+--- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
+@@ -43,6 +43,9 @@
+ * implementation-specific location, which is typically the properties file
+ * {@code lib/security/java.security} in the Java installation directory.
+ *
++ * <p>Additional default values of security properties are read from a
++ * system-specific location, if available.</p>
++ *
+ * @author Benjamin Renaud
+ */
+
+@@ -52,6 +55,10 @@
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+
++ /* System property file*/
++ private static final String SYSTEM_PROPERTIES =
++ "/etc/crypto-policies/back-ends/java.config";
++
+ /* The java.security properties */
+ private static Properties props;
+
+@@ -93,6 +100,7 @@
+ if (sdebug != null) {
+ sdebug.println("reading security properties file: " +
+ propFile);
++ sdebug.println(props.toString());
+ }
+ } catch (IOException e) {
+ if (sdebug != null) {
+@@ -114,6 +122,31 @@
+ }
+
+ if ("true".equalsIgnoreCase(props.getProperty
++ ("security.useSystemPropertiesFile"))) {
++
++ // now load the system file, if it exists, so its values
++ // will win if they conflict with the earlier values
++ try (BufferedInputStream bis =
++ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
++ props.load(bis);
++ loadedProps = true;
++
++ if (sdebug != null) {
++ sdebug.println("reading system security properties file " +
++ SYSTEM_PROPERTIES);
++ sdebug.println(props.toString());
++ }
++ } catch (IOException e) {
++ if (sdebug != null) {
++ sdebug.println
++ ("unable to load security properties from " +
++ SYSTEM_PROPERTIES);
++ e.printStackTrace();
++ }
++ }
++ }
++
++ if ("true".equalsIgnoreCase(props.getProperty
+ ("security.overridePropertiesFile"))) {
+
+ String extraPropFile = System.getProperty
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
+--- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=true
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
+--- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
+--- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
+@@ -278,6 +278,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
+--- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+
diff --git a/pr3539-rh1548475.patch b/pr3539-rh1548475.patch
new file mode 100644
index 0000000..0bae3de
--- /dev/null
+++ b/pr3539-rh1548475.patch
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User andrew
+# Date 1526065930 -3600
+# Fri May 11 20:12:10 2018 +0100
+# Node ID b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+# Parent afb31413c73cbc06420fdb447aa90a7a38258904
+PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/jsig.make openjdk/hotspot/make/aix/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/aix/makefiles/jsig.make
++++ openjdk/hotspot/make/aix/makefiles/jsig.make
+@@ -45,7 +45,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ LFLAGS_JSIG += $(BIN_UTILS)
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/saproc.make openjdk/hotspot/make/aix/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/aix/makefiles/saproc.make
++++ openjdk/hotspot/make/aix/makefiles/saproc.make
+@@ -66,7 +66,7 @@
+ endif
+
+
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
+ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+diff --git openjdk.orig/hotspot/make/aix/makefiles/vm.make openjdk/hotspot/make/aix/makefiles/vm.make
+--- openjdk.orig/hotspot/make/aix/makefiles/vm.make
++++ openjdk/hotspot/make/aix/makefiles/vm.make
+@@ -117,7 +117,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/jsig.make openjdk/hotspot/make/bsd/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/jsig.make
++++ openjdk/hotspot/make/bsd/makefiles/jsig.make
+@@ -52,7 +52,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/saproc.make openjdk/hotspot/make/bsd/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/saproc.make
++++ openjdk/hotspot/make/bsd/makefiles/saproc.make
+@@ -114,7 +114,7 @@
+ # bring in minimum version argument or we'll fail on OSX 10.10
+ SA_LFLAGS = $(LFLAGS)
+ endif
+-SA_LFLAGS += $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS += $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \
+ -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]")
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/vm.make openjdk/hotspot/make/bsd/makefiles/vm.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/vm.make
++++ openjdk/hotspot/make/bsd/makefiles/vm.make
+@@ -119,7 +119,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -44,7 +44,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -73,7 +73,7 @@
+ else
+ ALT_SAINCDIR=
+ endif
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ SAARCH ?= $(BUILDARCH)
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -130,7 +130,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
diff --git a/pr3559.patch b/pr3559.patch
new file mode 100644
index 0000000..48211dc
--- /dev/null
+++ b/pr3559.patch
@@ -0,0 +1,29 @@
+# HG changeset patch
+# User aph
+# Date 1338206478 14400
+# Mon May 28 08:01:18 2012 -0400
+# Node ID 6275d7b419091092752d5a1854194c98897892ba
+# Parent be1379a186ba527b32c93a83e04c9600735fe44b
+PR3559: Use ldrexd for atomic reads on ARMv7.
+
+2012-05-28 Andrew Haley <aph(a)redhat.com>
+
+ * os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
+ on ARMv7.
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -54,6 +54,12 @@
+ "std %0, 0(%2)\n"
+ : "=r"(tmp)
+ : "a"(src), "a"(dst));
++#elif defined(__ARM_ARCH_7A__)
++ jlong tmp;
++ asm volatile ("ldrexd %0, [%1]\n"
++ : "=r"(tmp)
++ : "r"(src), "m"(src));
++ *(jlong *) dst = tmp;
+ #else
+ *(jlong *) dst = *(jlong *) src;
+ #endif
diff --git a/pr3575-rh1567204.patch b/pr3575-rh1567204.patch
new file mode 100644
index 0000000..ce24c59
--- /dev/null
+++ b/pr3575-rh1567204.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User andrew
+# Date 1525111445 -3600
+# Mon Apr 30 19:04:05 2018 +0100
+# Node ID 388fc8da23044317c160678ffa8ff541c216a255
+# Parent 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+PR3575: System cacerts database handling should not affect jssecacerts
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+@@ -162,7 +162,7 @@
+ * Try:
+ * javax.net.ssl.trustStore (if this variable exists, stop)
+ * jssecacerts
+- * cacerts
++ * cacerts (system and local)
+ *
+ * If none exists, we use an empty keystore.
+ */
+@@ -174,14 +174,14 @@
+ storeFile = new File(storeFileName);
+ fis = getFileInputStream(storeFile);
+ } else {
+- /* Check system cacerts DB first; /etc/pki/java/cacerts */
+- storeFile = new File(sep + "etc" + sep + "pki" + sep
+- + "java" + sep + "cacerts");
++ String javaHome = props.get("javaHome");
++ storeFile = new File(javaHome + sep + "lib" + sep
++ + "security" + sep +
++ "jssecacerts");
+ if ((fis = getFileInputStream(storeFile)) == null) {
+- 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) {
+ storeFile = new File(javaHome + sep + "lib" + sep
+ + "security" + sep +
diff --git a/pr3591.patch b/pr3591.patch
new file mode 100644
index 0000000..e287590
--- /dev/null
+++ b/pr3591.patch
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User andrew
+# Date 1526489197 -3600
+# Wed May 16 17:46:37 2018 +0100
+# Node ID 64e87a408afd2b56d59dad73dee28d4b99463810
+# Parent 00ccc73498628a51a45301322e64ce2ad06e49be
+PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -794,6 +794,8 @@
+ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
+ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ CFLAGS_JDK="${CFLAGS_JDK} ${REALIGN_CFLAG}"
++ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${REALIGN_CFLAG}"
+ AC_SUBST([REALIGN_CFLAG])
+ fi
+
diff --git a/pr3593-s390-size_t_format_flags.patch b/pr3593-s390-size_t_format_flags.patch
new file mode 100644
index 0000000..b9ae9ab
--- /dev/null
+++ b/pr3593-s390-size_t_format_flags.patch
@@ -0,0 +1,143 @@
+diff -r cf43a852f486 src/share/vm/asm/codeBuffer.cpp
+--- openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -977,7 +977,7 @@
+ for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) {
+ CodeSection* sect = code_section(n);
+ if (!sect->is_allocated() || sect->is_empty()) continue;
+- xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>",
++ xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>",
+ n, sect->limit() - sect->start(), sect->limit() - sect->end());
+ }
+ xtty->print_cr("</blob>");
+diff -r cf43a852f486 src/share/vm/code/codeCache.cpp
+--- openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -191,7 +191,7 @@
+ }
+ if (PrintCodeCacheExtension) {
+ ResourceMark rm;
+- tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)",
++ tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)",
+ (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(),
+ (address)_heap->high() - (address)_heap->low_boundary());
+ }
+diff -r cf43a852f486 src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -556,7 +556,7 @@
+ " [Table]\n"
+ " [Memory Usage: "G1_STRDEDUP_BYTES_FORMAT_NS"]\n"
+ " [Size: "SIZE_FORMAT", Min: "SIZE_FORMAT", Max: "SIZE_FORMAT"]\n"
+- " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " UINTX_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
++ " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " SIZE_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
+ " [Resize Count: "UINTX_FORMAT", Shrink Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS"), Grow Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS")]\n"
+ " [Rehash Count: "UINTX_FORMAT", Rehash Threshold: "UINTX_FORMAT", Hash Seed: 0x%x]\n"
+ " [Age Threshold: "UINTX_FORMAT"]",
+diff -r cf43a852f486 src/share/vm/memory/blockOffsetTable.cpp
+--- openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -57,7 +57,7 @@
+ gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: ");
+ gclog_or_tty->print_cr(" "
+ " rs.base(): " INTPTR_FORMAT
+- " rs.size(): " INTPTR_FORMAT
++ " rs.size(): " SIZE_FORMAT
+ " rs end(): " INTPTR_FORMAT,
+ p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size()));
+ gclog_or_tty->print_cr(" "
+diff -r cf43a852f486 src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1285,14 +1285,14 @@
+ }
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
++ tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize);
+ }
+
+ // Code along this path potentially sets NewSize and OldSize
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
+- " initial_heap_size: " SIZE_FORMAT
++ tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT
++ " initial_heap_size: " UINTX_FORMAT
+ " max_heap: " SIZE_FORMAT,
+ min_heap_size(), InitialHeapSize, max_heap);
+ }
+@@ -1308,7 +1308,7 @@
+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t)NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
++ tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize);
+ }
+ }
+ // Unless explicitly requested otherwise, size old gen
+@@ -1318,7 +1318,7 @@
+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
++ tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize);
+ }
+ }
+ }
+@@ -1834,7 +1834,7 @@
+
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
++ tty->print_cr(" Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial);
+ }
+ FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
+ }
+@@ -1844,7 +1844,7 @@
+ set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size());
++ tty->print_cr(" Minimum heap size " UINTX_FORMAT, min_heap_size());
+ }
+ }
+ }
+diff -r cf43a852f486 src/share/vm/utilities/globalDefinitions.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1382,12 +1382,21 @@
+
+ #define INTPTR_FORMAT_W(width) "%" #width PRIxPTR
+
++#if defined(S390) && !defined(_LP64)
++#define SSIZE_FORMAT "%z" PRIdPTR
++#define SIZE_FORMAT "%z" PRIuPTR
++#define SIZE_FORMAT_HEX "0x%z" PRIxPTR
++#define SSIZE_FORMAT_W(width) "%" #width "z" PRIdPTR
++#define SIZE_FORMAT_W(width) "%" #width "z" PRIuPTR
++#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR
++#else // !S390
+ #define SSIZE_FORMAT "%" PRIdPTR
+ #define SIZE_FORMAT "%" PRIuPTR
+ #define SIZE_FORMAT_HEX "0x%" PRIxPTR
+ #define SSIZE_FORMAT_W(width) "%" #width PRIdPTR
+ #define SIZE_FORMAT_W(width) "%" #width PRIuPTR
+ #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR
++#endif // S390
+
+ #define INTX_FORMAT "%" PRIdPTR
+ #define UINTX_FORMAT "%" PRIuPTR
+diff -r 388e9d0905e6 src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Mon Apr 11 11:33:18 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Tue Apr 12 04:12:50 2016 +0100
+@@ -1056,7 +1056,8 @@
+ size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size);
+ assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected));
+ assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,
+- err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize));
++ err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT,
++ expected, NewSize));
+ }
+
+ private:
diff --git a/pr3601.patch b/pr3601.patch
new file mode 100644
index 0000000..d1e9576
--- /dev/null
+++ b/pr3601.patch
@@ -0,0 +1,38 @@
+# HG changeset patch
+# User andrew
+# Date 1529475043 -3600
+# Wed Jun 20 07:10:43 2018 +0100
+# Node ID f6341f4635dacb56678264d29a88cd052b74036b
+# Parent 30520d5018b509b0ae68f5fcc9a5c540e3e5b2de
+PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -835,7 +835,7 @@
+ JVM_ENTRY(jboolean, JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname))
+ JVMWrapper("JVM_KnownToNotExist");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::known_to_not_exist(env, loader, classname, CHECK_(false));
++ return ClassLoaderExt::known_to_not_exist(env, loader, classname, THREAD);
+ #else
+ return false;
+ #endif
+@@ -845,7 +845,7 @@
+ JVM_ENTRY(jobjectArray, JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader))
+ JVMWrapper("JVM_GetResourceLookupCacheURLs");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache_urls(env, loader, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache_urls(env, loader, THREAD);
+ #else
+ return NULL;
+ #endif
+@@ -855,7 +855,7 @@
+ JVM_ENTRY(jintArray, JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name))
+ JVMWrapper("JVM_GetResourceLookupCache");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, THREAD);
+ #else
+ return NULL;
+ #endif
diff --git a/rh1566890_embargoed20180521.patch b/rh1566890_embargoed20180521.patch
new file mode 100644
index 0000000..e29bdb9
--- /dev/null
+++ b/rh1566890_embargoed20180521.patch
@@ -0,0 +1,44 @@
+# ssbd2.patch
+--- ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp~ 2018-05-02 13:02:51.924489199 -0400
++++ ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2018-05-02 13:04:57.274216581 -0400
+@@ -102,6 +102,8 @@
+ # include <inttypes.h>
+ # include <sys/ioctl.h>
+
++#include <sys/prctl.h>
++
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+
+ #ifndef _GNU_SOURCE
+@@ -4892,6 +4894,31 @@
+ }
+ }
+
++/* Per task speculation control */
++#ifndef PR_GET_SPECULATION_CTRL
++#define PR_GET_SPECULATION_CTRL 52
++#endif
++#ifndef PR_SET_SPECULATION_CTRL
++#define PR_SET_SPECULATION_CTRL 53
++#endif
++/* Speculation control variants */
++# undef PR_SPEC_STORE_BYPASS
++# define PR_SPEC_STORE_BYPASS 0
++/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
++# undef PR_SPEC_NOT_AFFECTED
++# undef PR_SPEC_PRCTL
++# undef PR_SPEC_ENABLE
++# undef PR_SPEC_DISABLE
++# define PR_SPEC_NOT_AFFECTED 0
++# define PR_SPEC_PRCTL (1UL << 0)
++# define PR_SPEC_ENABLE (1UL << 1)
++# define PR_SPEC_DISABLE (1UL << 2)
++
++static void set_speculation() __attribute__((constructor));
++static void set_speculation() {
++ prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
++}
++
+ // this is called _before_ the most of global arguments have been parsed
+ void os::init(void) {
+ char dummy; /* used to get a guess on initial stack address */
diff --git a/rhbz1548475-LDFLAGSusage.patch b/rhbz1548475-LDFLAGSusage.patch
deleted file mode 100644
index 243c71b..0000000
--- a/rhbz1548475-LDFLAGSusage.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-# User jvanek
-# https://bugzilla.redhat.com/show_bug.cgi?id=1548475
-# java-1.8.0-openjdk: Partial build flags injection
-# LFLAGS += $(EXTRA_CFLAGS) corrected to LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
---- openjdk/hotspot/make/aix/makefiles/vm.make
-+++ openjdk/hotspot/make/aix/makefiles/vm.make
-@@ -117,7 +117,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/bsd/makefiles/vm.make
-+++ openjdk/hotspot/make/bsd/makefiles/vm.make
-@@ -119,7 +119,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -122,7 +122,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -73,7 +73,7 @@
- else
- ALT_SAINCDIR=
- endif
--SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
-+SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- SAARCH ?= $(BUILDARCH)
-
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -44,7 +44,7 @@ LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
- # cause problems with interposing. See CR: 6466665
- # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
--LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
- ifeq ($(DEBUG_BINARIES), true)
diff --git a/rhbz_1538767_fix_linking.patch b/rhbz_1538767_fix_linking.patch
deleted file mode 100644
index b321611..0000000
--- a/rhbz_1538767_fix_linking.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User sgehwolf
-# Date 1523360781 -7200
-# Tue Apr 10 13:46:21 2018 +0200
-# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
-# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
-8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
-Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
-
-diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
---- a/make/lib/Awt2dLibraries.gmk
-+++ b/make/lib/Awt2dLibraries.gmk
-@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
- BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
- endif
-
-+# LDFLAGS clarification:
-+# Filter relevant linker flags disallowing unresolved symbols as we cannot
-+# build-time decide to which library to link against (libawt_headless or
-+# libawt_xawt). See JDK-8196516 for details.
- $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- LIBRARY := fontmanager, \
- OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
- -DCC_NOEX, \
- MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
-- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
-+ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
-+ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/sources b/sources
index ad9eb3b..9132140 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz) = 30c94eee26b2134cb254786d7d9dcc3ef7a05ec545d60edcda098b77247bc1f276345bde5555b373b58a7b29e66e8f5bb07fd34813460f7a7f07008a611bb43a
+SHA512 (aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz) = dc0def6e3c25653bfcd9a3463c8946cfa7ea60eba86be28a5c372d7a1306f7acfafdf18c110bdc33fff961c9af0d085e65cbcbe5d68d1960b2b10b161d5c970a
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
diff --git a/suse_linuxfilestore.patch b/suse_linuxfilestore.patch
deleted file mode 100644
index 6a9f643..0000000
--- a/suse_linuxfilestore.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
-+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
-@@ -74,8 +74,16 @@
- } catch (UnixException x) {
- x.rethrowAsIOException(parent);
- }
-- if (attrs.dev() != dev())
-- break;
-+ if (attrs.dev() != dev()) {
-+
-+ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
-+ // find the file system even when not in /etc/mtab)
-+ byte[] dir = path.asByteArray();
-+ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
-+ if (Arrays.equals(dir, entry.dir()))
-+ return entry;
-+ }
-+ }
- path = parent;
- parent = parent.getParent();
- }
commit 3fabb2dd19ad3b6fc9191292b1d97dc1e7a66142
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 13 06:03:40 2018 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 573c2a4..503eeca 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -989,7 +989,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
Name: java-%{javaver}-%{origin}-aarch32
Version: %{javaver}.%{updatever}
-Release: 1.%{buildver}%{?dist}
+Release: 2.%{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
@@ -2256,6 +2256,9 @@ require "copy_jdk_configs.lua"
%endif
%changelog
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
* Sun May 27 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.171-1.180511
- update sources to 8u171
- sync with mainline package
5 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.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-aarch32.git/co....
Change:
-%ifarch %{aarch64}
Thanks.
Full change:
============
commit d6f9d063833af31676df653da8f9b24fecfbbd86
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Sep 4 20:15:12 2018 +0000
8u181 update
diff --git a/.gitignore b/.gitignore
index 308ced8..7c80fdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/aarch32-port-jdk8u-jdk8u152-b17-aarch32-171102.tar.xz
/aarch32-port-jdk8u-jdk8u161-b12-aarch32-180220.tar.xz
/aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz
+/aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz
diff --git a/8035496-hotspot.patch b/8035496-hotspot.patch
deleted file mode 100644
index 426bdbe..0000000
--- a/8035496-hotspot.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-# HG changeset patch
-# User bdelsart
-# Date 1508481469 -28800
-# Fri Oct 20 14:37:49 2017 +0800
-# Node ID 111ed1a4719008b83bf427ae16bbeac2a7a516bc
-# Parent 471de666658d7ec14c5d3f97076fb95f70dd6ffa
-8035496: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0
-Summary: release_store used when registering a PerRegionTable. Also reviewed-by: vitalyd(a)gmail.com
-Reviewed-by: jmasa, tschatzl, brutisso
-
-diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-@@ -514,7 +514,15 @@
-
- PerRegionTable* first_prt = _fine_grain_regions[ind];
- prt->set_collision_list_next(first_prt);
-- _fine_grain_regions[ind] = prt;
-+ // The assignment into _fine_grain_regions allows the prt to
-+ // start being used concurrently. In addition to
-+ // collision_list_next which must be visible (else concurrent
-+ // parsing of the list, if any, may fail to see other entries),
-+ // the content of the prt must be visible (else for instance
-+ // some mark bits may not yet seem cleared or a 'later' update
-+ // performed by a concurrent thread could be undone when the
-+ // zeroing becomes visible). This requires store ordering.
-+ OrderAccess::release_store_ptr((volatile PerRegionTable*)&_fine_grain_regions[ind], prt);
- _n_fine_entries++;
-
- if (G1HRRSUseSparseTable) {
diff --git a/8062808-pr3548.patch b/8062808-pr3548.patch
new file mode 100644
index 0000000..e91abd3
--- /dev/null
+++ b/8062808-pr3548.patch
@@ -0,0 +1,191 @@
+# HG changeset patch
+# User stefank
+# Date 1525453613 -3600
+# Fri May 04 18:06:53 2018 +0100
+# Node ID 07a1135a327362f157955d470fad5df07cc35164
+# Parent de79964656fc652f2085dac4fe99bcc128b5a3b1
+8062808, PR3548: Turn on the -Wreturn-type warning
+Reviewed-by: mgerdin, tschatzl, coleenp, jrose, kbarrett
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
++++ openjdk/hotspot/make/linux/makefiles/gcc.make
+@@ -210,7 +210,7 @@
+ WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
+ endif
+
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
++WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wreturn-type
+
+ ifeq ($(USE_CLANG),)
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+diff --git openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+--- openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad
++++ openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+@@ -1250,6 +1250,7 @@
+
+
+ Unimplemented();
++ return 0; // Mute compiler
+ }
+
+ #ifndef PRODUCT
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -541,6 +541,7 @@
+ err.report_and_die();
+
+ ShouldNotReachHere();
++ return true; // Mute compiler
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp
++++ openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+@@ -506,7 +506,7 @@
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+ Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
+@@ -521,7 +521,7 @@
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ }
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp
++++ openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+@@ -249,7 +249,7 @@
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+ // Otherwise, add to symbol to table
+- return the_table()->basic_add(index, (u1*)name, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)name, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup(const Symbol* sym, int begin, int end, TRAPS) {
+@@ -288,7 +288,7 @@
+ // Grab SymbolTable_lock first.
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+- return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup_only(const char* name, int len,
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp
++++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+@@ -229,15 +229,15 @@
+ class_name->as_C_string(),
+ class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string()));
+ if (FieldType::is_array(class_name)) {
+- return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ } else if (FieldType::is_obj(class_name)) {
+ ResourceMark rm(THREAD);
+ // Ignore wrapping L and ;.
+ TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
+ class_name->utf8_length() - 2, CHECK_NULL);
+- return resolve_instance_class_or_null(name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
+ } else {
+- return resolve_instance_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp
++++ openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+@@ -367,7 +367,7 @@
+ _csv_format(csv_format), _print_help(print_help),
+ _print_class_stats(print_class_stats), _columns(columns) {}
+ void heap_inspection(outputStream* st) NOT_SERVICES_RETURN;
+- size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN;
++ size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN_(0);
+ static void find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) NOT_SERVICES_RETURN;
+ private:
+ void iterate_over_heap(KlassInfoTable* cit, BoolObjectClosure* filter = NULL);
+diff --git openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp
++++ openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+@@ -93,7 +93,7 @@
+ static void preload_and_dump(TRAPS) NOT_CDS_RETURN;
+ static int preload_and_dump(const char * class_list_path,
+ GrowableArray<Klass*>* class_promote_order,
+- TRAPS) NOT_CDS_RETURN;
++ TRAPS) NOT_CDS_RETURN_(0);
+
+ static ReservedSpace* shared_rs() {
+ CDS_ONLY(return _shared_rs);
+diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+--- openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp
++++ openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+@@ -352,7 +352,7 @@
+
+ Klass* klass_at(int which, TRAPS) {
+ constantPoolHandle h_this(THREAD, this);
+- return klass_at_impl(h_this, which, CHECK_NULL);
++ return klass_at_impl(h_this, which, THREAD);
+ }
+
+ Symbol* klass_name_at(int which); // Returns the name, w/o resolving.
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -4244,7 +4244,7 @@
+ JVM_DTraceProvider* providers))
+ JVMWrapper("JVM_DTraceActivate");
+ return DTraceJSDT::activate(
+- version, module_name, providers_count, providers, CHECK_0);
++ version, module_name, providers_count, providers, THREAD);
+ JVM_END
+
+ JVM_ENTRY(jboolean,JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method))
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp
++++ openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+@@ -1093,7 +1093,7 @@
+ } else {
+ if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT)
+ narrow((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
+- return box((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
++ return box((jvalue*) result.get_value_addr(), rtype, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+@@ -1046,7 +1046,7 @@
+ // last java frame on stack (which includes native call frames)
+ vframeStream vfst(thread, true); // Do not skip and javaCalls
+
+- return find_callee_info_helper(thread, vfst, bc, callinfo, CHECK_(Handle()));
++ return find_callee_info_helper(thread, vfst, bc, callinfo, THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp openjdk/hotspot/src/share/vm/services/memTracker.hpp
+--- openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp
++++ openjdk/hotspot/src/share/vm/services/memTracker.hpp
+@@ -64,7 +64,7 @@
+ const NativeCallStack& stack, MEMFLAGS flag = mtNone) { }
+ static inline void record_virtual_memory_commit(void* addr, size_t size, const NativeCallStack& stack) { }
+ static inline Tracker get_virtual_memory_uncommit_tracker() { return Tracker(); }
+- static inline Tracker get_virtual_memory_release_tracker() { }
++ static inline Tracker get_virtual_memory_release_tracker() { return Tracker(); }
+ static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) { }
+ static inline void record_thread_stack(void* addr, size_t size) { }
+ static inline void release_thread_stack(void* addr, size_t size) { }
diff --git a/8064786-pr3599.patch b/8064786-pr3599.patch
new file mode 100644
index 0000000..790ee0d
--- /dev/null
+++ b/8064786-pr3599.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User goetz
+# Date 1415873641 -3600
+# Thu Nov 13 11:14:01 2014 +0100
+# Node ID 1878c4c1d04e1f3c6f67a19d36c35863d6b5f906
+# Parent 533473c67de6ff767710594639033c8e83523fe5
+8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Reviewed-by: stefank, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp
+@@ -708,6 +708,7 @@
+
+ THROW_OOP_(JNIHandles::resolve(obj), JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+ #ifndef USDT2
+@@ -734,6 +735,7 @@
+ Handle protection_domain (THREAD, k->protection_domain());
+ THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+
diff --git a/8075942-pr3602-rh1582032.patch b/8075942-pr3602-rh1582032.patch
new file mode 100644
index 0000000..bd2a40e
--- /dev/null
+++ b/8075942-pr3602-rh1582032.patch
@@ -0,0 +1,95 @@
+# HG changeset patch
+# User prr
+# Date 1429299166 25200
+# Fri Apr 17 12:32:46 2015 -0700
+# Node ID 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+# Parent 533117ae5b7587c8d9c0612581682ab984475430
+8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Reviewed-by: flar, lbourges
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+@@ -146,7 +146,7 @@
+ if (dashOn) {
+ if (starting) {
+ firstSegmentsBuffer = Helpers.widenArray(firstSegmentsBuffer,
+- firstSegidx, type - 2);
++ firstSegidx, type - 2 + 1);
+ firstSegmentsBuffer[firstSegidx++] = type;
+ System.arraycopy(pts, off, firstSegmentsBuffer, firstSegidx, type - 2);
+ firstSegidx += type - 2;
+diff --git a/test/javopenjdk.orig/jdk/awt/BasicStroke/DashStrokeTest.java openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2015, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ * @test
++ * @bug 8075942
++ * @summary test there is no exception rendering a dashed stroke
++ * @run DashStrokeTest
++ * @run -Dsun.java2d.renderer=sun.java2d.pisces.PiscesRenderingEngine
++ */
++
++import java.awt.BasicStroke;
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.Stroke;
++import java.awt.geom.GeneralPath;
++import java.awt.image.BufferedImage;
++
++
++public class DashStrokeTest {
++
++ public static void main(String[] args) {
++
++ GeneralPath shape = new GeneralPath();
++ int[] pointTypes = {0, 0, 1, 1, 0, 1, 1, 0};
++ double[] xpoints = {428, 420, 400, 400, 400, 400, 420, 733};
++ double[] ypoints = {180, 180, 180, 160, 30, 10, 10, 10};
++ shape.moveTo(xpoints[0], ypoints[0]);
++ for (int i = 1; i < pointTypes.length; i++) {
++ if (pointTypes[i] == 1 && i < pointTypes.length - 1) {
++ shape.quadTo(xpoints[i], ypoints[i],
++ xpoints[i + 1], ypoints[i + 1]);
++ } else {
++ shape.lineTo(xpoints[i], ypoints[i]);
++ }
++ }
++
++ BufferedImage image = new
++ BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
++ Graphics2D g2 = image.createGraphics();
++
++ Color color = new Color(124, 0, 124, 255);
++ g2.setColor(color);
++ Stroke stroke = new BasicStroke(1.0f,
++ BasicStroke.CAP_BUTT,
++ BasicStroke.JOIN_BEVEL,
++ 10.0f, new float[] {9, 6}, 0.0f);
++ g2.setStroke(stroke);
++ g2.draw(shape);
++ }
++}
diff --git a/8141570-pr3548.patch b/8141570-pr3548.patch
new file mode 100644
index 0000000..f1e3215
--- /dev/null
+++ b/8141570-pr3548.patch
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User coleenp
+# Date 1525713256 -3600
+# Mon May 07 18:14:16 2018 +0100
+# Node ID bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+# Parent 07a1135a327362f157955d470fad5df07cc35164
+8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Summary: change to include atomic.inline.hpp and allocation.inline.hpp only in .cpp files and some build fixes from Kim to build on ubuntu without devkits
+Reviewed-by: kbarrett, sgehwolf, erikj
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -25,8 +25,15 @@
+
+ # Setup common to Zero (non-Shark) and Shark versions of VM
+
+-# override this from the main file because some version of llvm do not like -Wundef
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
++# Some versions of llvm do not like -Wundef
++ifeq ($(USE_CLANG), true)
++ WARNING_FLAGS += -Wno-undef
++endif
++# Suppress some warning flags that are normally turned on for hotspot,
++# because some of the zero code has not been updated accordingly.
++WARNING_FLAGS += -Wno-return-type \
++ -Wno-format-nonliteral -Wno-format-security \
++ -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+@@ -42,5 +49,3 @@
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS += -D_LP64=1
+ endif
+-
+-OPT_CFLAGS/compactingPermGenGen.o = -O1
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp
++++ openjdk/hotspot/src/share/vm/runtime/java.cpp
+@@ -45,6 +45,7 @@
+ #include "runtime/arguments.hpp"
+ #include "runtime/biasedLocking.hpp"
+ #include "runtime/compilationPolicy.hpp"
++#include "runtime/deoptimization.hpp"
+ #include "runtime/fprofiler.hpp"
+ #include "runtime/init.hpp"
+ #include "runtime/interfaceSupport.hpp"
diff --git a/8143245-pr3548.patch b/8143245-pr3548.patch
new file mode 100644
index 0000000..eccb110
--- /dev/null
+++ b/8143245-pr3548.patch
@@ -0,0 +1,154 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1525714161 -3600
+# Mon May 07 18:29:21 2018 +0100
+# Node ID afb31413c73cbc06420fdb447aa90a7a38258904
+# Parent bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+8143245, PR3548: Zero build requires disabled warnings
+Reviewed-by: dholmes, coleenp
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -29,11 +29,6 @@
+ ifeq ($(USE_CLANG), true)
+ WARNING_FLAGS += -Wno-undef
+ endif
+-# Suppress some warning flags that are normally turned on for hotspot,
+-# because some of the zero code has not been updated accordingly.
+-WARNING_FLAGS += -Wno-return-type \
+- -Wno-format-nonliteral -Wno-format-security \
+- -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+@@ -100,7 +100,7 @@
+ case T_DOUBLE:
+ case T_VOID:
+ return result;
+- default : ShouldNotReachHere();
++ default : ShouldNotReachHere(); return NULL_WORD;
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -62,7 +62,7 @@
+ }
+
+ void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
+- ffi_type *ftype;
++ ffi_type *ftype = NULL;
+ switch (type) {
+ case T_VOID:
+ ftype = &ffi_type_void;
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
++ * Copyright 2016 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -61,6 +61,7 @@
+
+ frame os::get_sender_for_C_frame(frame* fr) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warning.
+ }
+
+ frame os::current_frame() {
+@@ -98,16 +99,19 @@
+
+ address os::Linux::ucontext_get_pc(ucontext_t* uc) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
+ intptr_t** ret_sp,
+ intptr_t** ret_fp) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ frame os::fetch_frame_from_context(void* ucVoid) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warnings
+ }
+
+ extern "C" JNIEXPORT int
+@@ -247,11 +251,16 @@
+ }
+ #endif // !PRODUCT
+
+- const char *fmt = "caught unhandled signal %d";
+ char buf[64];
+
+- sprintf(buf, fmt, sig);
++ sprintf(buf, "caught unhandled signal %d", sig);
++
++// Silence -Wformat-security warning for fatal()
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
+ fatal(buf);
++PRAGMA_DIAG_POP
++ return true; // silence compiler warnings
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+@@ -260,6 +269,7 @@
+
+ int os::Linux::get_fpu_control_word() {
+ ShouldNotCallThis();
++ return -1; // silence compile warnings
+ }
+
+ void os::Linux::set_fpu_control_word(int fpu) {
+@@ -408,6 +418,7 @@
+
+ extern "C" {
+ int SpinPause() {
++ return -1; // silence compile warnings
+ }
+
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -110,6 +110,7 @@
+ void* ucontext,
+ bool isInJava) {
+ ShouldNotCallThis();
++ return false; // silence compile warning
+ }
+
+ // These routines are only used on cpu architectures that
diff --git a/8146115-pr3508-rh1463098.patch b/8146115-pr3508-rh1463098.patch
new file mode 100644
index 0000000..a04728b
--- /dev/null
+++ b/8146115-pr3508-rh1463098.patch
@@ -0,0 +1,1494 @@
+# HG changeset patch
+# User poonam
+# Date 1530903013 0
+# Fri Jul 06 18:50:13 2018 +0000
+# Node ID 2f2d2af6fa5c44e67e0a9987f56392315a1e4b64
+# Parent 95b72537801cc9946c27ad27f07e3f0790a21b08
+8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Reviewed-by: bobv, dbuck
+
+diff --git openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+--- openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp
++++ openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+@@ -4008,6 +4008,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
+ assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
+ return online_cpus;
+diff --git openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+--- openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp
++++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+@@ -3770,6 +3770,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ return _processor_count;
+ }
+
+diff --git openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2018, 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
+@@ -49,8 +49,13 @@
+ product(bool, UseSHM, false, \
+ "Use SYSV shared memory for large pages") \
+ \
+- diagnostic(bool, PrintActiveCpus, false, \
+- "Print the number of CPUs detected in os::active_processor_count")
++ product(bool, UseContainerSupport, true, \
++ "Enable detection and runtime container configuration support") \
++ \
++ product(bool, PreferContainerQuotaForCPUCount, true, \
++ "Calculate the container CPU availability based on the value" \
++ " of quotas (if set), when true. Otherwise, use the CPU" \
++ " shares value, provided it is less than quota.")
+
+ //
+ // Defines Linux-specific default values. The flags are available on all
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.cpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+@@ -0,0 +1,680 @@
++/*
++ * Copyright (c) 2017, 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#include <string.h>
++#include <math.h>
++#include <errno.h>
++#include "utilities/globalDefinitions.hpp"
++#include "memory/allocation.hpp"
++#include "runtime/os.hpp"
++#include "osContainer_linux.hpp"
++
++#define PER_CPU_SHARES 1024
++
++bool OSContainer::_is_initialized = false;
++bool OSContainer::_is_containerized = false;
++julong _unlimited_memory;
++
++class CgroupSubsystem: CHeapObj<mtInternal> {
++ friend class OSContainer;
++
++ private:
++ /* mountinfo contents */
++ char *_root;
++ char *_mount_point;
++
++ /* Constructed subsystem directory */
++ char *_path;
++
++ public:
++ CgroupSubsystem(char *root, char *mountpoint) {
++ _root = os::strdup(root);
++ _mount_point = os::strdup(mountpoint);
++ _path = NULL;
++ }
++
++ /*
++ * Set directory to subsystem specific files based
++ * on the contents of the mountinfo and cgroup files.
++ */
++ void set_subsystem_path(char *cgroup_path) {
++ char buf[MAXPATHLEN+1];
++ if (_root != NULL && cgroup_path != NULL) {
++ if (strcmp(_root, "/") == 0) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ if (strcmp(cgroup_path,"/") != 0) {
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path, MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ }
++ _path = os::strdup(buf);
++ } else {
++ if (strcmp(_root, cgroup_path) == 0) {
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ } else {
++ char *p = strstr(_root, cgroup_path);
++ if (p != NULL && p == _root) {
++ if (strlen(cgroup_path) > strlen(_root)) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path + strlen(_root), MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ }
++ }
++ }
++ }
++ }
++ }
++
++ char *subsystem_path() { return _path; }
++};
++
++CgroupSubsystem* memory = NULL;
++CgroupSubsystem* cpuset = NULL;
++CgroupSubsystem* cpu = NULL;
++CgroupSubsystem* cpuacct = NULL;
++
++typedef char * cptr;
++
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
++template <typename T> int subsystem_file_contents(CgroupSubsystem* c,
++ const char *filename,
++ const char *scan_fmt,
++ T returnval) {
++ FILE *fp = NULL;
++ char *p;
++ char file[MAXPATHLEN+1];
++ char buf[MAXPATHLEN+1];
++
++ if (c == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: CgroupSubsytem* is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++ if (c->subsystem_path() == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: subsystem path is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++
++ strncpy(file, c->subsystem_path(), MAXPATHLEN);
++ file[MAXPATHLEN-1] = '\0';
++ int filelen = strlen(file);
++ if ((filelen + strlen(filename)) > (MAXPATHLEN-1)) {
++ if (PrintContainerInfo) {
++ tty->print_cr("File path too long %s, %s", file, filename);
++ }
++ return OSCONTAINER_ERROR;
++ }
++ strncat(file, filename, MAXPATHLEN-filelen);
++ if (PrintContainerInfo) {
++ tty->print_cr("Path to %s is %s", filename, file);
++ }
++ fp = fopen(file, "r");
++ if (fp != NULL) {
++ p = fgets(buf, MAXPATHLEN, fp);
++ if (p != NULL) {
++ int matched = sscanf(p, scan_fmt, returnval);
++ if (matched == 1) {
++ fclose(fp);
++ return 0;
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Type %s not found in file %s", scan_fmt, file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Empty file %s", file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Open of file %s failed, %s", file, strerror(errno));
++ }
++ }
++ if (fp != NULL)
++ fclose(fp);
++ return OSCONTAINER_ERROR;
++}
++PRAGMA_DIAG_POP
++
++#define GET_CONTAINER_INFO(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable) \
++ return_type variable; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ &variable); \
++ if (err != 0) \
++ return (return_type) OSCONTAINER_ERROR; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++#define GET_CONTAINER_INFO_CPTR(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable, bufsize) \
++ char variable[bufsize]; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ variable); \
++ if (err != 0) \
++ return (return_type) NULL; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++/* init
++ *
++ * Initialize the container support and determine if
++ * we are running under cgroup control.
++ */
++void OSContainer::init() {
++ int mountid;
++ int parentid;
++ int major;
++ int minor;
++ FILE *mntinfo = NULL;
++ FILE *cgroup = NULL;
++ char buf[MAXPATHLEN+1];
++ char tmproot[MAXPATHLEN+1];
++ char tmpmount[MAXPATHLEN+1];
++ char tmpbase[MAXPATHLEN+1];
++ char *p;
++ jlong mem_limit;
++
++ assert(!_is_initialized, "Initializing OSContainer more than once");
++
++ _is_initialized = true;
++ _is_containerized = false;
++
++ _unlimited_memory = (LONG_MAX / os::vm_page_size()) * os::vm_page_size();
++
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::init: Initializing Container Support");
++ }
++ if (!UseContainerSupport) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Container Support not enabled");
++ }
++ return;
++ }
++
++ /*
++ * Find the cgroup mount point for memory and cpuset
++ * by reading /proc/self/mountinfo
++ *
++ * Example for docker:
++ * 219 214 0:29 /docker/7208cebd00fa5f2e342b1094f7bed87fa25661471a4637118e65f1c995be8a34 /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,memory
++ *
++ * Example for host:
++ * 34 28 0:29 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,memory
++ */
++ mntinfo = fopen("/proc/self/mountinfo", "r");
++ if (mntinfo == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/mountinfo, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
++ // Look for the filesystem type and see if it's cgroup
++ char fstype[MAXPATHLEN+1];
++ fstype[0] = '\0';
++ char *s = strstr(p, " - ");
++ if (s != NULL &&
++ sscanf(s, " - %s", fstype) == 1 &&
++ strcmp(fstype, "cgroup") == 0) {
++
++ if (strstr(p, "memory") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ memory = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and memory: %s", p);
++ }
++ } else if (strstr(p, "cpuset") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuset = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuset: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu,cpuacct") != NULL || strstr(p, "cpuacct,cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu,cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpuacct") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu: %s", p);
++ }
++ }
++ }
++ }
++ }
++
++ fclose(mntinfo);
++
++ if (memory == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup memory subsystem not found");
++ }
++ return;
++ }
++ if (cpuset == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuset subsystem not found");
++ }
++ return;
++ }
++ if (cpu == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpu subsystem not found");
++ }
++ return;
++ }
++ if (cpuacct == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuacct subsystem not found");
++ }
++ return;
++ }
++
++ /*
++ * Read /proc/self/cgroup and map host mount point to
++ * local one via /proc/self/mountinfo content above
++ *
++ * Docker example:
++ * 5:memory:/docker/6558aed8fc662b194323ceab5b964f69cf36b3e8af877a14b80256e93aecb044
++ *
++ * Host example:
++ * 5:memory:/user.slice
++ *
++ * Construct a path to the process specific memory and cpuset
++ * cgroup directory.
++ *
++ * For a container running under Docker from memory example above
++ * the paths would be:
++ *
++ * /sys/fs/cgroup/memory
++ *
++ * For a Host from memory example above the path would be:
++ *
++ * /sys/fs/cgroup/memory/user.slice
++ *
++ */
++ cgroup = fopen("/proc/self/cgroup", "r");
++ if (cgroup == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/cgroup, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, cgroup)) != NULL) {
++ int cgno;
++ int matched;
++ char *controller;
++ char *base;
++
++ /* Skip cgroup number */
++ strsep(&p, ":");
++ /* Get controller and base */
++ controller = strsep(&p, ":");
++ base = strsep(&p, "\n");
++
++ if (controller != NULL) {
++ if (strstr(controller, "memory") != NULL) {
++ memory->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuset") != NULL) {
++ cpuset->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu,cpuacct") != NULL || strstr(controller, "cpuacct,cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuacct") != NULL) {
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ }
++ }
++ }
++
++ fclose(cgroup);
++
++ // We need to update the amount of physical memory now that
++ // command line arguments have been processed.
++ if ((mem_limit = memory_limit_in_bytes()) > 0) {
++ os::Linux::set_physical_memory(mem_limit);
++ }
++
++ _is_containerized = true;
++
++}
++
++const char * OSContainer::container_type() {
++ if (is_containerized()) {
++ return "cgroupv1";
++ } else {
++ return NULL;
++ }
++}
++
++
++/* memory_limit_in_bytes
++ *
++ * Return the limit of available memory for this process.
++ *
++ * return:
++ * memory limit in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.limit_in_bytes",
++ "Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
++
++ if (memlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ }
++ else {
++ return (jlong)memlimit;
++ }
++}
++
++jlong OSContainer::memory_and_swap_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.memsw.limit_in_bytes",
++ "Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
++ if (memswlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory and Swap Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memswlimit;
++ }
++}
++
++jlong OSContainer::memory_soft_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.soft_limit_in_bytes",
++ "Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
++ if (memsoftlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Soft Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memsoftlimit;
++ }
++}
++
++/* memory_usage_in_bytes
++ *
++ * Return the amount of used memory for this process.
++ *
++ * return:
++ * memory usage in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.usage_in_bytes",
++ "Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memusage);
++ return memusage;
++}
++
++/* memory_max_usage_in_bytes
++ *
++ * Return the maximum amount of used memory for this process.
++ *
++ * return:
++ * max memory usage in bytes or
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_max_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.max_usage_in_bytes",
++ "Maximum Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memmaxusage);
++ return memmaxusage;
++}
++
++/* active_processor_count
++ *
++ * Calculate an appropriate number of active processors for the
++ * VM to use based on these three inputs.
++ *
++ * cpu affinity
++ * cgroup cpu quota & cpu period
++ * cgroup cpu shares
++ *
++ * Algorithm:
++ *
++ * Determine the number of available CPUs from sched_getaffinity
++ *
++ * If user specified a quota (quota != -1), calculate the number of
++ * required CPUs by dividing quota by period.
++ *
++ * If shares are in effect (shares != -1), calculate the number
++ * of CPUs required for the shares by dividing the share value
++ * by PER_CPU_SHARES.
++ *
++ * All results of division are rounded up to the next whole number.
++ *
++ * If neither shares or quotas have been specified, return the
++ * number of active processors in the system.
++ *
++ * If both shares and quotas have been specified, the results are
++ * based on the flag PreferContainerQuotaForCPUCount. If true,
++ * return the quota value. If false return the smallest value
++ * between shares or quotas.
++ *
++ * If shares and/or quotas have been specified, the resulting number
++ * returned will never exceed the number of active processors.
++ *
++ * return:
++ * number of CPUs
++ */
++int OSContainer::active_processor_count() {
++ int quota_count = 0, share_count = 0;
++ int cpu_count, limit_count;
++ int result;
++
++ cpu_count = limit_count = os::Linux::active_processor_count();
++ int quota = cpu_quota();
++ int period = cpu_period();
++ int share = cpu_shares();
++
++ if (quota > -1 && period > 0) {
++ quota_count = ceilf((float)quota / (float)period);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Quota count based on quota/period: %d", quota_count);
++ }
++ }
++ if (share > -1) {
++ share_count = ceilf((float)share / (float)PER_CPU_SHARES);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Share count based on shares: %d", share_count);
++ }
++ }
++
++ // If both shares and quotas are setup results depend
++ // on flag PreferContainerQuotaForCPUCount.
++ // If true, limit CPU count to quota
++ // If false, use minimum of shares and quotas
++ if (quota_count !=0 && share_count != 0) {
++ if (PreferContainerQuotaForCPUCount) {
++ limit_count = quota_count;
++ } else {
++ limit_count = MIN2(quota_count, share_count);
++ }
++ } else if (quota_count != 0) {
++ limit_count = quota_count;
++ } else if (share_count != 0) {
++ limit_count = share_count;
++ }
++
++ result = MIN2(cpu_count, limit_count);
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::active_processor_count: %d", result);
++ }
++ return result;
++}
++
++char * OSContainer::cpu_cpuset_cpus() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.cpus",
++ "cpuset.cpus is: %s", "%1023s", cpus, 1024);
++ return os::strdup(cpus);
++}
++
++char * OSContainer::cpu_cpuset_memory_nodes() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.mems",
++ "cpuset.mems is: %s", "%1023s", mems, 1024);
++ return os::strdup(mems);
++}
++
++/* cpu_quota
++ *
++ * Return the number of milliseconds per period
++ * process is guaranteed to run.
++ *
++ * return:
++ * quota time in milliseconds
++ * -1 for no quota
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_quota() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_quota_us",
++ "CPU Quota is: %d", "%d", quota);
++ return quota;
++}
++
++int OSContainer::cpu_period() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_period_us",
++ "CPU Period is: %d", "%d", period);
++ return period;
++}
++
++/* cpu_shares
++ *
++ * Return the amount of cpu shares available to the process
++ *
++ * return:
++ * Share number (typically a number relative to 1024)
++ * (2048 typically expresses 2 CPUs worth of processing)
++ * -1 for no share setup
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_shares() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.shares",
++ "CPU Shares is: %d", "%d", shares);
++ // Convert 1024 to no shares setup
++ if (shares == 1024) return -1;
++
++ return shares;
++}
++
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.hpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+@@ -0,0 +1,68 @@
++/*
++ * Copyright (c) 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#ifndef OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++#define OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++
++#include "utilities/globalDefinitions.hpp"
++#include "utilities/macros.hpp"
++#include "memory/allocation.hpp"
++
++#define OSCONTAINER_ERROR (-2)
++
++class OSContainer: AllStatic {
++
++ private:
++ static bool _is_initialized;
++ static bool _is_containerized;
++
++ public:
++ static void init();
++ static inline bool is_containerized();
++ static const char * container_type();
++
++ static jlong memory_limit_in_bytes();
++ static jlong memory_and_swap_limit_in_bytes();
++ static jlong memory_soft_limit_in_bytes();
++ static jlong memory_usage_in_bytes();
++ static jlong memory_max_usage_in_bytes();
++
++ static int active_processor_count();
++
++ static char * cpu_cpuset_cpus();
++ static char * cpu_cpuset_memory_nodes();
++
++ static int cpu_quota();
++ static int cpu_period();
++
++ static int cpu_shares();
++
++};
++
++inline bool OSContainer::is_containerized() {
++ assert(_is_initialized, "OSContainer not initialized");
++ return _is_containerized;
++}
++
++#endif // OS_LINUX_VM_OSCONTAINER_LINUX_HPP
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -37,6 +37,7 @@
+ #include "mutex_linux.inline.hpp"
+ #include "oops/oop.inline.hpp"
+ #include "os_share_linux.hpp"
++#include "osContainer_linux.hpp"
+ #include "prims/jniFastGetField.hpp"
+ #include "prims/jvm.h"
+ #include "prims/jvm_misc.hpp"
+@@ -179,13 +180,62 @@
+ julong os::Linux::available_memory() {
+ // values in struct sysinfo are "unsigned long"
+ struct sysinfo si;
++ julong avail_mem;
++
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit, mem_usage;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ if (mem_limit > 0 && (mem_usage = OSContainer::memory_usage_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory usage failed: " JLONG_FORMAT ", using host value", mem_usage);
++ }
++ }
++
++ if (mem_limit > 0 && mem_usage > 0 ) {
++ avail_mem = mem_limit > mem_usage ? (julong)mem_limit - (julong)mem_usage : 0;
++ if (PrintContainerInfo) {
++ tty->print_cr("available container memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
++ }
++ }
++
+ sysinfo(&si);
+-
+- return (julong)si.freeram * si.mem_unit;
++ avail_mem = (julong)si.freeram * si.mem_unit;
++ if (Verbose) {
++ tty->print_cr("available memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
+ }
+
+ julong os::physical_memory() {
+- return Linux::physical_memory();
++ jlong phys_mem = 0;
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) > 0) {
++ if (PrintContainerInfo) {
++ tty->print_cr("total container memory: " JLONG_FORMAT, mem_limit);
++ }
++ return mem_limit;
++ }
++
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ phys_mem = Linux::physical_memory();
++ if (Verbose) {
++ tty->print_cr("total system memory: " JLONG_FORMAT, phys_mem);
++ }
++ return phys_mem;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -2129,6 +2179,8 @@
+ os::Posix::print_load_average(st);
+
+ os::Linux::print_full_memory_info(st);
++
++ os::Linux::print_container_info(st);
+ }
+
+ // Try to identify popular distros.
+@@ -2194,6 +2246,57 @@
+ st->cr();
+ }
+
++void os::Linux::print_container_info(outputStream* st) {
++if (!OSContainer::is_containerized()) {
++ return;
++ }
++
++ st->print("container (cgroup) information:\n");
++
++ const char *p_ct = OSContainer::container_type();
++ st->print("container_type: %s\n", p_ct != NULL ? p_ct : "failed");
++
++ char *p = OSContainer::cpu_cpuset_cpus();
++ st->print("cpu_cpuset_cpus: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ p = OSContainer::cpu_cpuset_memory_nodes();
++ st->print("cpu_memory_nodes: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ int i = OSContainer::active_processor_count();
++ if (i > 0) {
++ st->print("active_processor_count: %d\n", i);
++ } else {
++ st->print("active_processor_count: failed\n");
++ }
++
++ i = OSContainer::cpu_quota();
++ st->print("cpu_quota: %d\n", i);
++
++ i = OSContainer::cpu_period();
++ st->print("cpu_period: %d\n", i);
++
++ i = OSContainer::cpu_shares();
++ st->print("cpu_shares: %d\n", i);
++
++ jlong j = OSContainer::memory_limit_in_bytes();
++ st->print("memory_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_and_swap_limit_in_bytes();
++ st->print("memory_and_swap_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_soft_limit_in_bytes();
++ st->print("memory_soft_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_usage_in_bytes();
++ st->print("memory_usage_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_max_usage_in_bytes();
++ st->print("memory_max_usage_in_bytes: " JLONG_FORMAT "\n", j);
++ st->cr();
++}
++
+ void os::print_memory_info(outputStream* st) {
+
+ st->print("Memory:");
+@@ -4966,6 +5069,10 @@
+ }
+ }
+
++void os::pd_init_container_support() {
++ OSContainer::init();
++}
++
+ // this is called _after_ the global arguments have been parsed
+ jint os::init_2(void)
+ {
+@@ -5146,7 +5253,7 @@
+ // sched_getaffinity gives an accurate answer as it accounts for cpusets.
+ // If anything goes wrong we fallback to returning the number of online
+ // processors - which can be greater than the number available to the process.
+-int os::active_processor_count() {
++int os::Linux::active_processor_count() {
+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
+ int cpus_size = sizeof(cpu_set_t);
+ int cpu_count = 0;
+@@ -5164,10 +5271,48 @@
+ "which may exceed available processors", strerror(errno), cpu_count);
+ }
+
+- assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
++ assert(cpu_count > 0 && cpu_count <= os::processor_count(), "sanity check");
+ return cpu_count;
+ }
+
++// Determine the active processor count from one of
++// three different sources:
++//
++// 1. User option -XX:ActiveProcessorCount
++// 2. kernel os calls (sched_getaffinity or sysconf(_SC_NPROCESSORS_ONLN)
++// 3. extracted from cgroup cpu subsystem (shares and quotas)
++//
++// Option 1, if specified, will always override.
++// If the cgroup subsystem is active and configured, we
++// will return the min of the cgroup and option 2 results.
++// This is required since tools, such as numactl, that
++// alter cpu affinity do not update cgroup subsystem
++// cpuset configuration files.
++int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
++ int active_cpus;
++ if (OSContainer::is_containerized()) {
++ active_cpus = OSContainer::active_processor_count();
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: determined by OSContainer: %d",
++ active_cpus);
++ }
++ } else {
++ active_cpus = os::Linux::active_processor_count();
++ }
++
++ return active_cpus;
++}
++
+ void os::set_native_thread_name(const char *name) {
+ // Not yet implemented.
+ return;
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+@@ -35,6 +35,7 @@
+
+ class Linux {
+ friend class os;
++ friend class OSContainer;
+ friend class TestReserveMemorySpecial;
+
+ // For signal-chaining
+@@ -79,6 +80,9 @@
+
+ static julong available_memory();
+ static julong physical_memory() { return _physical_memory; }
++ static void set_physical_memory(julong phys_mem) { _physical_memory = phys_mem; }
++ static int active_processor_count();
++
+ static void initialize_system_info();
+
+ static int commit_memory_impl(char* addr, size_t bytes, bool exec);
+@@ -116,6 +120,7 @@
+ static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
+
+ static void print_full_memory_info(outputStream* st);
++ static void print_container_info(outputStream* st);
+ static void print_distro_info(outputStream* st);
+ static void print_libversion_info(outputStream* st);
+
+diff --git openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+--- openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+@@ -357,6 +357,16 @@
+ }
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (Verbose) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ pid_t pid = getpid();
+ psetid_t pset = PS_NONE;
+diff --git openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+--- openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp
++++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+@@ -716,6 +716,16 @@
+ #endif
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ DWORD_PTR lpProcessAffinityMask = 0;
+ DWORD_PTR lpSystemAffinityMask = 0;
+ int proc_count = processor_count();
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -1801,20 +1801,34 @@
+ }
+ }
+
++ // Convert Fraction to Precentage values
++ if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MaxRAMFraction))
++ MaxRAMPercentage = 100.0 / MaxRAMFraction;
++
++ if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MinRAMFraction))
++ MinRAMPercentage = 100.0 / MinRAMFraction;
++
++ if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
++ !FLAG_IS_DEFAULT(InitialRAMFraction))
++ InitialRAMPercentage = 100.0 / InitialRAMFraction;
++
+ // If the maximum heap size has not been set with -Xmx,
+ // then set it as fraction of the size of physical memory,
+ // respecting the maximum and minimum sizes of the heap.
+ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- julong reasonable_max = phys_mem / MaxRAMFraction;
+-
+- if (phys_mem <= MaxHeapSize * MinRAMFraction) {
++ julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
++ const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
++ if (reasonable_min < MaxHeapSize) {
+ // Small physical memory, so use a minimum fraction of it for the heap
+- reasonable_max = phys_mem / MinRAMFraction;
++ reasonable_max = reasonable_min;
+ } else {
+ // Not-small physical memory, so require a heap at least
+ // as large as MaxHeapSize
+ reasonable_max = MAX2(reasonable_max, (julong)MaxHeapSize);
+ }
++
+ if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
+ // Limit the heap size to ErgoHeapSizeLimit
+ reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
+@@ -1856,7 +1870,7 @@
+ reasonable_minimum = limit_by_allocatable_memory(reasonable_minimum);
+
+ if (InitialHeapSize == 0) {
+- julong reasonable_initial = phys_mem / InitialRAMFraction;
++ julong reasonable_initial = (julong)((phys_mem * InitialRAMPercentage) / 100);
+
+ reasonable_initial = MAX3(reasonable_initial, reasonable_minimum, (julong)min_heap_size());
+ reasonable_initial = MIN2(reasonable_initial, (julong)MaxHeapSize);
+@@ -1881,6 +1895,94 @@
+ }
+ }
+
++// This option inspects the machine and attempts to set various
++// parameters to be optimal for long-running, memory allocation
++// intensive jobs. It is intended for machines with large
++// amounts of cpu and memory.
++jint Arguments::set_aggressive_heap_flags() {
++ // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
++ // VM, but we may not be able to represent the total physical memory
++ // available (like having 8gb of memory on a box but using a 32bit VM).
++ // Thus, we need to make sure we're using a julong for intermediate
++ // calculations.
++ julong initHeapSize;
++ julong total_memory = os::physical_memory();
++
++ if (total_memory < (julong) 256 * M) {
++ jio_fprintf(defaultStream::error_stream(),
++ "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
++ vm_exit(1);
++ }
++
++ // The heap size is half of available memory, or (at most)
++ // all of possible memory less 160mb (leaving room for the OS
++ // when using ISM). This is the maximum; because adaptive sizing
++ // is turned on below, the actual space used may be smaller.
++
++ initHeapSize = MIN2(total_memory / (julong) 2,
++ total_memory - (julong) 160 * M);
++
++ initHeapSize = limit_by_allocatable_memory(initHeapSize);
++
++ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
++ FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
++ FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
++ // Currently the minimum size and the initial heap sizes are the same.
++ set_min_heap_size(initHeapSize);
++ }
++ if (FLAG_IS_DEFAULT(NewSize)) {
++ // Make the young generation 3/8ths of the total heap.
++ FLAG_SET_CMDLINE(uintx, NewSize,
++ ((julong) MaxHeapSize / (julong) 8) * (julong) 3);
++ FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
++ }
++
++#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
++ FLAG_SET_DEFAULT(UseLargePages, true);
++#endif
++
++ // Increase some data structure sizes for efficiency
++ FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
++ FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
++ FLAG_SET_CMDLINE(uintx, TLABSize, 256 * K);
++
++ // See the OldPLABSize comment below, but replace 'after promotion'
++ // with 'after copying'. YoungPLABSize is the size of the survivor
++ // space per-gc-thread buffers. The default is 4kw.
++ FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256 * K); // Note: this is in words
++
++ // OldPLABSize is the size of the buffers in the old gen that
++ // UseParallelGC uses to promote live data that doesn't fit in the
++ // survivor spaces. At any given time, there's one for each gc thread.
++ // The default size is 1kw. These buffers are rarely used, since the
++ // survivor spaces are usually big enough. For specjbb, however, there
++ // are occasions when there's lots of live data in the young gen
++ // and we end up promoting some of it. We don't have a definite
++ // explanation for why bumping OldPLABSize helps, but the theory
++ // is that a bigger PLAB results in retaining something like the
++ // original allocation order after promotion, which improves mutator
++ // locality. A minor effect may be that larger PLABs reduce the
++ // number of PLAB allocation events during gc. The value of 8kw
++ // was arrived at by experimenting with specjbb.
++ FLAG_SET_CMDLINE(uintx, OldPLABSize, 8 * K); // Note: this is in words
++
++ // Enable parallel GC and adaptive generation sizing
++ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
++
++ // Encourage steady state memory management
++ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
++
++ // This appears to improve mutator locality
++ FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
++
++ // Get around early Solaris scheduling bug
++ // (affinity vs other jobs on system)
++ // but disallow DR and offlining (5008695).
++ FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
++
++ return JNI_OK;
++}
++
+ // This must be called after ergonomics because we want bytecode rewriting
+ // if the server compiler is used, or if UseSharedSpaces is disabled.
+ void Arguments::set_bytecode_flags() {
+@@ -2644,6 +2746,14 @@
+ return result;
+ }
+
++ // We need to ensure processor and memory resources have been properly
++ // configured - which may rely on arguments we just processed - before
++ // doing the final argument processing. Any argument processing that
++ // needs to know about processor and memory resources must occur after
++ // this point.
++
++ os::init_container_support();
++
+ // Do final processing now that all arguments have been parsed
+ result = finalize_vm_init_args(&scp, scp_assembly_required);
+ if (result != JNI_OK) {
+@@ -3117,94 +3227,6 @@
+ _exit_hook = CAST_TO_FN_PTR(exit_hook_t, option->extraInfo);
+ } else if (match_option(option, "abort", &tail)) {
+ _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo);
+- // -XX:+AggressiveHeap
+- } else if (match_option(option, "-XX:+AggressiveHeap", &tail)) {
+-
+- // This option inspects the machine and attempts to set various
+- // parameters to be optimal for long-running, memory allocation
+- // intensive jobs. It is intended for machines with large
+- // amounts of cpu and memory.
+-
+- // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
+- // VM, but we may not be able to represent the total physical memory
+- // available (like having 8gb of memory on a box but using a 32bit VM).
+- // Thus, we need to make sure we're using a julong for intermediate
+- // calculations.
+- julong initHeapSize;
+- julong total_memory = os::physical_memory();
+-
+- if (total_memory < (julong)256*M) {
+- jio_fprintf(defaultStream::error_stream(),
+- "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
+- vm_exit(1);
+- }
+-
+- // The heap size is half of available memory, or (at most)
+- // all of possible memory less 160mb (leaving room for the OS
+- // when using ISM). This is the maximum; because adaptive sizing
+- // is turned on below, the actual space used may be smaller.
+-
+- initHeapSize = MIN2(total_memory / (julong)2,
+- total_memory - (julong)160*M);
+-
+- initHeapSize = limit_by_allocatable_memory(initHeapSize);
+-
+- if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
+- FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
+- // Currently the minimum size and the initial heap sizes are the same.
+- set_min_heap_size(initHeapSize);
+- }
+- if (FLAG_IS_DEFAULT(NewSize)) {
+- // Make the young generation 3/8ths of the total heap.
+- FLAG_SET_CMDLINE(uintx, NewSize,
+- ((julong)MaxHeapSize / (julong)8) * (julong)3);
+- FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
+- }
+-
+-#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
+- FLAG_SET_DEFAULT(UseLargePages, true);
+-#endif
+-
+- // Increase some data structure sizes for efficiency
+- FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
+- FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
+- FLAG_SET_CMDLINE(uintx, TLABSize, 256*K);
+-
+- // See the OldPLABSize comment below, but replace 'after promotion'
+- // with 'after copying'. YoungPLABSize is the size of the survivor
+- // space per-gc-thread buffers. The default is 4kw.
+- FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words
+-
+- // OldPLABSize is the size of the buffers in the old gen that
+- // UseParallelGC uses to promote live data that doesn't fit in the
+- // survivor spaces. At any given time, there's one for each gc thread.
+- // The default size is 1kw. These buffers are rarely used, since the
+- // survivor spaces are usually big enough. For specjbb, however, there
+- // are occasions when there's lots of live data in the young gen
+- // and we end up promoting some of it. We don't have a definite
+- // explanation for why bumping OldPLABSize helps, but the theory
+- // is that a bigger PLAB results in retaining something like the
+- // original allocation order after promotion, which improves mutator
+- // locality. A minor effect may be that larger PLABs reduce the
+- // number of PLAB allocation events during gc. The value of 8kw
+- // was arrived at by experimenting with specjbb.
+- FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words
+-
+- // Enable parallel GC and adaptive generation sizing
+- FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+-
+- // Encourage steady state memory management
+- FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+-
+- // This appears to improve mutator locality
+- FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
+-
+- // Get around early Solaris scheduling bug
+- // (affinity vs other jobs on system)
+- // but disallow DR and offlining (5008695).
+- FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
+-
+ } else if (match_option(option, "-XX:+NeverTenure", &tail)) {
+ // The last option must always win.
+ FLAG_SET_CMDLINE(bool, AlwaysTenure, false);
+@@ -3605,6 +3627,15 @@
+ return JNI_ERR;
+ }
+
++ // This must be done after all arguments have been processed
++ // and the container support has been initialized since AggressiveHeap
++ // relies on the amount of total memory available.
++ if (AggressiveHeap) {
++ jint result = set_aggressive_heap_flags();
++ if (result != JNI_OK) {
++ return result;
++ }
++ }
+ // This must be done after all arguments have been processed.
+ // java_compiler() true means set to "NONE" or empty.
+ if (java_compiler() && !xdebug_mode()) {
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -365,6 +365,8 @@
+ // Aggressive optimization flags.
+ static void set_aggressive_opts_flags();
+
++ static jint set_aggressive_heap_flags();
++
+ // Argument parsing
+ static void do_pd_flag_adjustments();
+ static bool parse_argument(const char* arg, Flag::Flags origin);
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
+@@ -2076,13 +2076,23 @@
+ product_pd(uint64_t, MaxRAM, \
+ "Real memory size (in bytes) used to set maximum heap size") \
+ \
++ product(bool, AggressiveHeap, false, \
++ "Optimize heap options for long-running memory intensive apps") \
++ \
+ product(uintx, ErgoHeapSizeLimit, 0, \
+ "Maximum ergonomically set heap size (in bytes); zero means use " \
+- "MaxRAM / MaxRAMFraction") \
++ "MaxRAM * MaxRAMPercentage / 100") \
+ \
+ experimental(bool, UseCGroupMemoryLimitForHeap, false, \
+ "Use CGroup memory limit as physical memory limit for heap " \
+- "sizing") \
++ "sizing" \
++ "Deprecated, replaced by container support") \
++ \
++ diagnostic(bool, PrintContainerInfo, false, \
++ "Print container related information") \
++ \
++ diagnostic(bool, PrintActiveCpus, false, \
++ "Print the number of CPUs detected in os::active_processor_count") \
+ \
+ product(uintx, MaxRAMFraction, 4, \
+ "Maximum fraction (1/n) of real memory used for maximum heap " \
+@@ -2099,6 +2109,19 @@
+ product(uintx, InitialRAMFraction, 64, \
+ "Fraction (1/n) of real memory used for initial heap size") \
+ \
++ product(double, MaxRAMPercentage, 25.0, \
++ "Maximum percentage of real memory used for maximum heap size") \
++ \
++ product(double, MinRAMPercentage, 50.0, \
++ "Minimum percentage of real memory used for maximum heap" \
++ "size on systems with small physical memory size") \
++ \
++ product(double, InitialRAMPercentage, 1.5625, \
++ "Percentage of real memory used for initial heap size") \
++ \
++ product(intx, ActiveProcessorCount, -1, \
++ "Specify the CPU count the VM should use and report as active") \
++ \
+ develop(uintx, MaxVirtMemFraction, 2, \
+ "Maximum fraction (1/n) of virtual memory used for ergonomically "\
+ "determining maximum heap size") \
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp
++++ openjdk/hotspot/src/share/vm/runtime/os.hpp
+@@ -152,8 +152,16 @@
+ static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned);
+
+ static void initialize_initial_active_processor_count();
++
++ LINUX_ONLY(static void pd_init_container_support();)
++
+ public:
+ static void init(void); // Called before command line parsing
++
++ static void init_container_support() { // Called during command line parsing.
++ LINUX_ONLY(pd_init_container_support();)
++ }
++
+ static void init_before_ergo(void); // Called after command line parsing
+ // before VM ergonomics processing.
+ static jint init_2(void); // Called after command line parsing
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp openjdk/hotspot/src/share/vm/runtime/thread.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp
++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp
+@@ -3332,6 +3332,7 @@
+ Arguments::init_version_specific_system_properties();
+
+ // Parse arguments
++ // Note: this internally calls os::init_container_support()
+ jint parse_result = Arguments::parse(args);
+ if (parse_result != JNI_OK) return parse_result;
+
diff --git a/8165489-pr3589.patch b/8165489-pr3589.patch
new file mode 100644
index 0000000..1674dec
--- /dev/null
+++ b/8165489-pr3589.patch
@@ -0,0 +1,123 @@
+# HG changeset patch
+# User mdoerr
+# Date 1473159687 -7200
+# Tue Sep 06 13:01:27 2016 +0200
+# Node ID 7f6e1069a5719c8908b53774d3560ce851c7cd70
+# Parent b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Summary: Add missing barrier, sharing code with Unsafe_GetObject.
+Reviewed-by: kbarrett, mgerdin, pliden, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+@@ -199,37 +199,40 @@
+
+ // Get/SetObject must be special-cased, since it works with handles.
+
++// We could be accessing the referent field in a reference
++// object. If G1 is enabled then we need to register non-null
++// referent with the SATB barrier.
++
++#if INCLUDE_ALL_GCS
++static bool is_java_lang_ref_Reference_access(oop o, jlong offset) {
++ if (offset == java_lang_ref_Reference::referent_offset && o != NULL) {
++ Klass* k = o->klass();
++ if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
++ assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
++ return true;
++ }
++ }
++ return false;
++}
++#endif
++
++static void ensure_satb_referent_alive(oop o, jlong offset, oop v) {
++#if INCLUDE_ALL_GCS
++ if (UseG1GC && v != NULL && is_java_lang_ref_Reference_access(o, offset)) {
++ G1SATBCardTableModRefBS::enqueue(v);
++ }
++#endif
++}
++
+ // The xxx140 variants for backward compatibility do not allow a full-width offset.
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ if (obj == NULL) THROW_0(vmSymbols::java_lang_NullPointerException());
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register a non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset) {
+- oop o = JNIHandles::resolve_non_null(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset, jobject x_h))
+@@ -262,32 +265,10 @@
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) {
+- oop o = JNIHandles::resolve(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject x_h))
+@@ -312,6 +293,9 @@
+ } else {
+ (void)const_cast<oop&>(v = *(volatile oop*) addr);
+ }
++
++ ensure_satb_referent_alive(p, offset, v);
++
+ OrderAccess::acquire();
+ return JNIHandles::make_local(env, v);
+ UNSAFE_END
diff --git a/8165852-pr3468.patch b/8165852-pr3468.patch
new file mode 100644
index 0000000..6a9f643
--- /dev/null
+++ b/8165852-pr3468.patch
@@ -0,0 +1,21 @@
+--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
+@@ -74,8 +74,16 @@
+ } catch (UnixException x) {
+ x.rethrowAsIOException(parent);
+ }
+- if (attrs.dev() != dev())
+- break;
++ if (attrs.dev() != dev()) {
++
++ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
++ // find the file system even when not in /etc/mtab)
++ byte[] dir = path.asByteArray();
++ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
++ if (Arrays.equals(dir, entry.dir()))
++ return entry;
++ }
++ }
+ path = parent;
+ parent = parent.getParent();
+ }
diff --git a/8171000-pr3542-rh1402819.patch b/8171000-pr3542-rh1402819.patch
new file mode 100644
index 0000000..d831aa9
--- /dev/null
+++ b/8171000-pr3542-rh1402819.patch
@@ -0,0 +1,121 @@
+# HG changeset patch
+# User kaddepalli
+# Date 1517818481 -19800
+# Mon Feb 05 13:44:41 2018 +0530
+# Node ID b77308735540644d4710244e3c88865067f2905a
+# Parent 39bfc94b1f4265b645c2970a58389acc779dafe9
+8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Reviewed-by: serb, mhalder
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -394,77 +394,48 @@
+ XRectangle bbox; /* bounding box of grabbed area */
+ list_ptr regions;/* list of regions to read from */
+ {
+- image_region_type *reg;
+- int32_t dst_x, dst_y; /* where in pixmap to write (UL) */
+- int32_t diff;
+-
+- XImage *reg_image,*ximage ;
+- int32_t srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+- int32_t rem ;
+- int32_t bytes_per_line;
+- int32_t bitmap_unit;
+-
+- bitmap_unit = sizeof (long);
+- if (format == ZPixmap)
+- bytes_per_line = width*depth/8;
+- else
+- bytes_per_line = width/8;
+-
+-
+- /* Find out how many more bytes are required for padding so that
+- ** bytes per scan line will be multiples of bitmap_unit bits */
+- if (format == ZPixmap) {
+- rem = (bytes_per_line*8)%bitmap_unit;
+- if (rem)
+- bytes_per_line += (rem/8 + 1);
+- }
++ XImage *ximage ;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+
+- bytes_per_line = ximage->bytes_per_line;
+-
+- if (format == ZPixmap)
+- ximage->data = malloc(height*bytes_per_line);
+- else
+- ximage->data = malloc(height*bytes_per_line*depth);
+-
++ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (reg = (image_region_type *) first_in_list( regions); reg;
++ for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+- int32_t rect;
+- struct my_XRegion *vis_reg;
+- vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (rect = 0;
+- rect < vis_reg->numRects;
+- rect++)
++ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
++ for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
+ {
+- /** ------------------------------------------------------------------------
+- Intersect bbox with visible part of region giving src rect & output
+- location. Width is the min right side minus the max left side.
+- Similar for height. Offset src rect so x,y are relative to
+- origin of win, not the root-relative visible rect of win.
+- ------------------------------------------------------------------------ **/
+- srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
+- - MAX( vis_reg->rects[rect].x1, bbox.x);
++ /** ------------------------------------------------------------------------
++ Intersect bbox with visible part of region giving src rect & output
++ location. Width is the min right side minus the max left side.
++ Similar for height. Offset src rect so x,y are relative to
++ origin of win, not the root-relative visible rect of win.
++ ------------------------------------------------------------------------ **/
++ int32_t srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
++ - MAX( vis_reg->rects[rect].x1, bbox.x);
++
++ int32_t srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
++ - MAX( vis_reg->rects[rect].y1, bbox.y);
+
+- srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
+- - MAX( vis_reg->rects[rect].y1, bbox.y);
++ int32_t diff = bbox.x - vis_reg->rects[rect].x1;
++ int32_t srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
++ int32_t dst_x = MAX( 0, -diff) ;
+
+- diff = bbox.x - vis_reg->rects[rect].x1;
+- srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
+- dst_x = MAX( 0, -diff) ;
+- diff = bbox.y - vis_reg->rects[rect].y1;
+- srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
+- dst_y = MAX( 0, -diff) ;
+- reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
+- (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
+- TransferImage(disp,reg_image,srcRect_width,
+- srcRect_height,reg,ximage,dst_x,dst_y) ;
+- XDestroyImage(reg_image);
+- }
++ diff = bbox.y - vis_reg->rects[rect].y1;
++ int32_t srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
++ int32_t dst_y = MAX( 0, -diff) ;
++ XImage* reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
++ (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
++
++ if (reg_image) {
++ TransferImage(disp,reg_image,srcRect_width,
++ srcRect_height,reg,ximage,dst_x,dst_y) ;
++ XDestroyImage(reg_image);
++ }
++ }
+ }
+ return ximage ;
+ }
diff --git a/8184309-pr3596.patch b/8184309-pr3596.patch
new file mode 100644
index 0000000..00b6125
--- /dev/null
+++ b/8184309-pr3596.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User ysuenaga
+# Date 1527498573 -3600
+# Mon May 28 10:09:33 2018 +0100
+# Node ID ef176cb429c49d1c330d9575938f66b04e3fb730
+# Parent 6915dc9ae18cce5625d3a3fc74b37da70a5b4215
+8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Reviewed-by: kbarrett, vlivanov
+
+diff --git openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp openjdk/hotspot/src/share/vm/code/dependencies.cpp
+--- openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp
++++ openjdk/hotspot/src/share/vm/code/dependencies.cpp
+@@ -525,7 +525,7 @@
+ xtty->object("x", arg.metadata_value());
+ }
+ } else {
+- char xn[10]; sprintf(xn, "x%d", j);
++ char xn[12]; sprintf(xn, "x%d", j);
+ if (arg.is_oop()) {
+ xtty->object(xn, arg.oop_value());
+ } else {
diff --git a/8185723-pr3553.patch b/8185723-pr3553.patch
new file mode 100644
index 0000000..f8ee50a
--- /dev/null
+++ b/8185723-pr3553.patch
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User aph
+# Date 1501690960 -3600
+# Wed Aug 02 17:22:40 2017 +0100
+# Node ID 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+# Parent 4e2adbc3d2b512f6b2bf318d2db60f4d1903f8c7
+8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Reviewed-by: roland
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -38,10 +38,10 @@
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+ #if defined(PPC32)
+ double tmp;
+- asm volatile ("lfd %0, 0(%1)\n"
+- "stfd %0, 0(%2)\n"
+- : "=f"(tmp)
+- : "b"(src), "b"(dst));
++ asm volatile ("lfd %0, %2\n"
++ "stfd %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8186461-pr3557.patch b/8186461-pr3557.patch
new file mode 100644
index 0000000..cc8020c
--- /dev/null
+++ b/8186461-pr3557.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User glaubitz
+# Date 1524889690 -3600
+# Sat Apr 28 05:28:10 2018 +0100
+# Node ID be1379a186ba527b32c93a83e04c9600735fe44b
+# Parent 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -36,12 +36,18 @@
+
+ // Atomically copy 64 bits of data
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+-#if defined(PPC32)
++#if defined(PPC32) && !defined(__SPE__)
+ double tmp;
+ asm volatile ("lfd %0, %2\n"
+ "stfd %0, %1\n"
+ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
+ : "Q"(*(volatile double*)src));
++#elif defined(PPC32) && defined(__SPE__)
++ long tmp;
++ asm volatile ("evldd %0, %2\n"
++ "evstdd %0, %1\n"
++ : "=&r"(tmp), "=Q"(*(volatile long*)dst)
++ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8196516-pr3523-rh1538767.patch b/8196516-pr3523-rh1538767.patch
new file mode 100644
index 0000000..b321611
--- /dev/null
+++ b/8196516-pr3523-rh1538767.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1523360781 -7200
+# Tue Apr 10 13:46:21 2018 +0200
+# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
+# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
+8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
+Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
+
+diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
+--- a/make/lib/Awt2dLibraries.gmk
++++ b/make/lib/Awt2dLibraries.gmk
+@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+ BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
+ endif
+
++# LDFLAGS clarification:
++# Filter relevant linker flags disallowing unresolved symbols as we cannot
++# build-time decide to which library to link against (libawt_headless or
++# libawt_xawt). See JDK-8196516 for details.
+ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ LIBRARY := fontmanager, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
+ -DCC_NOEX, \
+ MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
+- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
++ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
++ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/8197429-pr3456-rh1536622.patch b/8197429-pr3456-rh1536622.patch
deleted file mode 100644
index fc60cd3..0000000
--- a/8197429-pr3456-rh1536622.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -674,6 +674,10 @@
- }
- }
-
-+void os::Linux::expand_stack_to(address bottom) {
-+ _expand_stack_to(bottom);
-+}
-+
- bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
- assert(t!=NULL, "just checking");
- assert(t->osthread()->expanding_stack(), "expand should be set");
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -245,6 +245,8 @@
- static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
-
- private:
-+ static void expand_stack_to(address bottom);
-+
- 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);
-diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -892,6 +892,25 @@
- void os::workaround_expand_exec_shield_cs_limit() {
- #if defined(IA32)
- size_t page_size = os::vm_page_size();
-+
-+ /*
-+ * JDK-8197429
-+ *
-+ * Expand the stack mapping to the end of the initial stack before
-+ * attempting to install the codebuf. This is needed because newer
-+ * Linux kernels impose a distance of a megabyte between stack
-+ * memory and other memory regions. If we try to install the
-+ * codebuf before expanding the stack the installation will appear
-+ * to succeed but we'll get a segfault later if we expand the stack
-+ * in Java code.
-+ *
-+ */
-+ if (os::Linux::is_initial_thread()) {
-+ address limit = Linux::initial_thread_stack_bottom();
-+ limit += (StackYellowPages + StackRedPages) * page_size;
-+ os::Linux::expand_stack_to(limit);
-+ }
-+
- /*
- * Take the highest VA the OS will give us and exec
- *
-@@ -910,6 +929,16 @@
- char* hint = (char*) (Linux::initial_thread_stack_bottom() -
- ((StackYellowPages + StackRedPages + 1) * page_size));
- char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+
-+ if (codebuf == NULL) {
-+ // JDK-8197429: There may be a stack gap of one megabyte between
-+ // the limit of the stack and the nearest memory region: this is a
-+ // Linux kernel workaround for CVE-2017-1000364. If we failed to
-+ // map our codebuf, try again at an address one megabyte lower.
-+ hint -= 1 * M;
-+ codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+ }
-+
- if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
- return; // No matter, we tried, best effort.
- }
diff --git a/8197429-pr3546-rh1536622.patch b/8197429-pr3546-rh1536622.patch
new file mode 100644
index 0000000..fc60cd3
--- /dev/null
+++ b/8197429-pr3546-rh1536622.patch
@@ -0,0 +1,93 @@
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -674,6 +674,10 @@
+ }
+ }
+
++void os::Linux::expand_stack_to(address bottom) {
++ _expand_stack_to(bottom);
++}
++
+ bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
+ assert(t!=NULL, "just checking");
+ assert(t->osthread()->expanding_stack(), "expand should be set");
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -245,6 +245,8 @@
+ static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
+
+ private:
++ static void expand_stack_to(address bottom);
++
+ 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);
+diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -892,6 +892,25 @@
+ void os::workaround_expand_exec_shield_cs_limit() {
+ #if defined(IA32)
+ size_t page_size = os::vm_page_size();
++
++ /*
++ * JDK-8197429
++ *
++ * Expand the stack mapping to the end of the initial stack before
++ * attempting to install the codebuf. This is needed because newer
++ * Linux kernels impose a distance of a megabyte between stack
++ * memory and other memory regions. If we try to install the
++ * codebuf before expanding the stack the installation will appear
++ * to succeed but we'll get a segfault later if we expand the stack
++ * in Java code.
++ *
++ */
++ if (os::Linux::is_initial_thread()) {
++ address limit = Linux::initial_thread_stack_bottom();
++ limit += (StackYellowPages + StackRedPages) * page_size;
++ os::Linux::expand_stack_to(limit);
++ }
++
+ /*
+ * Take the highest VA the OS will give us and exec
+ *
+@@ -910,6 +929,16 @@
+ char* hint = (char*) (Linux::initial_thread_stack_bottom() -
+ ((StackYellowPages + StackRedPages + 1) * page_size));
+ char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
++
++ if (codebuf == NULL) {
++ // JDK-8197429: There may be a stack gap of one megabyte between
++ // the limit of the stack and the nearest memory region: this is a
++ // Linux kernel workaround for CVE-2017-1000364. If we failed to
++ // map our codebuf, try again at an address one megabyte lower.
++ hint -= 1 * M;
++ codebuf = os::attempt_reserve_memory_at(page_size, hint);
++ }
++
+ if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
+ return; // No matter, we tried, best effort.
+ }
diff --git a/8197546-pr3542-rh1402819.patch b/8197546-pr3542-rh1402819.patch
new file mode 100644
index 0000000..ba712ad
--- /dev/null
+++ b/8197546-pr3542-rh1402819.patch
@@ -0,0 +1,35 @@
+# HG changeset patch
+# User prr
+# Date 1518454604 28800
+# Mon Feb 12 08:56:44 2018 -0800
+# Node ID 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+# Parent b77308735540644d4710244e3c88865067f2905a
+8197546: Fix for 8171000 breaks Solaris + Linux builds
+Reviewed-by: serb, jdv
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -395,6 +395,8 @@
+ list_ptr regions;/* list of regions to read from */
+ {
+ XImage *ximage ;
++ image_region_type* reg;
++ int32_t rect;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+@@ -402,11 +404,11 @@
+ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
++ for (reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
++ for (rect = 0; rect < vis_reg->numRects; rect++)
+ {
+ /** ------------------------------------------------------------------------
+ Intersect bbox with visible part of region giving src rect & output
diff --git a/8197981-pr3548.patch b/8197981-pr3548.patch
new file mode 100644
index 0000000..5f6d9ce
--- /dev/null
+++ b/8197981-pr3548.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User andrew
+# Date 1518667645 0
+# Thu Feb 15 04:07:25 2018 +0000
+# Node ID 1d35411eb7bdf16191e220ffe3b1dc4d5d0c6041
+# Parent 999983606f5c61b093c6f6316a7b26c4cd4ca79e
+8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Summary: Fix issue discovered by -Wreturn-type on systems without LP64.
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
++++ openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+@@ -457,6 +457,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -498,6 +498,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
diff --git a/8199936-pr3533-workaround.patch b/8199936-pr3533-workaround.patch
new file mode 100644
index 0000000..900e0c3
--- /dev/null
+++ b/8199936-pr3533-workaround.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User andrew
+# Date 1526122977 -3600
+# Sat May 12 12:02:57 2018 +0100
+# Node ID 00ccc73498628a51a45301322e64ce2ad06e49be
+# Parent aecf9f48f7b5c6148b62713a6b746301435b57cc
+PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations
+Summary: Enable -mstackrealign on x86 Linux as well as x86 Mac OS X
+
+diff --git openjdk.orig///common/autoconf/hotspot-spec.gmk.in openjdk///common/autoconf/hotspot-spec.gmk.in
+--- openjdk.orig///common/autoconf/hotspot-spec.gmk.in
++++ openjdk///common/autoconf/hotspot-spec.gmk.in
+@@ -110,7 +110,8 @@
+ RC:=@HOTSPOT_RC@
+
+ EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \
+- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \
++ $(REALIGN_CFLAG)
+ EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
+ EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
+
+diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in
+--- openjdk.orig///common/autoconf/spec.gmk.in
++++ openjdk///common/autoconf/spec.gmk.in
+@@ -333,6 +333,7 @@
+
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@
+ NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@
++REALIGN_CFLAG=@REALIGN_CFLAG@
+ CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+
+ CXX:=@FIXPATH@ @CCACHE@ @CXX@
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -796,20 +796,16 @@
+ #
+ # NOTE: check for -mstackrealign needs to be below potential addition of -m32
+ #
+- if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
++ if test "x$OPENJDK_TARGET_CPU" = xx86 && test "x$OPENJDK_TARGET_OS" = xmacosx -o \
++ "x$OPENJDK_TARGET_OS" = xlinux; then
+ # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
+- # While waiting for a better solution, the current workaround is to use -mstackrealign.
+- CFLAGS="$CFLAGS -mstackrealign"
+- AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
+- AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
+- [
+- AC_MSG_RESULT([yes])
+- ],
+- [
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+- ]
++ # While waiting for a better solution, the current workaround is to use -mstackrealign
++ # This is also required on Linux systems which use libraries compiled with SSE instructions
++ REALIGN_CFLAG="-mstackrealign"
++ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
++ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ AC_SUBST([REALIGN_CFLAG])
+ fi
+
+ C_FLAG_DEPS="-MMD -MF"
diff --git a/8201509-pr3579.patch b/8201509-pr3579.patch
new file mode 100644
index 0000000..132c225
--- /dev/null
+++ b/8201509-pr3579.patch
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User mbalao
+# Date 1525317412 -3600
+# Thu May 03 04:16:52 2018 +0100
+# Node ID de79964656fc652f2085dac4fe99bcc128b5a3b1
+# Parent ffd5260fe5adcb26f87a14f1aaaf3e1a075d712a
+8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Summary: The inline assembler for the S390 (S390 and not _LP64) has src and dst reversed thereby corrupting data
+Reviewed-by: shade
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2010 Red Hat, Inc.
++ * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -50,10 +50,10 @@
+ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+- asm volatile ("ld %0, 0(%1)\n"
+- "std %0, 0(%2)\n"
+- : "=r"(tmp)
+- : "a"(src), "a"(dst));
++ asm volatile ("ld %0, %2\n"
++ "std %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(__ARM_ARCH_7A__)
+ jlong tmp;
+ asm volatile ("ldrexd %0, [%1]\n"
diff --git a/8203182-pr3603-rh1568033.patch b/8203182-pr3603-rh1568033.patch
new file mode 100644
index 0000000..031a60c
--- /dev/null
+++ b/8203182-pr3603-rh1568033.patch
@@ -0,0 +1,131 @@
+# HG changeset patch
+# User igerasim
+# Date 1528992969 25200
+# Thu Jun 14 09:16:09 2018 -0700
+# Node ID d9b0b4bd2526818afa73b60da77403245554caa8
+# Parent 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Summary: Ensure session is properly released in P11Signature class
+Reviewed-by: valeriep
+Contributed-by: Martin Balao <mbalao(a)redhat.com>
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+@@ -309,47 +309,51 @@
+ session = token.killSession(session);
+ return;
+ }
+- // "cancel" operation by finishing it
+- // XXX make sure all this always works correctly
+- if (mode == M_SIGN) {
+- try {
+- if (type == T_UPDATE) {
+- token.p11.C_SignFinal(session.id(), 0);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
++ try {
++ // "cancel" operation by finishing it
++ // XXX make sure all this always works correctly
++ if (mode == M_SIGN) {
++ try {
++ if (type == T_UPDATE) {
++ token.p11.C_SignFinal(session.id(), 0);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Sign(session.id(), digest);
+ }
+- token.p11.C_Sign(session.id(), digest);
++ } catch (PKCS11Exception e) {
++ throw new ProviderException("cancel failed", e);
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
++ } else { // M_VERIFY
++ try {
++ byte[] signature;
++ if (keyAlgorithm.equals("DSA")) {
++ signature = new byte[40];
++ } else {
++ signature = new byte[(p11Key.length() + 7) >> 3];
++ }
++ if (type == T_UPDATE) {
++ token.p11.C_VerifyFinal(session.id(), signature);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Verify(session.id(), digest, signature);
++ }
++ } catch (PKCS11Exception e) {
++ // will fail since the signature is incorrect
++ // XXX check error code
++ }
+ }
+- } else { // M_VERIFY
+- try {
+- byte[] signature;
+- if (keyAlgorithm.equals("DSA")) {
+- signature = new byte[40];
+- } else {
+- signature = new byte[(p11Key.length() + 7) >> 3];
+- }
+- if (type == T_UPDATE) {
+- token.p11.C_VerifyFinal(session.id(), signature);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Verify(session.id(), digest, signature);
+- }
+- } catch (PKCS11Exception e) {
+- // will fail since the signature is incorrect
+- // XXX check error code
+- }
++ } finally {
++ session = token.releaseSession(session);
+ }
+ }
+
+@@ -368,6 +372,8 @@
+ }
+ initialized = true;
+ } catch (PKCS11Exception e) {
++ // release session when initialization failed
++ session = token.releaseSession(session);
+ throw new ProviderException("Initialization failed", e);
+ }
+ if (bytesProcessed != 0) {
+@@ -529,6 +535,8 @@
+ }
+ bytesProcessed += len;
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException(e);
+ }
+ break;
+@@ -576,6 +584,8 @@
+ bytesProcessed += len;
+ byteBuffer.position(ofs + len);
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException("Update failed", e);
+ }
+ break;
diff --git a/8206406-pr3610-rh1597825.patch b/8206406-pr3610-rh1597825.patch
new file mode 100644
index 0000000..0f38126
--- /dev/null
+++ b/8206406-pr3610-rh1597825.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User aph
+# Date 1531146945 -3600
+# Mon Jul 09 15:35:45 2018 +0100
+# Node ID 95b72537801cc9946c27ad27f07e3f0790a21b08
+# Parent f6341f4635dacb56678264d29a88cd052b74036b
+8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Reviewed-by: dholmes
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+@@ -34,12 +34,12 @@
+
+ // Implementation of StubCodeDesc
+
+-StubCodeDesc* StubCodeDesc::_list = NULL;
+-int StubCodeDesc::_count = 0;
++StubCodeDesc* volatile StubCodeDesc::_list = NULL;
++int StubCodeDesc::_count = 0;
+
+
+ StubCodeDesc* StubCodeDesc::desc_for(address pc) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && !p->contains(pc)) p = p->_next;
+ // p == NULL || p->contains(pc)
+ return p;
+@@ -47,7 +47,7 @@
+
+
+ StubCodeDesc* StubCodeDesc::desc_for_index(int index) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && p->index() != index) p = p->_next;
+ return p;
+ }
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+@@ -38,7 +38,7 @@
+
+ class StubCodeDesc: public CHeapObj<mtCode> {
+ protected:
+- static StubCodeDesc* _list; // the list of all descriptors
++ static StubCodeDesc* volatile _list; // the list of all descriptors
+ static int _count; // length of list
+
+ StubCodeDesc* _next; // the next element in the linked list
+@@ -69,13 +69,13 @@
+
+ StubCodeDesc(const char* group, const char* name, address begin) {
+ assert(name != NULL, "no name specified");
+- _next = _list;
++ _next = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ _group = group;
+ _name = name;
+ _index = ++_count; // (never zero)
+ _begin = begin;
+ _end = NULL;
+- _list = this;
++ OrderAccess::release_store_ptr(&_list, this);
+ };
+
+ const char* group() const { return _group; }
diff --git a/8206425-hotspot-remove-debuglink.patch b/8206425-hotspot-remove-debuglink.patch
new file mode 100644
index 0000000..adbf1f0
--- /dev/null
+++ b/8206425-hotspot-remove-debuglink.patch
@@ -0,0 +1,73 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1530808022 -7200
+# Thu Jul 05 18:27:02 2018 +0200
+# Node ID 5ba59d58d976db456c4455640111e8107b8d80e8
+# Parent ad057f2e3211cd18bc56550d8a2c400d92ec35b1
+8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Summary: Only add .gnu_debuglink sections when there is some stripping done.
+Reviewed-by: erikj, dholmes
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -57,14 +57,15 @@
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -100,14 +100,15 @@
+ -lthread_db
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -358,14 +358,15 @@
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/8207057-pr3613-hotspot-assembler-debuginfo.patch b/8207057-pr3613-hotspot-assembler-debuginfo.patch
new file mode 100644
index 0000000..894596d
--- /dev/null
+++ b/8207057-pr3613-hotspot-assembler-debuginfo.patch
@@ -0,0 +1,20 @@
+--- openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:04:12.497865891 -0400
++++ openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:06:16.371214049 -0400
+@@ -34,7 +34,7 @@
+ CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
+ CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
+
+-AS.S = $(AS) $(ASFLAGS)
++AS.S = $(AS) -g $(ASFLAGS)
+
+ COMPILE.CC = $(CC_COMPILE) -c
+ GENASM.CC = $(CC_COMPILE) -S
+@@ -169,7 +169,7 @@
+ %.o: %.s
+ @echo Assembling $<
+ $(QUIETLY) $(REMOVE_TARGET)
+- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
++ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+
+ %.s: %.cpp
+ @echo Generating assembly for $<
diff --git a/8207234-dont-add-unnecessary-debug-links.patch b/8207234-dont-add-unnecessary-debug-links.patch
new file mode 100644
index 0000000..9c29e6b
--- /dev/null
+++ b/8207234-dont-add-unnecessary-debug-links.patch
@@ -0,0 +1,77 @@
+--- openjdk/make/common/NativeCompilation.gmk
++++ openjdk/make/common/NativeCompilation.gmk
+@@ -437,29 +437,6 @@
+
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+- ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+- else # not solaris
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+- endif # Touch to not retrigger rule on rebuild
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -483,7 +460,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
+ $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
+ endif
+ endif
+ endif
+@@ -522,28 +498,8 @@
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ else # not solaris
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ endif
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -567,7 +523,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
+ $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
+ endif
+ endif
+ endif
diff --git a/PR3183.patch b/PR3183.patch
deleted file mode 100644
index 5a619b4..0000000
--- a/PR3183.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1478057514 0
-# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
-# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
-PR3183: Support Fedora/RHEL system crypto policy
-
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
---- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
-@@ -43,6 +43,9 @@
- * implementation-specific location, which is typically the properties file
- * {@code lib/security/java.security} in the Java installation directory.
- *
-+ * <p>Additional default values of security properties are read from a
-+ * system-specific location, if available.</p>
-+ *
- * @author Benjamin Renaud
- */
-
-@@ -52,6 +55,10 @@
- private static final Debug sdebug =
- Debug.getInstance("properties");
-
-+ /* System property file*/
-+ private static final String SYSTEM_PROPERTIES =
-+ "/etc/crypto-policies/back-ends/java.config";
-+
- /* The java.security properties */
- private static Properties props;
-
-@@ -93,6 +100,7 @@
- if (sdebug != null) {
- sdebug.println("reading security properties file: " +
- propFile);
-+ sdebug.println(props.toString());
- }
- } catch (IOException e) {
- if (sdebug != null) {
-@@ -114,6 +122,31 @@
- }
-
- if ("true".equalsIgnoreCase(props.getProperty
-+ ("security.useSystemPropertiesFile"))) {
-+
-+ // now load the system file, if it exists, so its values
-+ // will win if they conflict with the earlier values
-+ try (BufferedInputStream bis =
-+ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
-+ props.load(bis);
-+ loadedProps = true;
-+
-+ if (sdebug != null) {
-+ sdebug.println("reading system security properties file " +
-+ SYSTEM_PROPERTIES);
-+ sdebug.println(props.toString());
-+ }
-+ } catch (IOException e) {
-+ if (sdebug != null) {
-+ sdebug.println
-+ ("unable to load security properties from " +
-+ SYSTEM_PROPERTIES);
-+ e.printStackTrace();
-+ }
-+ }
-+ }
-+
-+ if ("true".equalsIgnoreCase(props.getProperty
- ("security.overridePropertiesFile"))) {
-
- String extraPropFile = System.getProperty
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
---- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
---- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=true
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
---- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
---- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
-@@ -278,6 +278,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
---- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..61b3b69
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+Package of LTS OpenJDK 8
+OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 10. LTSs (next is 11) will go as separate packages.
+
+JDK8 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/8/ and is landing to your RHEL. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives.
+
+See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
+See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
+
diff --git a/dont-add-unnecessary-debug-links.patch b/dont-add-unnecessary-debug-links.patch
deleted file mode 100644
index 9c29e6b..0000000
--- a/dont-add-unnecessary-debug-links.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- openjdk/make/common/NativeCompilation.gmk
-+++ openjdk/make/common/NativeCompilation.gmk
-@@ -437,29 +437,6 @@
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
-- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
-- else # not solaris
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
-- endif # Touch to not retrigger rule on rebuild
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -483,7 +460,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
-@@ -522,28 +498,8 @@
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -567,7 +523,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
diff --git a/hotspot-assembler-debuginfo.patch b/hotspot-assembler-debuginfo.patch
deleted file mode 100644
index bf51c43..0000000
--- a/hotspot-assembler-debuginfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/rules.make.orig 2016-12-06 12:25:19.099768390 -0500
-+++ openjdk/hotspot/make/linux/makefiles/rules.make 2016-12-06 12:25:42.449990112 -0500
-@@ -34,7 +34,7 @@
- CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
- CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
--AS.S = $(AS) $(ASFLAGS)
-+AS.S = $(AS) -g $(ASFLAGS)
-
- COMPILE.CC = $(CC_COMPILE) -c
- GENASM.CC = $(CC_COMPILE) -S
-@@ -169,7 +169,7 @@
- %.o: %.s
- @echo Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
-- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-+ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
- %.s: %.cpp
- @echo Generating assembly for $<
diff --git a/hotspot-remove-debuglink.patch b/hotspot-remove-debuglink.patch
deleted file mode 100644
index 3b3070d..0000000
--- a/hotspot-remove-debuglink.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Remove unnecessary .gnu_debuglink sections from libjvm
-
-The .gnu_debuglink section indicates which file contains the debuginfo. This
-is not needed if we not stripping the shared object.
-
-RPM's debuginfo extraction code will add the right file links automatically. As
-it is, RPM copies over the .gnu_debuglink link to the debug info file. Without
-this patch, the debug info file also ends up containing the .gnu_debuglink
-section pointing to a missing (and not needed) file.
-
-diff --git a/make/linux/makefiles/jsig.make b/make/linux/makefiles/jsig.make
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -57,14 +57,15 @@
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
-diff --git a/make/linux/makefiles/saproc.make b/make/linux/makefiles/saproc.make
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -99,14 +99,15 @@
- -lthread_db
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
-diff --git a/make/linux/makefiles/vm.make b/make/linux/makefiles/vm.make
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -358,14 +358,15 @@
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
-- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 503eeca..0f2b41f 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -1,19 +1,48 @@
-# note, parametrised macros are order-senisitve (unlike not-parametrized) even with normal macros
-# also necessary when passing it as parameter other macros. If not macro, then it is considered as switch
-%global debug_suffix_unquoted -debug
+# RPM conditionals so as to be able to dynamically produce
+# slowdebug/release builds. See:
+# http://rpm.org/user_doc/conditional_builds.html
+#
+# Examples:
+#
+# Produce release *and* slowdebug builds on x86_64 (default):
+# $ rpmbuild -ba java-1.8.0-openjdk.spec
+#
+# Produce only release builds (no slowdebug builds) on x86_64:
+# $ rpmbuild -ba java-1.8.0-openjdk.spec --without slowdebug
+#
+# Only produce a release build on x86_64:
+# $ fedpkg mockbuild --without slowdebug
+#
+# Only produce a debug build on x86_64:
+# $ fedpkg local --without release
+#
+# Enable slowdebug builds by default on relevant arches.
+%bcond_without slowdebug
+# Enable release builds by default on relevant arches.
+%bcond_without release
+
+%define _find_debuginfo_opts -g
+# note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros
+# also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch
+# see the difference between global and define:
+# See https://github.com/rpm-software-management/rpm/issues/127 to comments at "pmatilai commented on Aug 18, 2017"
+# (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192)
+%global debug_suffix_unquoted -slowdebug
# quoted one for shell operations
%global debug_suffix "%{debug_suffix_unquoted}"
%global normal_suffix ""
-#if you wont only debug build, but providing java, build only normal build, but set normalbuild_parameter
-%global debugbuild_parameter slowdebug
-%global normalbuild_parameter release
-%global debug_warning This package have full debug on. Install only in need, and remove asap.
+# if you want only debug build but providing java build only normal build but set normalbuild_parameter
+%global debug_warning This package has full debug on. Install only in need and remove asap.
%global debug_on with full debug on
%global for_debug for packages with debug on
-# by default we build normal build always.
+%if %{with release}
%global include_normal_build 1
+%else
+%global include_normal_build 0
+%endif
+
%if %{include_normal_build}
%global build_loop1 %{normal_suffix}
%else
@@ -21,23 +50,30 @@
%endif
%global aarch64 aarch64 arm64 armv8
-# sometimes we need to distinguish big and little endian PPC64
+# we need to distinguish between big and little endian PPC64
%global ppc64le ppc64le
%global ppc64be ppc64 ppc64p7
%global multilib_arches %{power64} sparc64 x86_64
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm}
# By default, we build a debug build during main build on JIT architectures
-# do not ever sync {arm} to main packages, unles whole this package is merged.
+%if %{with slowdebug}
%ifarch %{jit_arches}
+%ifnarch %{arm}
%global include_debug_build 1
%else
+%global include_debug_build 1
+%endif
+%else
+%global include_debug_build 0
+%endif
+%else
%global include_debug_build 0
%endif
# On x86_64 and AArch64, we use the Shenandoah HotSpot
%ifarch x86_64 %{aarch64}
-%global use_shenandoah_hotspot 0
+%global use_shenandoah_hotspot 1
%else
%global use_shenandoah_hotspot 0
%endif
@@ -48,10 +84,10 @@
%global build_loop2 %{nil}
%endif
-# if you disable both builds, then build fails
+# if you disable both builds, then the build fails
%global build_loop %{build_loop1} %{build_loop2}
-# note, that order normal_suffix debug_suffix, in case of both enabled,
-# is expected in one single case at the end of build
+# note: that order: normal_suffix debug_suffix, in case of both enabled
+# is expected in one single case at the end of the build
%global rev_build_loop %{build_loop2} %{build_loop1}
%ifarch %{jit_arches}
@@ -66,28 +102,15 @@
%global targets all
%endif
-%ifnarch %{jit_arches}
-# Disable hardened build on non-jit arches. Work-around for RHBZ#1290936.
-%undefine _hardened_build
-%global ourcppflags %{nil}
-%global ourldflags %{nil}
-%else
-%ifarch %{aarch64}
-# Disable hardened build on AArch64 as it didn't bootcycle
-%undefine _hardened_build
-%global ourcppflags "-fstack-protector-strong"
-%global ourldflags %{nil}
-%else
+
# Filter out flags from the optflags macro that cause problems with the OpenJDK build
-# We filter out -O flags so that the optimisation of HotSpot is not lowered from O3 to O2
+# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||')
%global ourldflags %{__global_ldflags}
-%endif
-%endif
%ifarch %{arm}
# Disable hardened build on aarch32. Work-around for RHBZ#1290936.
%undefine _hardened_build
@@ -95,9 +118,9 @@
%global ourldflags %{nil}
%endif
-# With diabled nss is NSS deactivated, so in NSS_LIBDIR can be wrong path
-# the initialisation must be here. LAter the pkg-connfig have bugy behaviour
-#looks liekopenjdk RPM specific bug
+# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path
+# the initialization must be here. Later the pkg-config have buggy behavior
+# looks like openjdk RPM specific bug
# Always set this so the nss.cfg file is not broken
%global NSS_LIBDIR %(pkg-config --variable=libdir nss)
%global NSS_LIBS %(pkg-config --libs nss)
@@ -105,13 +128,18 @@
# see https://bugzilla.redhat.com/show_bug.cgi?id=1332456
%global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : )
%global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : )
-#this is worakround for processing of requires during srpm creation
+# this is workaround for processing of requires during srpm creation
%global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi)
%global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi)
-# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
-%global _privatelibs libmawt[.]so.*
+# Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349.
+# See also https://bugzilla.redhat.com/show_bug.cgi?id=1590796
+# as to why some libraries *cannot* be excluded. In particular,
+# these are:
+# libjsig.so, libjava.so, libjawt.so, libjvm.so and libverify.so
+%global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjli[.]so.*|libjsdt[.]so.*|libjsoundalsa[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libnpt[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsplashscreen[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
+
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
@@ -121,66 +149,59 @@
# does not match that given by _build_cpu
%ifarch x86_64
%global archinstall amd64
-%global stapinstall x86_64
%endif
%ifarch ppc
%global archinstall ppc
-%global stapinstall powerpc
%endif
%ifarch %{ppc64be}
%global archinstall ppc64
-%global stapinstall powerpc
%endif
%ifarch %{ppc64le}
%global archinstall ppc64le
-%global stapinstall powerpc
%endif
%ifarch %{ix86}
%global archinstall i386
-%global stapinstall i386
%endif
%ifarch ia64
%global archinstall ia64
-%global stapinstall ia64
%endif
%ifarch s390
%global archinstall s390
-%global stapinstall s390
%endif
%ifarch s390x
%global archinstall s390x
-%global stapinstall s390
%endif
%ifarch %{arm}
%global archinstall arm
-%global stapinstall arm
%endif
%ifarch %{aarch64}
%global archinstall aarch64
-%global stapinstall arm64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global archinstall sparc
-%global stapinstall %{_build_cpu}
%endif
# 64 bit sparc
%ifarch sparc64
%global archinstall sparcv9
-%global stapinstall %{_build_cpu}
%endif
%ifnarch %{jit_arches}
%global archinstall %{_arch}
%endif
+
+
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+# New Version-String scheme-style defines
+%global majorver 8
+
%ifarch %{ix86} x86_64
-%global with_openjfx_binding 0
+%global with_openjfx_binding 1
%global openjfx_path %{_jvmdir}/openjfx
# links src directories
%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
@@ -199,19 +220,18 @@
%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.
-%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
-%global abs2rel %{__perl} -e %{script}
-
-
# Standard JPackage naming and versioning defines.
%global origin openjdk
+%global origin_nice OpenJDK
+%global top_level_dir_name %{origin}
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u171-b11-aarch32-180511
+%global revision jdk8u181-b13-aarch32-180802
+%global shenandoah_project aarch64-port
+%global shenandoah_repo jdk8u-shenandoah
+%global shenandoah_revision aarch64-shenandoah-jdk8u181-b13
+
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -221,17 +241,19 @@
# priority must be 7 digits in total. The expression is workarounding tip
%global priority %(TIP=1800%{updatever}; echo ${TIP/tip/999})
-%global javaver 1.8.0
+%global javaver 1.%{majorver}.0
+%global systemtap_javaver 9
# parametrized macros are order-sensitive
-%global fullversion %{name}-%{version}-%{release}
-#images stub
-%global j2sdkimage j2sdk-image
+%global compatiblename %{name}
+%global fullversion %{compatiblename}-%{version}-%{release}
+# images stub
+%global jdkimage j2sdk-image
# output dir stub
%define buildoutputdir() %{expand:openjdk/build/jdk8.build%{?1}}
-#we can copy the javadoc to not arched dir, or made it not noarch
+# we can copy the javadoc to not arched dir, or make it not noarch
%define uniquejavadocdir() %{expand:%{fullversion}%{?1}}
-#main id and dir of this jdk
+# main id and dir of this jdk
%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}}
# Standard JPackage directories and symbolic links.
@@ -246,18 +268,19 @@
%if %{with_systemtap}
# Where to install systemtap tapset (links)
-# We would like these to be in a package specific subdir,
+# We would like these to be in a package specific sub-dir,
# but currently systemtap doesn't support that, so we have to
-# use the root tapset dir for now. To distinquish between 64
+# use the root tapset dir for now. To distinguish between 64
# and 32 bit architectures we place the tapsets under the arch
# specific dir (note that systemtap will only pickup the tapset
# for the primary arch for now). Systemtap uses the machine name
# aka build_cpu as architecture specific directory name.
%global tapsetroot /usr/share/systemtap
-%global tapsetdir %{tapsetroot}/tapset/%{stapinstall}
+%global tapsetdirttapset %{tapsetroot}/tapset/
+%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
%endif
-# not-duplicated scriplets for normal/debug packages
+# not-duplicated scriptlets for normal/debug packages
%global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
@@ -332,7 +355,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
# see pretrans where this file is declared
-# also see that pretrans is only for nondebug
+# also see that pretrans is only for non-debug
if [ ! "%{?1}" == %{debug_suffix} ]; then
if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then
sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}}
@@ -530,7 +553,7 @@ exit 0
}
%define files_jre() %{expand:
-%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
+%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png
%{_datadir}/applications/*policytool%{?1}.desktop
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libsplashscreen.so
@@ -548,12 +571,11 @@ exit 0
%defattr(-,root,root,-)
%dir %{_sysconfdir}/.java/.systemPrefs
%dir %{_sysconfdir}/.java
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}
%{_jvmdir}/%{jrelnk -- %{?1}}
-%{_jvmprivdir}/*
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security
%{_jvmdir}/%{jredir -- %{?1}}/lib/security/cacerts
%dir %{_jvmdir}/%{jredir -- %{?1}}
@@ -569,6 +591,9 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/bin/servertool
%{_jvmdir}/%{jredir -- %{?1}}/bin/tnameserv
%{_jvmdir}/%{jredir -- %{?1}}/bin/unpack200
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar
@@ -592,8 +617,8 @@ exit 0
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/nss.cfg
%ifarch %{jit_arches}
%ifnarch %{power64}
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
%endif
%endif
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/
@@ -693,7 +718,17 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/management-agent.jar
%{_jvmdir}/%{jredir -- %{?1}}/lib/management/*
%{_jvmdir}/%{jredir -- %{?1}}/lib/cmm/*
-%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/*
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/cldrdata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/dnsns.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/jaccess.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/localedata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/meta-index
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/nashorn.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunec.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunjce_provider.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunpkcs11.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/zipfs.jar
+
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/management
@@ -703,9 +738,9 @@ exit 0
%define files_devel() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/include
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib
@@ -754,6 +789,9 @@ exit 0
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/aarch32
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
+%if %{with_systemtap}
+%{_jvmdir}/%{sdkdir -- %{?1}}/tapset
+%endif
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ir.idl
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jconsole.jar
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/orb.idl
@@ -795,34 +833,33 @@ exit 0
%{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1*
%if %{with_systemtap}
%dir %{tapsetroot}
+%dir %{tapsetdirttapset}
%dir %{tapsetdir}
-%{tapsetdir}/*%{version}-%{release}.%{_arch}%{?1}.stp
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/tapset
-%{_jvmdir}/%{sdkdir -- %{?1}}/tapset/*.stp
+%{tapsetdir}/*%{_arch}%{?1}.stp
%endif
}
%define files_demo() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_src() %{expand:
%defattr(-,root,root,-)
-%doc README.src
+%doc README.md
%{_jvmdir}/%{sdkdir -- %{?1}}/src.zip
}
%define files_javadoc() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_javadoc_zip() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_accessibility() %{expand:
@@ -832,106 +869,94 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/accessibility.properties
}
-# not-duplicated requires/provides/obsolate for normal/debug packages
+# not-duplicated requires/provides/obsoletes for normal/debug packages
%define java_rpo() %{expand:
Requires: fontconfig%{?_isa}
Requires: xorg-x11-fonts-Type1
-
# Requires rest of java
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+# for java-X-openjdk package's desktop binding
+Recommends: gtk2%{?_isa}
+#Provides: java-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
-# Standard JPackage base provides.
-#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
+# Standard JPackage base provides
+#Provides: jre = %{javaver}%{?1}
#Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
+#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre = %{javaver}%{?1}
#Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: java-fonts%{?1} = %{epoch}:%{version}
-
-Obsoletes: java-1.7.0-openjdk%{?1}
-Obsoletes: java-1.5.0-gcj%{?1}
-Obsoletes: sinjdoc
}
%define java_headless_rpo() %{expand:
-# Require /etc/pki/java/cacerts.
+# Require /etc/pki/java/cacerts
Requires: ca-certificates
# Require javapackages-filesystem for ownership of /usr/lib/jvm/
Requires: javapackages-filesystem
-# Require zoneinfo data provided by tzdata-java subpackage.
+# Require zone-info data provided by tzdata-java sub-package
Requires: tzdata-java >= 2015d
# libsctp.so.1 is being `dlopen`ed on demand
Requires: lksctp-tools%{?_isa}
# there is a need to depend on the exact version of NSS
Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION}
Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION}
-# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum eforce it, not rpm transaction and so no configs are persisted when pure rpm -u is run. I t may be consiedered as regression
-Requires: copy-jdk-configs >= 3.3
+# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it,
+# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be
+# considered as regression
+Requires: copy-jdk-configs >= 3.3
OrderWithRequires: copy-jdk-configs
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
+# for optional support of kernel stream control, card reader and printing bindings
+Suggests: lksctp-tools%{?_isa}, pcsc-lite-devel%{?_isa}, cups
-# Standard JPackage base provides.
+# Standard JPackage base provides
+#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-headless%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: jndi%{?1} = %{epoch}:%{version}
-#Provides: jndi-ldap%{?1} = %{epoch}:%{version}
-#Provides: jndi-cos%{?1} = %{epoch}:%{version}
-#Provides: jndi-rmi%{?1} = %{epoch}:%{version}
-#Provides: jndi-dns%{?1} = %{epoch}:%{version}
-#Provides: jaas%{?1} = %{epoch}:%{version}
-#Provides: jsse%{?1} = %{epoch}:%{version}
-#Provides: jce%{?1} = %{epoch}:%{version}
-#Provides: jdbc-stdext%{?1} = 4.1
-#Provides: java-sasl%{?1} = %{epoch}:%{version}
-
-#https://bugzilla.redhat.com/show_bug.cgi?id=1312019
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1312019
#Provides: /usr/bin/jjs
-Obsoletes: java-1.7.0-openjdk-headless%{?1}
}
%define java_devel_rpo() %{expand:
-# Require base package.
+# Requires base package
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage devel provides.
+# Standard JPackage devel provides
#Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk%{?1} = %{epoch}:%{javaver}
#Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version}
+#Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version}
#Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-devel%{?1} = %{epoch}:%{javaver}
-Obsoletes: java-1.7.0-openjdk-devel%{?1}
-Obsoletes: java-1.5.0-gcj-devel%{?1}
}
@@ -939,39 +964,36 @@ Obsoletes: java-1.5.0-gcj-devel%{?1}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+#Provides: java-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-demo%{?1}
}
%define java_javadoc_rpo() %{expand:
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install javadoc alternative.
+# Post requires alternatives to install javadoc alternative
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall javadoc alternative.
+# Postun requires alternatives to uninstall javadoc alternative
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage javadoc provides.
+# Standard JPackage javadoc provides
#Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
-
-Obsoletes: java-1.7.0-openjdk-javadoc%{?1}
-
+#Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release}
}
%define java_src_rpo() %{expand:
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Standard JPackage javadoc provides.
+# Standard JPackage sources provides
#Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-src%{?1}
+#Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release}
}
%define java_accessibility_rpo() %{expand:
@@ -979,24 +1001,25 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-accessibility = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-accessibility = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
Name: java-%{javaver}-%{origin}-aarch32
-Version: %{javaver}.%{updatever}
-Release: 2.%{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
+Version: %{javaver}.%{updatever}.%{buildver}
+Release: 1%{?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
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
-# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
-# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
-# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
+# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
+# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
+# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
@@ -1025,18 +1048,25 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+# aarch64-port/jdk8u-shenandoah contains an integration forest of
+# OpenJDK 8u, the aarch64 port and Shenandoah
+# To regenerate, use:
+# VERSION=%%{shenandoah_revision}
+# FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> REPOS=hotspot generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
+#Source1: {shenandoah_project}-{shenandoah_repo}-{shenandoah_revision}.tar.xz
# Custom README for -src subpackage
-Source2: README.src
+Source2: README.md
# Use 'generate_tarballs.sh' to generate the following tarballs
-# They are based on code contained in the IcedTea7 project.
+# They are based on code contained in the IcedTea project (3.x)
# Systemtap tapsets. Zipped up to keep it small.
Source8: systemtap-tapset-3.4.0pre01.tar.xz
-# Desktop files. Adapated from IcedTea.
+# Desktop files. Adapted from IcedTea
Source9: jconsole.desktop.in
Source10: policytool.desktop.in
@@ -1058,7 +1088,11 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess
Source101: config.sub
+############################################
+#
# RPM/distribution specific patches
+#
+############################################
# Accessibility patches
# Ignore AWTError when assistive technologies are loaded
@@ -1066,7 +1100,11 @@ Patch1: java-1.8.0-openjdk-accessible-toolkit.patch
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
+#############################################
+#
# Upstreamable patches
+#
+#############################################
# PR2737: Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# PR2095, RH1163501: 2048-bit DH upper bound too small for Fedora infrastructure (sync with IcedTea 2.x)
@@ -1097,30 +1135,39 @@ Patch509: rh1176206-root.patch
Patch523: pr2974-rh1337583.patch
# PR3083, RH1346460: Regression in SSL debug output without an ECC provider
Patch528: pr3083-rh1346460.patch
-# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
-# linking with unresolved symbols.
-Patch529: rhbz_1538767_fix_linking.patch
-
+# RH1566890: CVE-2018-3639
+Patch529: rh1566890_embargoed20180521.patch
+# PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+Patch530: pr3601.patch
+# PR3183: Support Fedora/RHEL system crypto policy
+Patch300: pr3183.patch
+
+#############################################
+#
# Upstreamable debugging patches
+#
+#############################################
# 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
-# 8200556, PR3566: AArch64 port crashes on slowdebug builds
-#Patch207: 8200556-pr3566.patch
+# 8207234: More libraries with .gnu_debuglink sections added unconditionally
+Patch205: 8207234-dont-add-unnecessary-debug-links.patch
# Arch-specific upstreamable patches
-# PR2415: JVM -Xmx requirement is too high on s390
-#Patch100: {name}-s390-java-opts.patch
-# Type fixing for s390
-#Patch102: {name}-size_t.patch
-# Use "%z" for size_t on s390 as size_t != intptr_t
-#Patch103: s390-size_t_format_flags.patch
-# Fix more cases of missing return statements on AArch64
-#Patch104: pr3458-rh1540242.patch
-
+# s390: PR2415: JVM -Xmx requirement is too high on s390
+Patch100: java-1.8.0-openjdk-s390-java-opts.patch
+# s390: Type fixing for s390
+Patch102: java-1.8.0-openjdk-size_t.patch
+# s390: PR3593: Use "%z" for size_t on s390 as size_t != intptr_t
+Patch103: pr3593-s390-size_t_format_flags.patch
+# x86: S8199936, PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations (-mstackrealign workaround)
+Patch105: 8199936-pr3533-workaround.patch
+# AArch64: PR3519: Fix further functions with a missing return value (AArch64)
+#Patch106: pr3519.patch
+
+#############################################
+#
# Patches which need backporting to 8u
+#
+#############################################
# S8073139, RH1191652; fix name of ppc64le architecture
#Patch601: {name}-rh1191652-root.patch
#Patch602: {name}-rh1191652-jdk.patch
@@ -1131,45 +1178,104 @@ Patch7: include-all-srcs.patch
Patch202: system-libpng.patch
# 8042159: Allow using a system-installed lcms2
Patch203: system-lcms.patch
-# PR2462: Backport "8074839: Resolve disabled warnings for libunpack and the unpack200 binary"
+# S8074839, PR2462: Resolve disabled warnings for libunpack and the unpack200 binary
# This fixes printf warnings that lead to build failure with -Werror=format-security from optflags
Patch502: pr2462.patch
-# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
-Patch506: pr2842-01.patch
-Patch507: pr2842-02.patch
# S8154313: Generated javadoc scattered all over the place
Patch400: 8154313.patch
+# 8197429, PR3546, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
+Patch561: 8197429-pr3546-rh1536622.patch
+# 8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Patch563: 8171000-pr3542-rh1402819.patch
+# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
+Patch564: 8197546-pr3542-rh1402819.patch
+# PR3559: Use ldrexd for atomic reads on ARMv7.
+Patch567: pr3559.patch
+# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+Patch571: pr3591.patch
+# 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Patch572: 8184309-pr3596.patch
+# 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Patch573: 8141570-pr3548.patch
+# 8143245, PR3548: Zero build requires disabled warnings
+Patch574: 8143245-pr3548.patch
+# 8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Patch575: 8197981-pr3548.patch
+# 8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Patch576: 8064786-pr3599.patch
+# 8062808, PR3548: Turn on the -Wreturn-type warning
+Patch577: 8062808-pr3548.patch
+# 8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs
+Patch210: 8165852-pr3468.patch
+# 8207057, PR3613: Enable debug information for assembly code files
+Patch206: 8207057-pr3613-hotspot-assembler-debuginfo.patch
+
+#############################################
+#
+# Patches appearing in 8u192
+#
+#############################################
+# S8031668, PR2842: TOOLCHAIN_FIND_COMPILER unexpectedly resolves symbolic links
+Patch506: pr2842-01.patch
+# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
+Patch507: pr2842-02.patch
# S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-Patch540: rhbz1548475-LDFLAGSusage.patch
# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present
Patch560: 8188030-pr3459-rh1484079.patch
-# 8197429, PR3456, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
-Patch561: 8197429-pr3456-rh1536622.patch
-
+# 8205104, PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+Patch562: pr3539-rh1548475.patch
+# 8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Patch565: 8185723-pr3553.patch
+# 8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Patch566: 8186461-pr3557.patch
+# 8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Patch569: 8201509-pr3579.patch
+# 8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Patch570: 8165489-pr3589.patch
+# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
+# linking with unresolved symbols.
+Patch531: 8196516-pr3523-rh1538767.patch
+# 8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Patch578: 8075942-pr3602-rh1582032.patch
+# 8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Patch579: 8203182-pr3603-rh1568033.patch
+# 8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Patch580: 8206406-pr3610-rh1597825.patch
+# 8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Patch581: 8146115-pr3508-rh1463098.patch
+# 8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Patch204: 8206425-hotspot-remove-debuglink.patch
+
+#############################################
+#
# Patches ineligible for 8u
+#
+#############################################
# 8043805: Allow using a system-installed libjpeg
Patch201: system-libjpeg.patch
-Patch209: 8035496-hotspot.patch
-Patch210: suse_linuxfilestore.patch
-# custom securities
-Patch300: PR3183.patch
+#############################################
+#
# Local fixes
+#
+#############################################
# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
Patch525: pr1834-rh1022017.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
+# PR3575, RH1567204: System cacerts database handling should not affect jssecacerts
+Patch540: pr3575-rh1567204.patch
-# Shenandoah fixes
-# PR3573: Fix TCK crash with Shenandoah
-#Patch700: pr3573.patch
-
+#############################################
+#
# Non-OpenJDK fixes
+#
+#############################################
Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
@@ -1178,7 +1284,8 @@ BuildRequires: alsa-lib-devel
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
-BuildRequires: elfutils
+# elfutils only are OK for build without AOT
+BuildRequires: elfutils-devel
BuildRequires: fontconfig
BuildRequires: freetype-devel
BuildRequires: giflib-devel
@@ -1202,11 +1309,12 @@ BuildRequires: zip
# Use OpenJDK 7 where available (on RHEL) to avoid
# having to use the rhel-7.x-java-unsafe-candidate hack
%if ! 0%{?fedora} && 0%{?rhel} <= 7
+# Require a boot JDK which doesn't fail due to RH1482244
BuildRequires: java-1.7.0-openjdk-devel >= 1.7.0.151-2.6.11.3
%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
%endif
-# Zero-assembler build requirement.
+# Zero-assembler build requirement
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
@@ -1220,8 +1328,8 @@ BuildRequires: nss-softokn-freebl-devel >= 3.16.1
BuildRequires: systemtap-sdt-devel
%endif
-# this is built always, also during debug-only build
-# when it is built in debug-only, then this package is just placeholder
+# this is always built, also during debug-only build
+# when it is built in debug-only this package is just placeholder
%{java_rpo %{nil}}
ExclusiveArch: %{arm}
@@ -1231,110 +1339,112 @@ A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
-%package debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package slowdebug
+Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on}
Group: Development/Languages
%{java_rpo -- %{debug_suffix_unquoted}}
-%description debug
-The OpenJDK runtime environment.
+%description slowdebug
+The %{origin_nice} runtime environment.
%{debug_warning}
%endif
%if %{include_normal_build}
%package headless
-Summary: OpenJDK Runtime Environment
+Summary: %{origin_nice} Headless Runtime Environment %{majorver}
Group: Development/Languages
%{java_headless_rpo %{nil}}
%description headless
-The OpenJDK runtime environment without audio and video support.
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%endif
%if %{include_debug_build}
-%package headless-debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package headless-slowdebug
+Summary: %{origin_nice} Runtime Environment %{debug_on}
Group: Development/Languages
%{java_headless_rpo -- %{debug_suffix_unquoted}}
-%description headless-debug
-The OpenJDK runtime environment without audio and video support.
+%description headless-slowdebug
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%{debug_warning}
%endif
%if %{include_normal_build}
%package devel
-Summary: OpenJDK Development Environment
+Summary: %{origin_nice} Development Environment %{majorver}
Group: Development/Tools
%{java_devel_rpo %{nil}}
%description devel
-The OpenJDK development tools.
+The %{origin_nice} development tools %{majorver}.
%endif
%if %{include_debug_build}
-%package devel-debug
-Summary: OpenJDK Development Environment %{debug_on}
+%package devel-slowdebug
+Summary: %{origin_nice} Development Environment %{majorver} %{debug_on}
Group: Development/Tools
%{java_devel_rpo -- %{debug_suffix_unquoted}}
-%description devel-debug
-The OpenJDK development tools.
+%description devel-slowdebug
+The %{origin_nice} development tools %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package demo
-Summary: OpenJDK Demos
+Summary: %{origin_nice} Demos %{majorver}
Group: Development/Languages
%{java_demo_rpo %{nil}}
%description demo
-The OpenJDK demos.
+The %{origin_nice} demos %{majorver}.
%endif
%if %{include_debug_build}
-%package demo-debug
-Summary: OpenJDK Demos %{debug_on}
+%package demo-slowdebug
+Summary: %{origin_nice} Demos %{majorver} %{debug_on}
Group: Development/Languages
%{java_demo_rpo -- %{debug_suffix_unquoted}}
-%description demo-debug
-The OpenJDK demos.
+%description demo-slowdebug
+The %{origin_nice} demos %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package src
-Summary: OpenJDK Source Bundle
+Summary: %{origin_nice} Source Bundle %{majorver}
Group: Development/Languages
%{java_src_rpo %{nil}}
%description src
-The OpenJDK source bundle.
+The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver}
+class library source code for use by IDE indexers and debuggers.
%endif
%if %{include_debug_build}
-%package src-debug
-Summary: OpenJDK Source Bundle %{for_debug}
+%package src-slowdebug
+Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug}
Group: Development/Languages
%{java_src_rpo -- %{debug_suffix_unquoted}}
-%description src-debug
-The OpenJDK source bundle %{for_debug}.
+%description src-slowdebug
+The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
+ class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
%endif
%if %{include_normal_build}
%package javadoc
-Summary: OpenJDK API Documentation
+Summary: %{origin_nice} %{majorver} API documentation
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1342,12 +1452,12 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc
-The OpenJDK API documentation.
+The %{origin_nice} %{majorver} API documentation.
%endif
%if %{include_normal_build}
%package javadoc-zip
-Summary: OpenJDK API Documentation compressed in single archive
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1355,60 +1465,60 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc-zip
-The OpenJDK API documentation compressed in single archive.
+The %{origin_nice} %{majorver} API documentation compressed in single archive.
%endif
%if %{include_debug_build}
-%package javadoc-debug
-Summary: OpenJDK API Documentation %{for_debug}
+%package javadoc-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-debug
-The OpenJDK API documentation %{for_debug}.
+%description javadoc-slowdebug
+The %{origin_nice} %{majorver} API documentation %{for_debug}.
%endif
%if %{include_debug_build}
-%package javadoc-zip-debug
-Summary: OpenJDK API Documentation compressed in single archive %{for_debug}
+%package javadoc-zip-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-zip-debug
-The OpenJDK API documentation compressed in single archive %{for_debug}.
+%description javadoc-zip-slowdebug
+The %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}.
%endif
%if %{include_normal_build}
%package accessibility
-Summary: OpenJDK accessibility connector
+Summary: %{origin_nice} %{majorver} accessibility connector
%{java_accessibility_rpo %{nil}}
%description accessibility
-Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows
+Enables accessibility support in %{origin_nice} %{majorver} by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
-Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
+Please note, the java-atk-wrapper is still in beta, and %{origin_nice} %{majorver} itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%endif
%if %{include_debug_build}
-%package accessibility-debug
-Summary: OpenJDK accessibility connector %{for_debug}
+%package accessibility-slowdebug
+Summary: %{origin_nice} %{majorver} accessibility connector %{for_debug}
%{java_accessibility_rpo -- %{debug_suffix_unquoted}}
-%description accessibility-debug
+%description accessibility-slowdebug
See normal java-%{version}-openjdk-accessibility description.
%endif
@@ -1431,21 +1541,21 @@ Provides: javafx-devel = %{epoch}:%{version}-%{release}
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}
+%package openjfx-slowdebug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-slowdebug
+Requires: %{name}-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx%{?_isa}
-Provides: javafx-debug = %{epoch}:%{version}-%{release}
-%description openjfx-debug
-Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-slowdebug
+Set of links from OpenJDK-slowdebug (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}
+%package openjfx-devel-slowdebug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-slowdebug
+Requires: %{name}-devel-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx-devel%{?_isa}
-Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
-%description openjfx-devel-debug
-Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-devel-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-slowdebug
+Set of links from OpenJDK-slowdebug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
%endif
%endif
@@ -1463,7 +1573,7 @@ else
exit 12
fi
if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then
- echo "you have disabled both include_debug_build and include_debug_build. no go."
+ echo "You have disabled both include_debug_build and include_normal_build. That is a no go."
exit 13
fi
%setup -q -c -n %{uniquesuffix ""} -T -a 0
@@ -1509,9 +1619,8 @@ sh %{SOURCE12}
%patch204
%patch205
%patch206
-#%patch207
-%patch209
%patch210
+
%patch300
%patch1
@@ -1520,20 +1629,21 @@ sh %{SOURCE12}
%patch7
# s390 build fixes
-#%patch100
-#%patch102
-#%patch103
+%patch100
+%patch102
+%patch103
# AArch64 fixes
-#%patch104
+#%patch106
+
+# x86 fixes
+%patch105
# ppc64le fixes
#%patch603
#%patch601
#%patch602
-# Zero fixes.
-
# Upstreamable fixes
%patch502
%patch504
@@ -1554,17 +1664,37 @@ sh %{SOURCE12}
%patch523
%patch526
%patch528
+%patch529
+%patch530
%patch538
-%patch540
%patch560
pushd openjdk/jdk
-%patch529 -p1
+%patch531 -p1
popd
%patch561
+%patch562
+%patch563
+%patch564
+%patch565
+%patch566
+%patch567
+%patch569
+%patch571
+%patch572
+%patch573
+%patch574
+%patch575
+%patch576
+%patch577
+%patch578
+%patch579
+%patch580
+%patch581
# RPM-only fixes
%patch525
%patch539
+%patch540
# RHEL-only patches
%if ! 0%{?fedora} && 0%{?rhel} <= 7
@@ -1573,7 +1703,8 @@ popd
# Shenandoah-only patches
%if %{use_shenandoah_hotspot}
-%patch700
+%else
+%patch570
%endif
%patch1000
@@ -1588,17 +1719,17 @@ cp -r tapset tapset%{debug_suffix}
for suffix in %{build_loop} ; do
for file in "tapset"$suffix/*.in; do
- OUTPUT_FILE=`echo $file | sed -e s:%{javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g`
- sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g $file > $file.1
+ OUTPUT_FILE=`echo $file | sed -e "s:%{systemtap_javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
+ sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g" $file > $file.1
# TODO find out which architectures other than i686 have a client vm
%ifarch %{ix86}
- sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE
+ sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g" $file.1 > $OUTPUT_FILE
%else
- sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE
+ sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE
%endif
- sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
- sed -i -e s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g $OUTPUT_FILE
+ sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE
+ sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE
done
done
# systemtap tapsets ends
@@ -1611,18 +1742,20 @@ for file in %{SOURCE9} %{SOURCE10} ; do
EXT="${FILE##*.}"
NAME="${FILE%.*}"
OUTPUT_FILE=$NAME$suffix.$EXT
- sed -e s:#JAVA_HOME#:%{sdkbindir -- $suffix}:g $file > $OUTPUT_FILE
- sed -i -e s:#JRE_HOME#:%{jrebindir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:#ARCH#:%{version}-%{release}.%{_arch}$suffix:g $OUTPUT_FILE
+ sed -e "s:@JAVA_HOME@:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE
+ sed -i -e "s:@JRE_HOME@:%{jrebindir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
done
done
# Setup nss.cfg
-sed -e s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g %{SOURCE11} > nss.cfg
+sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
%build
-# How many cpu's do we have?
+# How many CPU's do we have?
export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
export NUM_PROC=${NUM_PROC:-1}
%if 0%{?_smp_ncpus_max}
@@ -1630,7 +1763,6 @@ export NUM_PROC=${NUM_PROC:-1}
[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
%endif
-# Build IcedTea and OpenJDK.
%ifarch s390x sparc64 alpha %{power64} %{aarch64}
export ARCH_DATA_MODEL=64
%endif
@@ -1643,23 +1775,28 @@ export CFLAGS="$CFLAGS -mieee"
# Explicitly set the C++ standard as the default has changed on GCC >= 6
EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse"
EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
+
%ifarch %{power64} ppc
# fix rpmlint warnings
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
%endif
export EXTRA_CFLAGS
-(cd openjdk/common/autoconf
+(cd %{top_level_dir_name}/common/autoconf
bash ./autogen.sh
)
for suffix in %{build_loop} ; do
-if [ "$suffix" = "%{debug_suffix}" ] ; then
-debugbuild=%{debugbuild_parameter}
+if [ "x$suffix" = "x" ] ; then
+ debugbuild=release
else
-debugbuild=%{normalbuild_parameter}
+ # change --something to something
+ debugbuild=`echo $suffix | sed "s/-//g"`
fi
+# Variable used in hs_err hook on build failures
+top_dir_abs_path=$(pwd)/%{top_level_dir_name}
+
mkdir -p %{buildoutputdir -- $suffix}
pushd %{buildoutputdir -- $suffix}
@@ -1679,7 +1816,7 @@ bash ../../configure \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
- --with-lcms=bundled \
+ --with-lcms=system \
--with-stdc++lib=dynamic \
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
--with-extra-cflags="$EXTRA_CFLAGS" \
@@ -1701,24 +1838,29 @@ make \
POST_STRIP_CMD="" \
LOG=trace \
SCTP_WERROR= \
- %{targets}
+ %{targets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false )
make zip-docs
# the build (erroneously) removes read permissions from some jars
# this is a regression in OpenJDK 7 (our compiler):
# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
-find images/%{j2sdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
-chmod ugo+r images/%{j2sdkimage}/lib/ct.sym
+find images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
+chmod ugo+r images/%{jdkimage}/lib/ct.sym
# remove redundant *diz and *debuginfo files
-find images/%{j2sdkimage} -iname '*.diz' -exec rm {} \;
-find images/%{j2sdkimage} -iname '*.debuginfo' -exec rm {} \;
+find images/%{jdkimage} -iname '*.diz' -exec rm {} \;
+find images/%{jdkimage} -iname '*.debuginfo' -exec rm {} \;
+
+# Build screws up permissions on binaries
+# https://bugs.openjdk.java.net/browse/JDK-8173610
+find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \;
+find images/%{jdkimage}/bin/ -exec chmod +x {} \;
popd >& /dev/null
# Install nss.cfg right away as we will be using the JRE above
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Install nss.cfg right away as we will be using the JRE above
install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
@@ -1727,7 +1869,7 @@ install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
rm $JAVA_HOME/jre/lib/tzdb.dat
ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat
-#build cycles
+# build cycles
done
%check
@@ -1735,7 +1877,7 @@ done
# We test debug first as it will give better diagnostics on a crash
for suffix in %{rev_build_loop} ; do
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE13}
@@ -1753,14 +1895,14 @@ do
# All these tests rely on RPM failing the build if the exit code of any set
# of piped commands is non-zero.
- # Test for .debug_* sections in the shared object. This is the main test.
- # Stripped objects will not contain these.
+ # Test for .debug_* sections in the shared object. This is the main test
+ # Stripped objects will not contain these
eu-readelf -S "$lib" | grep "] .debug_"
test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
- # Test FILE symbols. These will most likely be removed by anyting that
+ # Test FILE symbols. These will most likely be removed by anything that
# manipulates symbol tables because it's generally useless. So a nice test
- # that nothing has messed with symbols.
+ # that nothing has messed with symbols
old_IFS="$IFS"
IFS=$'\n'
for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT")
@@ -1771,7 +1913,7 @@ do
done
IFS="$old_IFS"
- # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking.
+ # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
if [ "`basename $lib`" = "libjvm.so" ]; then
eu-readelf -s "$lib" | \
grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$"
@@ -1779,7 +1921,7 @@ do
# Test that there are no .gnu_debuglink sections pointing to another
# debuginfo file. There shouldn't be any debuginfo files, so the link makes
- # no sense either.
+ # no sense either
eu-readelf -S "$lib" | grep 'gnu'
if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
echo "bad .gnu_debuglink section."
@@ -1821,7 +1963,7 @@ $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
-#build cycles check
+# build cycles check
done
%install
@@ -1829,9 +1971,10 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+# Install the jdk
+pushd %{buildoutputdir -- $suffix}/images/%{jdkimage}
-#install jsa directories so we can owe them
+# Install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/
@@ -1842,7 +1985,7 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}
%if %{with_systemtap}
- # Install systemtap support files.
+ # Install systemtap support files
install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset
# note, that uniquesuffix is in BUILD dir in this case
cp -a $RPM_BUILD_DIR/%{uniquesuffix ""}/tapset$suffix/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
@@ -1850,28 +1993,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
tapsetFiles=`ls *.stp`
popd
install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
- pushd $RPM_BUILD_ROOT%{tapsetdir}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir -- $suffix}/tapset %{tapsetdir})
- for name in $tapsetFiles ; do
- targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
- ln -sf $RELATIVE/$name $targetName
- done
- popd
+ for name in $tapsetFiles ; do
+ targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
+ ln -sf %{_jvmdir}/%{sdkdir -- $suffix}/tapset/$name $RPM_BUILD_ROOT%{tapsetdir}/$targetName
+ done
%endif
- # Remove empty cacerts database.
+ # 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.
+ # 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 .
+ ln -sf /etc/pki/java/cacerts .
popd
- # Install JCE policy symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix -- $suffix}/jce/vanilla
-
- # Install versioned symlinks.
+ # Install versioned symlinks
pushd $RPM_BUILD_ROOT%{_jvmdir}
ln -sf %{jredir -- $suffix} %{jrelnk -- $suffix}
popd
@@ -1879,11 +2014,11 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
# Remove javaws man page
rm -f man/man1/javaws*
- # Install man pages.
+ # Install man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*
do
- # Convert man pages to UTF8 encoding.
+ # Convert man pages to UTF8 encoding
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
@@ -1902,19 +2037,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
popd
-# Install Javadoc documentation.
+# Install Javadoc documentation
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir -- $suffix}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}
-cp -a %{buildoutputdir -- $suffix}/bundles/jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
+built_doc_archive=`echo "jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip" | sed s/slowdebug/debug/`
+cp -a %{buildoutputdir -- $suffix}/bundles/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
-# Install icons and menu entries.
+# Install icons and menu entries
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png
done
-# Install desktop files.
+# Install desktop files
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
for e in jconsole$suffix policytool$suffix ; do
desktop-file-install --vendor=%{uniquesuffix -- $suffix} --mode=644 \
@@ -1925,7 +2061,7 @@ done
# See https://bugzilla.redhat.com/show_bug.cgi?id=741821
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs
-# FIXME: remove SONAME entries from demo DSOs. See
+# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
@@ -2061,17 +2197,24 @@ 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
+# stabilize permissions
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ;
+
# end, dual install
done
-%if %{include_normal_build}
-# intentioanlly only for non-debug
+%if %{include_normal_build}
+# intentionally only for non-debug
%pretrans headless -p <lua>
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre
-- if copy-jdk-configs is in transaction, it installs in pretrans to temp
--- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in tranasction and so is
--- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
+-- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is
+-- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
-- whether copy-jdk-configs is installed or not. If so, then configs are copied
-- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all
local posix = require "posix"
@@ -2088,10 +2231,10 @@ local stat2 = posix.stat(SOURCE2, "type");
print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.")
end;
package.path = package.path .. ";" .. SOURCE1
-else
+else
if (stat2 ~= nil) then
if (debug) then
- print(SOURCE2 .." exists - copy-jdk-configs alrady installed and NOT in transation. Using.")
+ print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.")
end;
package.path = package.path .. ";" .. SOURCE2
else
@@ -2103,11 +2246,11 @@ else
return
end
end
--- run contetn of included file with fake args
+-- run content of included file with fake args
arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"}
require "copy_jdk_configs.lua"
-%post
+%post
%{post_script %{nil}}
%post headless
@@ -2144,45 +2287,45 @@ require "copy_jdk_configs.lua"
%{postun_javadoc_zip %{nil}}
%endif
-%if %{include_debug_build}
-%post debug
+%if %{include_debug_build}
+%post slowdebug
%{post_script -- %{debug_suffix_unquoted}}
-%post headless-debug
+%post headless-slowdebug
%{post_headless -- %{debug_suffix_unquoted}}
-%postun debug
+%postun slowdebug
%{postun_script -- %{debug_suffix_unquoted}}
-%postun headless-debug
+%postun headless-slowdebug
%{postun_headless -- %{debug_suffix_unquoted}}
-%posttrans debug
+%posttrans slowdebug
%{posttrans_script -- %{debug_suffix_unquoted}}
-%post devel-debug
+%post devel-slowdebug
%{post_devel -- %{debug_suffix_unquoted}}
-%postun devel-debug
+%postun devel-slowdebug
%{postun_devel -- %{debug_suffix_unquoted}}
-%posttrans devel-debug
+%posttrans devel-slowdebug
%{posttrans_devel -- %{debug_suffix_unquoted}}
-%post javadoc-debug
+%post javadoc-slowdebug
%{post_javadoc -- %{debug_suffix_unquoted}}
-%postun javadoc-debug
+%postun javadoc-slowdebug
%{postun_javadoc -- %{debug_suffix_unquoted}}
-%post javadoc-zip-debug
+%post javadoc-zip-slowdebug
%{post_javadoc_zip -- %{debug_suffix_unquoted}}
-%postun javadoc-zip-debug
+%postun javadoc-zip-slowdebug
%{postun_javadoc_zip -- %{debug_suffix_unquoted}}
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files
# main package builds always
%{files_jre %{nil}}
@@ -2192,10 +2335,10 @@ require "copy_jdk_configs.lua"
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files headless
-# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-# all config/norepalce files (and more) have to be declared in pretrans. See pretrans
+# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
+# all config/noreplace files (and more) have to be declared in pretrans. See pretrans
%{files_jre_headless %{nil}}
%files devel
@@ -2210,6 +2353,10 @@ require "copy_jdk_configs.lua"
%files javadoc
%{files_javadoc %{nil}}
+# this puts huge file to /usr/share
+# unluckily ti is really a documentation file
+# and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only
+# same for debug variant
%files javadoc-zip
%{files_javadoc_zip %{nil}}
@@ -2223,39 +2370,43 @@ require "copy_jdk_configs.lua"
%endif
%endif
-%if %{include_debug_build}
-%files debug
+%if %{include_debug_build}
+%files slowdebug
%{files_jre -- %{debug_suffix_unquoted}}
-%files headless-debug
+%files headless-slowdebug
%{files_jre_headless -- %{debug_suffix_unquoted}}
-%files devel-debug
+%files devel-slowdebug
%{files_devel -- %{debug_suffix_unquoted}}
-%files demo-debug -f %{name}-demo.files-debug
+%files demo-slowdebug -f %{name}-demo.files-slowdebug
%{files_demo -- %{debug_suffix_unquoted}}
-%files src-debug
+%files src-slowdebug
%{files_src -- %{debug_suffix_unquoted}}
-%files javadoc-debug
+%files javadoc-slowdebug
%{files_javadoc -- %{debug_suffix_unquoted}}
-%files javadoc-zip-debug
+%files javadoc-zip-slowdebug
%{files_javadoc_zip -- %{debug_suffix_unquoted}}
-%files accessibility-debug
+%files accessibility-slowdebug
%{files_accessibility -- %{debug_suffix_unquoted}}
%if %{with_openjfx_binding}
-%files openjfx-debug -f %{name}-openjfx.files-debug
+%files openjfx-slowdebug -f %{name}-openjfx.files-slowdebug
-%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%files openjfx-devel-slowdebug -f %{name}-openjfx-devel.files-slowdebug
%endif
%endif
%changelog
+* Thu Aug 30 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.181-1.180802
+- update sources to 8u181
+- sync with mainline package
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
diff --git a/java-1.8.0-openjdk-size_t.patch b/java-1.8.0-openjdk-size_t.patch
index c9c6b97..6e0d762 100644
--- a/java-1.8.0-openjdk-size_t.patch
+++ b/java-1.8.0-openjdk-size_t.patch
@@ -1,7 +1,7 @@
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -2659,7 +2659,7 @@ void CFLS_LAB::get_from_global_pool(size
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+@@ -2659,7 +2659,7 @@
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
@@ -10,10 +10,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compact
}
assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -957,7 +957,7 @@ void ConcurrentMarkSweepGeneration::comp
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+@@ -957,7 +957,7 @@
if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size");
@@ -22,7 +22,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: ");
-@@ -6575,7 +6575,7 @@ void CMSCollector::reset(bool asynch) {
+@@ -6577,7 +6577,7 @@
HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
@@ -31,7 +31,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
_markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() &&
-@@ -6873,7 +6873,7 @@ void CMSMarkStack::expand() {
+@@ -6875,7 +6875,7 @@
return;
}
// Double capacity if possible
@@ -40,10 +40,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
// Do not give up existing stack until we have managed to
// get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -3902,7 +3902,7 @@ void CMTask::drain_local_queue(bool part
+diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+@@ -3903,7 +3903,7 @@
// of things to do) or totally (at the very end).
size_t target_size;
if (partially) {
@@ -52,7 +52,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
} else {
target_size = 0;
}
-@@ -4728,7 +4728,7 @@ size_t G1PrintRegionLivenessInfoClosure:
+@@ -4707,7 +4707,7 @@
// The > 0 check is to deal with the prev and next live bytes which
// could be 0.
if (*hum_bytes > 0) {
@@ -61,10 +61,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
*hum_bytes -= bytes;
}
return bytes;
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1726,7 +1726,7 @@ HeapWord* G1CollectedHeap::expand_and_al
+diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+@@ -1726,7 +1726,7 @@
verify_region_sets_optional();
@@ -73,10 +73,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size
ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion",
ergo_format_reason("allocation request failed")
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -38,7 +38,7 @@ G1StringDedupQueue::G1StringDedupQueue()
+diff --git a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+@@ -117,7 +117,7 @@
+ return reserved_size() - committed_size();
+ }
+
+-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
++uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+ return (addr - _low_boundary) / _page_size;
+ }
+
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+@@ -38,7 +38,7 @@
_cancel(false),
_empty(true),
_dropped(0) {
@@ -85,22 +97,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.s
_queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
for (size_t i = 0; i < _nqueues; i++) {
new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -110,7 +110,7 @@ public:
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+@@ -120,7 +120,7 @@
};
- G1StringDedupEntryCache::G1StringDedupEntryCache() {
-- _nlists = MAX2(ParallelGCThreads, (size_t)1);
-+ _nlists = MAX2(ParallelGCThreads, (uintx)1);
- _lists = PaddedArray<G1StringDedupEntryFreeList, mtGC>::create_unfreeable((uint)_nlists);
- }
-
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -109,7 +109,7 @@ void HeapRegion::setup_heap_region_size(
+ G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
+- _nlists(MAX2(ParallelGCThreads, (size_t)1)),
++ _nlists(MAX2(ParallelGCThreads, (uintx)1)),
+ _max_list_length(0),
+ _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
+ _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
+diff --git a/src/share/vm/gc_implementation/g1/heapRegion.cpp b/src/share/vm/gc_implementation/g1/heapRegion.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
+@@ -109,7 +109,7 @@
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
@@ -109,10 +121,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jd
}
int region_size_log = log2_long((jlong) region_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -194,7 +194,7 @@ bool ParScanThreadState::take_from_overf
+diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+@@ -194,7 +194,7 @@
const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4,
@@ -121,10 +133,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow
// stack to our work queue.
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -910,8 +910,8 @@ void PSParallelCompact::initialize_space
+diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+@@ -910,8 +910,8 @@
void PSParallelCompact::initialize_dead_wood_limiter()
{
const size_t max = 100;
@@ -135,10 +147,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallel
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0);
-diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -385,7 +385,7 @@ void TwoGenerationCollectorPolicy::initi
+diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+@@ -385,7 +385,7 @@
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
@@ -147,7 +159,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to
-@@ -433,7 +433,7 @@ void GenCollectorPolicy::initialize_size
+@@ -433,7 +433,7 @@
// yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize.
@@ -156,7 +168,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
}
assert(max_new_size > 0, "All paths should set max_new_size");
-@@ -455,24 +455,23 @@ void GenCollectorPolicy::initialize_size
+@@ -455,24 +455,23 @@
// lower limit.
_min_gen0_size = NewSize;
desired_new_size = NewSize;
@@ -186,7 +198,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
assert(_min_gen0_size > 0, "Sanity check");
_initial_gen0_size = desired_new_size;
-@@ -573,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi
+@@ -573,7 +572,7 @@
} else {
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
@@ -195,10 +207,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
-diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp
---- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1455,7 +1455,7 @@ void MetaspaceGC::initialize() {
+diff --git a/src/share/vm/memory/metaspace.cpp b/src/share/vm/memory/metaspace.cpp
+--- openjdk/hotspot/src/share/vm/memory/metaspace.cpp
++++ openjdk/hotspot/src/share/vm/memory/metaspace.cpp
+@@ -1455,7 +1455,7 @@
void MetaspaceGC::post_initialize() {
// Reset the high-water mark once the VM initialization is done.
@@ -207,7 +219,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
}
bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
-@@ -1515,7 +1515,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1515,7 +1515,7 @@
(size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity,
@@ -216,7 +228,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
-@@ -1573,7 +1573,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1573,7 +1573,7 @@
const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity,
@@ -225,7 +237,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f"
-@@ -3245,7 +3245,7 @@ void Metaspace::global_initialize() {
+@@ -3285,7 +3285,7 @@
// on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
@@ -234,10 +246,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size.
-diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -238,13 +238,13 @@ size_t ThreadLocalAllocBuffer::initial_d
+diff --git a/src/share/vm/memory/threadLocalAllocBuffer.cpp b/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+@@ -238,13 +238,13 @@
size_t init_sz = 0;
if (TLABSize > 0) {
@@ -254,10 +266,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8
init_sz = align_object_size(init_sz);
}
init_sz = MIN2(MAX2(init_sz, min_size()), max_size());
-diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
---- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2015-06-09 10:21:39.000000000 -0400
-@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont
+diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+@@ -48,7 +48,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -266,7 +278,7 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont
+@@ -82,7 +82,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -275,10 +287,10 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp
---- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1277,7 +1277,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1283,7 +1283,7 @@
// NewSize was set on the command line and it is larger than
// preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
@@ -287,7 +299,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
} else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
}
-@@ -1302,8 +1302,8 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1308,8 +1308,8 @@
// Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) {
@@ -298,7 +310,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1313,7 +1313,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1319,7 +1319,7 @@
// so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) {
@@ -307,15 +319,3 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t 2015-06-09 10:35:04.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp 2015-06-09 10:33:21.000000000 -0400
-@@ -117,7 +117,7 @@ size_t G1PageBasedVirtualSpace::uncommit
- return reserved_size() - committed_size();
- }
-
--size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
-+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
- return (addr - _low_boundary) / _page_size;
- }
-
diff --git a/jconsole.desktop.in b/jconsole.desktop.in
index a096349..a8917c1 100644
--- a/jconsole.desktop.in
+++ b/jconsole.desktop.in
@@ -1,10 +1,10 @@
[Desktop Entry]
-Name=OpenJDK 8 Monitoring & Management Console #ARCH#
-Comment=Monitor and manage OpenJDK applications for #ARCH#
-Exec=#JAVA_HOME#/jconsole
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
+Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
+Exec=@JAVA_HOME@/jconsole
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
-Categories=Development;Monitor;Java;
+Categories=Development;Profiling;Java;
Version=1.0
diff --git a/policytool.desktop.in b/policytool.desktop.in
index d38b42d..e05969d 100644
--- a/policytool.desktop.in
+++ b/policytool.desktop.in
@@ -1,8 +1,8 @@
[Desktop Entry]
-Name=OpenJDK 8 Policy Tool #ARCH#
-Comment=Manage OpenJDK policy files #ARCH#
-Exec=#JRE_HOME#/policytool
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Policy Tool #ARCH#
+Comment=Manage OpenJDK @JAVA_MAJOR_VERSION@ policy files #ARCH#
+Exec=@JRE_HOME@/policytool
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-security-tools-PolicyTool
diff --git a/pr3183.patch b/pr3183.patch
new file mode 100644
index 0000000..5a619b4
--- /dev/null
+++ b/pr3183.patch
@@ -0,0 +1,158 @@
+
+# HG changeset patch
+# User andrew
+# Date 1478057514 0
+# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
+# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
+PR3183: Support Fedora/RHEL system crypto policy
+
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
+--- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
+@@ -43,6 +43,9 @@
+ * implementation-specific location, which is typically the properties file
+ * {@code lib/security/java.security} in the Java installation directory.
+ *
++ * <p>Additional default values of security properties are read from a
++ * system-specific location, if available.</p>
++ *
+ * @author Benjamin Renaud
+ */
+
+@@ -52,6 +55,10 @@
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+
++ /* System property file*/
++ private static final String SYSTEM_PROPERTIES =
++ "/etc/crypto-policies/back-ends/java.config";
++
+ /* The java.security properties */
+ private static Properties props;
+
+@@ -93,6 +100,7 @@
+ if (sdebug != null) {
+ sdebug.println("reading security properties file: " +
+ propFile);
++ sdebug.println(props.toString());
+ }
+ } catch (IOException e) {
+ if (sdebug != null) {
+@@ -114,6 +122,31 @@
+ }
+
+ if ("true".equalsIgnoreCase(props.getProperty
++ ("security.useSystemPropertiesFile"))) {
++
++ // now load the system file, if it exists, so its values
++ // will win if they conflict with the earlier values
++ try (BufferedInputStream bis =
++ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
++ props.load(bis);
++ loadedProps = true;
++
++ if (sdebug != null) {
++ sdebug.println("reading system security properties file " +
++ SYSTEM_PROPERTIES);
++ sdebug.println(props.toString());
++ }
++ } catch (IOException e) {
++ if (sdebug != null) {
++ sdebug.println
++ ("unable to load security properties from " +
++ SYSTEM_PROPERTIES);
++ e.printStackTrace();
++ }
++ }
++ }
++
++ if ("true".equalsIgnoreCase(props.getProperty
+ ("security.overridePropertiesFile"))) {
+
+ String extraPropFile = System.getProperty
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
+--- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=true
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
+--- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
+--- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
+@@ -278,6 +278,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
+--- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+
diff --git a/pr3539-rh1548475.patch b/pr3539-rh1548475.patch
new file mode 100644
index 0000000..0bae3de
--- /dev/null
+++ b/pr3539-rh1548475.patch
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User andrew
+# Date 1526065930 -3600
+# Fri May 11 20:12:10 2018 +0100
+# Node ID b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+# Parent afb31413c73cbc06420fdb447aa90a7a38258904
+PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/jsig.make openjdk/hotspot/make/aix/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/aix/makefiles/jsig.make
++++ openjdk/hotspot/make/aix/makefiles/jsig.make
+@@ -45,7 +45,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ LFLAGS_JSIG += $(BIN_UTILS)
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/saproc.make openjdk/hotspot/make/aix/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/aix/makefiles/saproc.make
++++ openjdk/hotspot/make/aix/makefiles/saproc.make
+@@ -66,7 +66,7 @@
+ endif
+
+
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
+ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+diff --git openjdk.orig/hotspot/make/aix/makefiles/vm.make openjdk/hotspot/make/aix/makefiles/vm.make
+--- openjdk.orig/hotspot/make/aix/makefiles/vm.make
++++ openjdk/hotspot/make/aix/makefiles/vm.make
+@@ -117,7 +117,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/jsig.make openjdk/hotspot/make/bsd/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/jsig.make
++++ openjdk/hotspot/make/bsd/makefiles/jsig.make
+@@ -52,7 +52,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/saproc.make openjdk/hotspot/make/bsd/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/saproc.make
++++ openjdk/hotspot/make/bsd/makefiles/saproc.make
+@@ -114,7 +114,7 @@
+ # bring in minimum version argument or we'll fail on OSX 10.10
+ SA_LFLAGS = $(LFLAGS)
+ endif
+-SA_LFLAGS += $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS += $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \
+ -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]")
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/vm.make openjdk/hotspot/make/bsd/makefiles/vm.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/vm.make
++++ openjdk/hotspot/make/bsd/makefiles/vm.make
+@@ -119,7 +119,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -44,7 +44,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -73,7 +73,7 @@
+ else
+ ALT_SAINCDIR=
+ endif
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ SAARCH ?= $(BUILDARCH)
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -130,7 +130,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
diff --git a/pr3559.patch b/pr3559.patch
new file mode 100644
index 0000000..48211dc
--- /dev/null
+++ b/pr3559.patch
@@ -0,0 +1,29 @@
+# HG changeset patch
+# User aph
+# Date 1338206478 14400
+# Mon May 28 08:01:18 2012 -0400
+# Node ID 6275d7b419091092752d5a1854194c98897892ba
+# Parent be1379a186ba527b32c93a83e04c9600735fe44b
+PR3559: Use ldrexd for atomic reads on ARMv7.
+
+2012-05-28 Andrew Haley <aph(a)redhat.com>
+
+ * os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
+ on ARMv7.
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -54,6 +54,12 @@
+ "std %0, 0(%2)\n"
+ : "=r"(tmp)
+ : "a"(src), "a"(dst));
++#elif defined(__ARM_ARCH_7A__)
++ jlong tmp;
++ asm volatile ("ldrexd %0, [%1]\n"
++ : "=r"(tmp)
++ : "r"(src), "m"(src));
++ *(jlong *) dst = tmp;
+ #else
+ *(jlong *) dst = *(jlong *) src;
+ #endif
diff --git a/pr3575-rh1567204.patch b/pr3575-rh1567204.patch
new file mode 100644
index 0000000..ce24c59
--- /dev/null
+++ b/pr3575-rh1567204.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User andrew
+# Date 1525111445 -3600
+# Mon Apr 30 19:04:05 2018 +0100
+# Node ID 388fc8da23044317c160678ffa8ff541c216a255
+# Parent 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+PR3575: System cacerts database handling should not affect jssecacerts
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+@@ -162,7 +162,7 @@
+ * Try:
+ * javax.net.ssl.trustStore (if this variable exists, stop)
+ * jssecacerts
+- * cacerts
++ * cacerts (system and local)
+ *
+ * If none exists, we use an empty keystore.
+ */
+@@ -174,14 +174,14 @@
+ storeFile = new File(storeFileName);
+ fis = getFileInputStream(storeFile);
+ } else {
+- /* Check system cacerts DB first; /etc/pki/java/cacerts */
+- storeFile = new File(sep + "etc" + sep + "pki" + sep
+- + "java" + sep + "cacerts");
++ String javaHome = props.get("javaHome");
++ storeFile = new File(javaHome + sep + "lib" + sep
++ + "security" + sep +
++ "jssecacerts");
+ if ((fis = getFileInputStream(storeFile)) == null) {
+- 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) {
+ storeFile = new File(javaHome + sep + "lib" + sep
+ + "security" + sep +
diff --git a/pr3591.patch b/pr3591.patch
new file mode 100644
index 0000000..e287590
--- /dev/null
+++ b/pr3591.patch
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User andrew
+# Date 1526489197 -3600
+# Wed May 16 17:46:37 2018 +0100
+# Node ID 64e87a408afd2b56d59dad73dee28d4b99463810
+# Parent 00ccc73498628a51a45301322e64ce2ad06e49be
+PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -794,6 +794,8 @@
+ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
+ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ CFLAGS_JDK="${CFLAGS_JDK} ${REALIGN_CFLAG}"
++ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${REALIGN_CFLAG}"
+ AC_SUBST([REALIGN_CFLAG])
+ fi
+
diff --git a/pr3593-s390-size_t_format_flags.patch b/pr3593-s390-size_t_format_flags.patch
new file mode 100644
index 0000000..b9ae9ab
--- /dev/null
+++ b/pr3593-s390-size_t_format_flags.patch
@@ -0,0 +1,143 @@
+diff -r cf43a852f486 src/share/vm/asm/codeBuffer.cpp
+--- openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -977,7 +977,7 @@
+ for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) {
+ CodeSection* sect = code_section(n);
+ if (!sect->is_allocated() || sect->is_empty()) continue;
+- xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>",
++ xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>",
+ n, sect->limit() - sect->start(), sect->limit() - sect->end());
+ }
+ xtty->print_cr("</blob>");
+diff -r cf43a852f486 src/share/vm/code/codeCache.cpp
+--- openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -191,7 +191,7 @@
+ }
+ if (PrintCodeCacheExtension) {
+ ResourceMark rm;
+- tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)",
++ tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)",
+ (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(),
+ (address)_heap->high() - (address)_heap->low_boundary());
+ }
+diff -r cf43a852f486 src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -556,7 +556,7 @@
+ " [Table]\n"
+ " [Memory Usage: "G1_STRDEDUP_BYTES_FORMAT_NS"]\n"
+ " [Size: "SIZE_FORMAT", Min: "SIZE_FORMAT", Max: "SIZE_FORMAT"]\n"
+- " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " UINTX_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
++ " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " SIZE_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
+ " [Resize Count: "UINTX_FORMAT", Shrink Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS"), Grow Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS")]\n"
+ " [Rehash Count: "UINTX_FORMAT", Rehash Threshold: "UINTX_FORMAT", Hash Seed: 0x%x]\n"
+ " [Age Threshold: "UINTX_FORMAT"]",
+diff -r cf43a852f486 src/share/vm/memory/blockOffsetTable.cpp
+--- openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -57,7 +57,7 @@
+ gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: ");
+ gclog_or_tty->print_cr(" "
+ " rs.base(): " INTPTR_FORMAT
+- " rs.size(): " INTPTR_FORMAT
++ " rs.size(): " SIZE_FORMAT
+ " rs end(): " INTPTR_FORMAT,
+ p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size()));
+ gclog_or_tty->print_cr(" "
+diff -r cf43a852f486 src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1285,14 +1285,14 @@
+ }
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
++ tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize);
+ }
+
+ // Code along this path potentially sets NewSize and OldSize
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
+- " initial_heap_size: " SIZE_FORMAT
++ tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT
++ " initial_heap_size: " UINTX_FORMAT
+ " max_heap: " SIZE_FORMAT,
+ min_heap_size(), InitialHeapSize, max_heap);
+ }
+@@ -1308,7 +1308,7 @@
+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t)NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
++ tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize);
+ }
+ }
+ // Unless explicitly requested otherwise, size old gen
+@@ -1318,7 +1318,7 @@
+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
++ tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize);
+ }
+ }
+ }
+@@ -1834,7 +1834,7 @@
+
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
++ tty->print_cr(" Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial);
+ }
+ FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
+ }
+@@ -1844,7 +1844,7 @@
+ set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size());
++ tty->print_cr(" Minimum heap size " UINTX_FORMAT, min_heap_size());
+ }
+ }
+ }
+diff -r cf43a852f486 src/share/vm/utilities/globalDefinitions.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1382,12 +1382,21 @@
+
+ #define INTPTR_FORMAT_W(width) "%" #width PRIxPTR
+
++#if defined(S390) && !defined(_LP64)
++#define SSIZE_FORMAT "%z" PRIdPTR
++#define SIZE_FORMAT "%z" PRIuPTR
++#define SIZE_FORMAT_HEX "0x%z" PRIxPTR
++#define SSIZE_FORMAT_W(width) "%" #width "z" PRIdPTR
++#define SIZE_FORMAT_W(width) "%" #width "z" PRIuPTR
++#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR
++#else // !S390
+ #define SSIZE_FORMAT "%" PRIdPTR
+ #define SIZE_FORMAT "%" PRIuPTR
+ #define SIZE_FORMAT_HEX "0x%" PRIxPTR
+ #define SSIZE_FORMAT_W(width) "%" #width PRIdPTR
+ #define SIZE_FORMAT_W(width) "%" #width PRIuPTR
+ #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR
++#endif // S390
+
+ #define INTX_FORMAT "%" PRIdPTR
+ #define UINTX_FORMAT "%" PRIuPTR
+diff -r 388e9d0905e6 src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Mon Apr 11 11:33:18 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Tue Apr 12 04:12:50 2016 +0100
+@@ -1056,7 +1056,8 @@
+ size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size);
+ assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected));
+ assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,
+- err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize));
++ err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT,
++ expected, NewSize));
+ }
+
+ private:
diff --git a/pr3601.patch b/pr3601.patch
new file mode 100644
index 0000000..d1e9576
--- /dev/null
+++ b/pr3601.patch
@@ -0,0 +1,38 @@
+# HG changeset patch
+# User andrew
+# Date 1529475043 -3600
+# Wed Jun 20 07:10:43 2018 +0100
+# Node ID f6341f4635dacb56678264d29a88cd052b74036b
+# Parent 30520d5018b509b0ae68f5fcc9a5c540e3e5b2de
+PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -835,7 +835,7 @@
+ JVM_ENTRY(jboolean, JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname))
+ JVMWrapper("JVM_KnownToNotExist");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::known_to_not_exist(env, loader, classname, CHECK_(false));
++ return ClassLoaderExt::known_to_not_exist(env, loader, classname, THREAD);
+ #else
+ return false;
+ #endif
+@@ -845,7 +845,7 @@
+ JVM_ENTRY(jobjectArray, JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader))
+ JVMWrapper("JVM_GetResourceLookupCacheURLs");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache_urls(env, loader, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache_urls(env, loader, THREAD);
+ #else
+ return NULL;
+ #endif
+@@ -855,7 +855,7 @@
+ JVM_ENTRY(jintArray, JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name))
+ JVMWrapper("JVM_GetResourceLookupCache");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, THREAD);
+ #else
+ return NULL;
+ #endif
diff --git a/rh1566890_embargoed20180521.patch b/rh1566890_embargoed20180521.patch
new file mode 100644
index 0000000..e29bdb9
--- /dev/null
+++ b/rh1566890_embargoed20180521.patch
@@ -0,0 +1,44 @@
+# ssbd2.patch
+--- ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp~ 2018-05-02 13:02:51.924489199 -0400
++++ ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2018-05-02 13:04:57.274216581 -0400
+@@ -102,6 +102,8 @@
+ # include <inttypes.h>
+ # include <sys/ioctl.h>
+
++#include <sys/prctl.h>
++
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+
+ #ifndef _GNU_SOURCE
+@@ -4892,6 +4894,31 @@
+ }
+ }
+
++/* Per task speculation control */
++#ifndef PR_GET_SPECULATION_CTRL
++#define PR_GET_SPECULATION_CTRL 52
++#endif
++#ifndef PR_SET_SPECULATION_CTRL
++#define PR_SET_SPECULATION_CTRL 53
++#endif
++/* Speculation control variants */
++# undef PR_SPEC_STORE_BYPASS
++# define PR_SPEC_STORE_BYPASS 0
++/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
++# undef PR_SPEC_NOT_AFFECTED
++# undef PR_SPEC_PRCTL
++# undef PR_SPEC_ENABLE
++# undef PR_SPEC_DISABLE
++# define PR_SPEC_NOT_AFFECTED 0
++# define PR_SPEC_PRCTL (1UL << 0)
++# define PR_SPEC_ENABLE (1UL << 1)
++# define PR_SPEC_DISABLE (1UL << 2)
++
++static void set_speculation() __attribute__((constructor));
++static void set_speculation() {
++ prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
++}
++
+ // this is called _before_ the most of global arguments have been parsed
+ void os::init(void) {
+ char dummy; /* used to get a guess on initial stack address */
diff --git a/rhbz1548475-LDFLAGSusage.patch b/rhbz1548475-LDFLAGSusage.patch
deleted file mode 100644
index 243c71b..0000000
--- a/rhbz1548475-LDFLAGSusage.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-# User jvanek
-# https://bugzilla.redhat.com/show_bug.cgi?id=1548475
-# java-1.8.0-openjdk: Partial build flags injection
-# LFLAGS += $(EXTRA_CFLAGS) corrected to LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
---- openjdk/hotspot/make/aix/makefiles/vm.make
-+++ openjdk/hotspot/make/aix/makefiles/vm.make
-@@ -117,7 +117,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/bsd/makefiles/vm.make
-+++ openjdk/hotspot/make/bsd/makefiles/vm.make
-@@ -119,7 +119,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -122,7 +122,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -73,7 +73,7 @@
- else
- ALT_SAINCDIR=
- endif
--SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
-+SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- SAARCH ?= $(BUILDARCH)
-
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -44,7 +44,7 @@ LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
- # cause problems with interposing. See CR: 6466665
- # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
--LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
- ifeq ($(DEBUG_BINARIES), true)
diff --git a/rhbz_1538767_fix_linking.patch b/rhbz_1538767_fix_linking.patch
deleted file mode 100644
index b321611..0000000
--- a/rhbz_1538767_fix_linking.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User sgehwolf
-# Date 1523360781 -7200
-# Tue Apr 10 13:46:21 2018 +0200
-# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
-# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
-8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
-Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
-
-diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
---- a/make/lib/Awt2dLibraries.gmk
-+++ b/make/lib/Awt2dLibraries.gmk
-@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
- BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
- endif
-
-+# LDFLAGS clarification:
-+# Filter relevant linker flags disallowing unresolved symbols as we cannot
-+# build-time decide to which library to link against (libawt_headless or
-+# libawt_xawt). See JDK-8196516 for details.
- $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- LIBRARY := fontmanager, \
- OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
- -DCC_NOEX, \
- MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
-- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
-+ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
-+ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/sources b/sources
index ad9eb3b..9132140 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz) = 30c94eee26b2134cb254786d7d9dcc3ef7a05ec545d60edcda098b77247bc1f276345bde5555b373b58a7b29e66e8f5bb07fd34813460f7a7f07008a611bb43a
+SHA512 (aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz) = dc0def6e3c25653bfcd9a3463c8946cfa7ea60eba86be28a5c372d7a1306f7acfafdf18c110bdc33fff961c9af0d085e65cbcbe5d68d1960b2b10b161d5c970a
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
diff --git a/suse_linuxfilestore.patch b/suse_linuxfilestore.patch
deleted file mode 100644
index 6a9f643..0000000
--- a/suse_linuxfilestore.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
-+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
-@@ -74,8 +74,16 @@
- } catch (UnixException x) {
- x.rethrowAsIOException(parent);
- }
-- if (attrs.dev() != dev())
-- break;
-+ if (attrs.dev() != dev()) {
-+
-+ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
-+ // find the file system even when not in /etc/mtab)
-+ byte[] dir = path.asByteArray();
-+ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
-+ if (Arrays.equals(dir, entry.dir()))
-+ return entry;
-+ }
-+ }
- path = parent;
- parent = parent.getParent();
- }
5 years, 8 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.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-aarch32.git/co....
Change:
-%ifarch %{aarch64}
Thanks.
Full change:
============
commit d6f9d063833af31676df653da8f9b24fecfbbd86
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Sep 4 20:15:12 2018 +0000
8u181 update
diff --git a/.gitignore b/.gitignore
index 308ced8..7c80fdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/aarch32-port-jdk8u-jdk8u152-b17-aarch32-171102.tar.xz
/aarch32-port-jdk8u-jdk8u161-b12-aarch32-180220.tar.xz
/aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz
+/aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz
diff --git a/8035496-hotspot.patch b/8035496-hotspot.patch
deleted file mode 100644
index 426bdbe..0000000
--- a/8035496-hotspot.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-# HG changeset patch
-# User bdelsart
-# Date 1508481469 -28800
-# Fri Oct 20 14:37:49 2017 +0800
-# Node ID 111ed1a4719008b83bf427ae16bbeac2a7a516bc
-# Parent 471de666658d7ec14c5d3f97076fb95f70dd6ffa
-8035496: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0
-Summary: release_store used when registering a PerRegionTable. Also reviewed-by: vitalyd(a)gmail.com
-Reviewed-by: jmasa, tschatzl, brutisso
-
-diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
-@@ -514,7 +514,15 @@
-
- PerRegionTable* first_prt = _fine_grain_regions[ind];
- prt->set_collision_list_next(first_prt);
-- _fine_grain_regions[ind] = prt;
-+ // The assignment into _fine_grain_regions allows the prt to
-+ // start being used concurrently. In addition to
-+ // collision_list_next which must be visible (else concurrent
-+ // parsing of the list, if any, may fail to see other entries),
-+ // the content of the prt must be visible (else for instance
-+ // some mark bits may not yet seem cleared or a 'later' update
-+ // performed by a concurrent thread could be undone when the
-+ // zeroing becomes visible). This requires store ordering.
-+ OrderAccess::release_store_ptr((volatile PerRegionTable*)&_fine_grain_regions[ind], prt);
- _n_fine_entries++;
-
- if (G1HRRSUseSparseTable) {
diff --git a/8062808-pr3548.patch b/8062808-pr3548.patch
new file mode 100644
index 0000000..e91abd3
--- /dev/null
+++ b/8062808-pr3548.patch
@@ -0,0 +1,191 @@
+# HG changeset patch
+# User stefank
+# Date 1525453613 -3600
+# Fri May 04 18:06:53 2018 +0100
+# Node ID 07a1135a327362f157955d470fad5df07cc35164
+# Parent de79964656fc652f2085dac4fe99bcc128b5a3b1
+8062808, PR3548: Turn on the -Wreturn-type warning
+Reviewed-by: mgerdin, tschatzl, coleenp, jrose, kbarrett
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
++++ openjdk/hotspot/make/linux/makefiles/gcc.make
+@@ -210,7 +210,7 @@
+ WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
+ endif
+
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
++WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wreturn-type
+
+ ifeq ($(USE_CLANG),)
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+diff --git openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+--- openjdk.orig/hotspot/src/cpu/x86/vm/x86_32.ad
++++ openjdk/hotspot/src/cpu/x86/vm/x86_32.ad
+@@ -1250,6 +1250,7 @@
+
+
+ Unimplemented();
++ return 0; // Mute compiler
+ }
+
+ #ifndef PRODUCT
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -541,6 +541,7 @@
+ err.report_and_die();
+
+ ShouldNotReachHere();
++ return true; // Mute compiler
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/defaultMethods.cpp
++++ openjdk/hotspot/src/share/vm/classfile/defaultMethods.cpp
+@@ -506,7 +506,7 @@
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+ Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
+@@ -521,7 +521,7 @@
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ }
+- return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
++ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/symbolTable.cpp
++++ openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp
+@@ -249,7 +249,7 @@
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+ // Otherwise, add to symbol to table
+- return the_table()->basic_add(index, (u1*)name, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)name, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup(const Symbol* sym, int begin, int end, TRAPS) {
+@@ -288,7 +288,7 @@
+ // Grab SymbolTable_lock first.
+ MutexLocker ml(SymbolTable_lock, THREAD);
+
+- return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, CHECK_NULL);
++ return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, THREAD);
+ }
+
+ Symbol* SymbolTable::lookup_only(const char* name, int len,
+diff --git openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+--- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp
++++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
+@@ -229,15 +229,15 @@
+ class_name->as_C_string(),
+ class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string()));
+ if (FieldType::is_array(class_name)) {
+- return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ } else if (FieldType::is_obj(class_name)) {
+ ResourceMark rm(THREAD);
+ // Ignore wrapping L and ;.
+ TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
+ class_name->utf8_length() - 2, CHECK_NULL);
+- return resolve_instance_class_or_null(name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
+ } else {
+- return resolve_instance_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
++ return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/heapInspection.hpp
++++ openjdk/hotspot/src/share/vm/memory/heapInspection.hpp
+@@ -367,7 +367,7 @@
+ _csv_format(csv_format), _print_help(print_help),
+ _print_class_stats(print_class_stats), _columns(columns) {}
+ void heap_inspection(outputStream* st) NOT_SERVICES_RETURN;
+- size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN;
++ size_t populate_table(KlassInfoTable* cit, BoolObjectClosure* filter = NULL) NOT_SERVICES_RETURN_(0);
+ static void find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) NOT_SERVICES_RETURN;
+ private:
+ void iterate_over_heap(KlassInfoTable* cit, BoolObjectClosure* filter = NULL);
+diff --git openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+--- openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp
++++ openjdk/hotspot/src/share/vm/memory/metaspaceShared.hpp
+@@ -93,7 +93,7 @@
+ static void preload_and_dump(TRAPS) NOT_CDS_RETURN;
+ static int preload_and_dump(const char * class_list_path,
+ GrowableArray<Klass*>* class_promote_order,
+- TRAPS) NOT_CDS_RETURN;
++ TRAPS) NOT_CDS_RETURN_(0);
+
+ static ReservedSpace* shared_rs() {
+ CDS_ONLY(return _shared_rs);
+diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+--- openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp
++++ openjdk/hotspot/src/share/vm/oops/constantPool.hpp
+@@ -352,7 +352,7 @@
+
+ Klass* klass_at(int which, TRAPS) {
+ constantPoolHandle h_this(THREAD, this);
+- return klass_at_impl(h_this, which, CHECK_NULL);
++ return klass_at_impl(h_this, which, THREAD);
+ }
+
+ Symbol* klass_name_at(int which); // Returns the name, w/o resolving.
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -4244,7 +4244,7 @@
+ JVM_DTraceProvider* providers))
+ JVMWrapper("JVM_DTraceActivate");
+ return DTraceJSDT::activate(
+- version, module_name, providers_count, providers, CHECK_0);
++ version, module_name, providers_count, providers, THREAD);
+ JVM_END
+
+ JVM_ENTRY(jboolean,JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method))
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/reflection.cpp
++++ openjdk/hotspot/src/share/vm/runtime/reflection.cpp
+@@ -1093,7 +1093,7 @@
+ } else {
+ if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT)
+ narrow((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
+- return box((jvalue*) result.get_value_addr(), rtype, CHECK_NULL);
++ return box((jvalue*) result.get_value_addr(), rtype, THREAD);
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+@@ -1046,7 +1046,7 @@
+ // last java frame on stack (which includes native call frames)
+ vframeStream vfst(thread, true); // Do not skip and javaCalls
+
+- return find_callee_info_helper(thread, vfst, bc, callinfo, CHECK_(Handle()));
++ return find_callee_info_helper(thread, vfst, bc, callinfo, THREAD);
+ }
+
+
+diff --git openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp openjdk/hotspot/src/share/vm/services/memTracker.hpp
+--- openjdk.orig/hotspot/src/share/vm/services/memTracker.hpp
++++ openjdk/hotspot/src/share/vm/services/memTracker.hpp
+@@ -64,7 +64,7 @@
+ const NativeCallStack& stack, MEMFLAGS flag = mtNone) { }
+ static inline void record_virtual_memory_commit(void* addr, size_t size, const NativeCallStack& stack) { }
+ static inline Tracker get_virtual_memory_uncommit_tracker() { return Tracker(); }
+- static inline Tracker get_virtual_memory_release_tracker() { }
++ static inline Tracker get_virtual_memory_release_tracker() { return Tracker(); }
+ static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) { }
+ static inline void record_thread_stack(void* addr, size_t size) { }
+ static inline void release_thread_stack(void* addr, size_t size) { }
diff --git a/8064786-pr3599.patch b/8064786-pr3599.patch
new file mode 100644
index 0000000..790ee0d
--- /dev/null
+++ b/8064786-pr3599.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User goetz
+# Date 1415873641 -3600
+# Thu Nov 13 11:14:01 2014 +0100
+# Node ID 1878c4c1d04e1f3c6f67a19d36c35863d6b5f906
+# Parent 533473c67de6ff767710594639033c8e83523fe5
+8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Reviewed-by: stefank, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp
+@@ -708,6 +708,7 @@
+
+ THROW_OOP_(JNIHandles::resolve(obj), JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+ #ifndef USDT2
+@@ -734,6 +735,7 @@
+ Handle protection_domain (THREAD, k->protection_domain());
+ THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
+ ShouldNotReachHere();
++ return 0; // Mute compiler.
+ JNI_END
+
+
diff --git a/8075942-pr3602-rh1582032.patch b/8075942-pr3602-rh1582032.patch
new file mode 100644
index 0000000..bd2a40e
--- /dev/null
+++ b/8075942-pr3602-rh1582032.patch
@@ -0,0 +1,95 @@
+# HG changeset patch
+# User prr
+# Date 1429299166 25200
+# Fri Apr 17 12:32:46 2015 -0700
+# Node ID 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+# Parent 533117ae5b7587c8d9c0612581682ab984475430
+8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Reviewed-by: flar, lbourges
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java
+@@ -146,7 +146,7 @@
+ if (dashOn) {
+ if (starting) {
+ firstSegmentsBuffer = Helpers.widenArray(firstSegmentsBuffer,
+- firstSegidx, type - 2);
++ firstSegidx, type - 2 + 1);
+ firstSegmentsBuffer[firstSegidx++] = type;
+ System.arraycopy(pts, off, firstSegmentsBuffer, firstSegidx, type - 2);
+ firstSegidx += type - 2;
+diff --git a/test/javopenjdk.orig/jdk/awt/BasicStroke/DashStrokeTest.java openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/awt/BasicStroke/DashStrokeTest.java
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2015, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ * @test
++ * @bug 8075942
++ * @summary test there is no exception rendering a dashed stroke
++ * @run DashStrokeTest
++ * @run -Dsun.java2d.renderer=sun.java2d.pisces.PiscesRenderingEngine
++ */
++
++import java.awt.BasicStroke;
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.Stroke;
++import java.awt.geom.GeneralPath;
++import java.awt.image.BufferedImage;
++
++
++public class DashStrokeTest {
++
++ public static void main(String[] args) {
++
++ GeneralPath shape = new GeneralPath();
++ int[] pointTypes = {0, 0, 1, 1, 0, 1, 1, 0};
++ double[] xpoints = {428, 420, 400, 400, 400, 400, 420, 733};
++ double[] ypoints = {180, 180, 180, 160, 30, 10, 10, 10};
++ shape.moveTo(xpoints[0], ypoints[0]);
++ for (int i = 1; i < pointTypes.length; i++) {
++ if (pointTypes[i] == 1 && i < pointTypes.length - 1) {
++ shape.quadTo(xpoints[i], ypoints[i],
++ xpoints[i + 1], ypoints[i + 1]);
++ } else {
++ shape.lineTo(xpoints[i], ypoints[i]);
++ }
++ }
++
++ BufferedImage image = new
++ BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
++ Graphics2D g2 = image.createGraphics();
++
++ Color color = new Color(124, 0, 124, 255);
++ g2.setColor(color);
++ Stroke stroke = new BasicStroke(1.0f,
++ BasicStroke.CAP_BUTT,
++ BasicStroke.JOIN_BEVEL,
++ 10.0f, new float[] {9, 6}, 0.0f);
++ g2.setStroke(stroke);
++ g2.draw(shape);
++ }
++}
diff --git a/8141570-pr3548.patch b/8141570-pr3548.patch
new file mode 100644
index 0000000..f1e3215
--- /dev/null
+++ b/8141570-pr3548.patch
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User coleenp
+# Date 1525713256 -3600
+# Mon May 07 18:14:16 2018 +0100
+# Node ID bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+# Parent 07a1135a327362f157955d470fad5df07cc35164
+8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Summary: change to include atomic.inline.hpp and allocation.inline.hpp only in .cpp files and some build fixes from Kim to build on ubuntu without devkits
+Reviewed-by: kbarrett, sgehwolf, erikj
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -25,8 +25,15 @@
+
+ # Setup common to Zero (non-Shark) and Shark versions of VM
+
+-# override this from the main file because some version of llvm do not like -Wundef
+-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
++# Some versions of llvm do not like -Wundef
++ifeq ($(USE_CLANG), true)
++ WARNING_FLAGS += -Wno-undef
++endif
++# Suppress some warning flags that are normally turned on for hotspot,
++# because some of the zero code has not been updated accordingly.
++WARNING_FLAGS += -Wno-return-type \
++ -Wno-format-nonliteral -Wno-format-security \
++ -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+@@ -42,5 +49,3 @@
+ ifeq ($(ARCH_DATA_MODEL), 64)
+ CFLAGS += -D_LP64=1
+ endif
+-
+-OPT_CFLAGS/compactingPermGenGen.o = -O1
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp
++++ openjdk/hotspot/src/share/vm/runtime/java.cpp
+@@ -45,6 +45,7 @@
+ #include "runtime/arguments.hpp"
+ #include "runtime/biasedLocking.hpp"
+ #include "runtime/compilationPolicy.hpp"
++#include "runtime/deoptimization.hpp"
+ #include "runtime/fprofiler.hpp"
+ #include "runtime/init.hpp"
+ #include "runtime/interfaceSupport.hpp"
diff --git a/8143245-pr3548.patch b/8143245-pr3548.patch
new file mode 100644
index 0000000..eccb110
--- /dev/null
+++ b/8143245-pr3548.patch
@@ -0,0 +1,154 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1525714161 -3600
+# Mon May 07 18:29:21 2018 +0100
+# Node ID afb31413c73cbc06420fdb447aa90a7a38258904
+# Parent bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+8143245, PR3548: Zero build requires disabled warnings
+Reviewed-by: dholmes, coleenp
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -29,11 +29,6 @@
+ ifeq ($(USE_CLANG), true)
+ WARNING_FLAGS += -Wno-undef
+ endif
+-# Suppress some warning flags that are normally turned on for hotspot,
+-# because some of the zero code has not been updated accordingly.
+-WARNING_FLAGS += -Wno-return-type \
+- -Wno-format-nonliteral -Wno-format-security \
+- -Wno-maybe-uninitialized
+
+ # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+@@ -100,7 +100,7 @@
+ case T_DOUBLE:
+ case T_VOID:
+ return result;
+- default : ShouldNotReachHere();
++ default : ShouldNotReachHere(); return NULL_WORD;
+ }
+ }
+
+diff --git openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -62,7 +62,7 @@
+ }
+
+ void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
+- ffi_type *ftype;
++ ffi_type *ftype = NULL;
+ switch (type) {
+ case T_VOID:
+ ftype = &ffi_type_void;
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
++ * Copyright 2016 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -61,6 +61,7 @@
+
+ frame os::get_sender_for_C_frame(frame* fr) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warning.
+ }
+
+ frame os::current_frame() {
+@@ -98,16 +99,19 @@
+
+ address os::Linux::ucontext_get_pc(ucontext_t* uc) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
+ intptr_t** ret_sp,
+ intptr_t** ret_fp) {
+ ShouldNotCallThis();
++ return NULL; // silence compile warnings
+ }
+
+ frame os::fetch_frame_from_context(void* ucVoid) {
+ ShouldNotCallThis();
++ return frame(NULL, NULL); // silence compile warnings
+ }
+
+ extern "C" JNIEXPORT int
+@@ -247,11 +251,16 @@
+ }
+ #endif // !PRODUCT
+
+- const char *fmt = "caught unhandled signal %d";
+ char buf[64];
+
+- sprintf(buf, fmt, sig);
++ sprintf(buf, "caught unhandled signal %d", sig);
++
++// Silence -Wformat-security warning for fatal()
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
+ fatal(buf);
++PRAGMA_DIAG_POP
++ return true; // silence compiler warnings
+ }
+
+ void os::Linux::init_thread_fpu_state(void) {
+@@ -260,6 +269,7 @@
+
+ int os::Linux::get_fpu_control_word() {
+ ShouldNotCallThis();
++ return -1; // silence compile warnings
+ }
+
+ void os::Linux::set_fpu_control_word(int fpu) {
+@@ -408,6 +418,7 @@
+
+ extern "C" {
+ int SpinPause() {
++ return -1; // silence compile warnings
+ }
+
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+@@ -110,6 +110,7 @@
+ void* ucontext,
+ bool isInJava) {
+ ShouldNotCallThis();
++ return false; // silence compile warning
+ }
+
+ // These routines are only used on cpu architectures that
diff --git a/8146115-pr3508-rh1463098.patch b/8146115-pr3508-rh1463098.patch
new file mode 100644
index 0000000..a04728b
--- /dev/null
+++ b/8146115-pr3508-rh1463098.patch
@@ -0,0 +1,1494 @@
+# HG changeset patch
+# User poonam
+# Date 1530903013 0
+# Fri Jul 06 18:50:13 2018 +0000
+# Node ID 2f2d2af6fa5c44e67e0a9987f56392315a1e4b64
+# Parent 95b72537801cc9946c27ad27f07e3f0790a21b08
+8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Reviewed-by: bobv, dbuck
+
+diff --git openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+--- openjdk.orig/hotspot/src/os/aix/vm/os_aix.cpp
++++ openjdk/hotspot/src/os/aix/vm/os_aix.cpp
+@@ -4008,6 +4008,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
+ assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");
+ return online_cpus;
+diff --git openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+--- openjdk.orig/hotspot/src/os/bsd/vm/os_bsd.cpp
++++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp
+@@ -3770,6 +3770,16 @@
+ };
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ return _processor_count;
+ }
+
+diff --git openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/globals_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2018, 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
+@@ -49,8 +49,13 @@
+ product(bool, UseSHM, false, \
+ "Use SYSV shared memory for large pages") \
+ \
+- diagnostic(bool, PrintActiveCpus, false, \
+- "Print the number of CPUs detected in os::active_processor_count")
++ product(bool, UseContainerSupport, true, \
++ "Enable detection and runtime container configuration support") \
++ \
++ product(bool, PreferContainerQuotaForCPUCount, true, \
++ "Calculate the container CPU availability based on the value" \
++ " of quotas (if set), when true. Otherwise, use the CPU" \
++ " shares value, provided it is less than quota.")
+
+ //
+ // Defines Linux-specific default values. The flags are available on all
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.cpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.cpp
+@@ -0,0 +1,680 @@
++/*
++ * Copyright (c) 2017, 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#include <string.h>
++#include <math.h>
++#include <errno.h>
++#include "utilities/globalDefinitions.hpp"
++#include "memory/allocation.hpp"
++#include "runtime/os.hpp"
++#include "osContainer_linux.hpp"
++
++#define PER_CPU_SHARES 1024
++
++bool OSContainer::_is_initialized = false;
++bool OSContainer::_is_containerized = false;
++julong _unlimited_memory;
++
++class CgroupSubsystem: CHeapObj<mtInternal> {
++ friend class OSContainer;
++
++ private:
++ /* mountinfo contents */
++ char *_root;
++ char *_mount_point;
++
++ /* Constructed subsystem directory */
++ char *_path;
++
++ public:
++ CgroupSubsystem(char *root, char *mountpoint) {
++ _root = os::strdup(root);
++ _mount_point = os::strdup(mountpoint);
++ _path = NULL;
++ }
++
++ /*
++ * Set directory to subsystem specific files based
++ * on the contents of the mountinfo and cgroup files.
++ */
++ void set_subsystem_path(char *cgroup_path) {
++ char buf[MAXPATHLEN+1];
++ if (_root != NULL && cgroup_path != NULL) {
++ if (strcmp(_root, "/") == 0) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ if (strcmp(cgroup_path,"/") != 0) {
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path, MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ }
++ _path = os::strdup(buf);
++ } else {
++ if (strcmp(_root, cgroup_path) == 0) {
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ } else {
++ char *p = strstr(_root, cgroup_path);
++ if (p != NULL && p == _root) {
++ if (strlen(cgroup_path) > strlen(_root)) {
++ int buflen;
++ strncpy(buf, _mount_point, MAXPATHLEN);
++ buf[MAXPATHLEN-1] = '\0';
++ buflen = strlen(buf);
++ if ((buflen + strlen(cgroup_path)) > (MAXPATHLEN-1)) {
++ return;
++ }
++ strncat(buf, cgroup_path + strlen(_root), MAXPATHLEN-buflen);
++ buf[MAXPATHLEN-1] = '\0';
++ _path = os::strdup(buf);
++ }
++ }
++ }
++ }
++ }
++ }
++
++ char *subsystem_path() { return _path; }
++};
++
++CgroupSubsystem* memory = NULL;
++CgroupSubsystem* cpuset = NULL;
++CgroupSubsystem* cpu = NULL;
++CgroupSubsystem* cpuacct = NULL;
++
++typedef char * cptr;
++
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
++template <typename T> int subsystem_file_contents(CgroupSubsystem* c,
++ const char *filename,
++ const char *scan_fmt,
++ T returnval) {
++ FILE *fp = NULL;
++ char *p;
++ char file[MAXPATHLEN+1];
++ char buf[MAXPATHLEN+1];
++
++ if (c == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: CgroupSubsytem* is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++ if (c->subsystem_path() == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("subsystem_file_contents: subsystem path is NULL");
++ }
++ return OSCONTAINER_ERROR;
++ }
++
++ strncpy(file, c->subsystem_path(), MAXPATHLEN);
++ file[MAXPATHLEN-1] = '\0';
++ int filelen = strlen(file);
++ if ((filelen + strlen(filename)) > (MAXPATHLEN-1)) {
++ if (PrintContainerInfo) {
++ tty->print_cr("File path too long %s, %s", file, filename);
++ }
++ return OSCONTAINER_ERROR;
++ }
++ strncat(file, filename, MAXPATHLEN-filelen);
++ if (PrintContainerInfo) {
++ tty->print_cr("Path to %s is %s", filename, file);
++ }
++ fp = fopen(file, "r");
++ if (fp != NULL) {
++ p = fgets(buf, MAXPATHLEN, fp);
++ if (p != NULL) {
++ int matched = sscanf(p, scan_fmt, returnval);
++ if (matched == 1) {
++ fclose(fp);
++ return 0;
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Type %s not found in file %s", scan_fmt, file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Empty file %s", file);
++ }
++ }
++ } else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Open of file %s failed, %s", file, strerror(errno));
++ }
++ }
++ if (fp != NULL)
++ fclose(fp);
++ return OSCONTAINER_ERROR;
++}
++PRAGMA_DIAG_POP
++
++#define GET_CONTAINER_INFO(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable) \
++ return_type variable; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ &variable); \
++ if (err != 0) \
++ return (return_type) OSCONTAINER_ERROR; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++#define GET_CONTAINER_INFO_CPTR(return_type, subsystem, filename, \
++ logstring, scan_fmt, variable, bufsize) \
++ char variable[bufsize]; \
++{ \
++ int err; \
++ err = subsystem_file_contents(subsystem, \
++ filename, \
++ scan_fmt, \
++ variable); \
++ if (err != 0) \
++ return (return_type) NULL; \
++ \
++ if (PrintContainerInfo) \
++ tty->print_cr(logstring, variable); \
++}
++
++/* init
++ *
++ * Initialize the container support and determine if
++ * we are running under cgroup control.
++ */
++void OSContainer::init() {
++ int mountid;
++ int parentid;
++ int major;
++ int minor;
++ FILE *mntinfo = NULL;
++ FILE *cgroup = NULL;
++ char buf[MAXPATHLEN+1];
++ char tmproot[MAXPATHLEN+1];
++ char tmpmount[MAXPATHLEN+1];
++ char tmpbase[MAXPATHLEN+1];
++ char *p;
++ jlong mem_limit;
++
++ assert(!_is_initialized, "Initializing OSContainer more than once");
++
++ _is_initialized = true;
++ _is_containerized = false;
++
++ _unlimited_memory = (LONG_MAX / os::vm_page_size()) * os::vm_page_size();
++
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::init: Initializing Container Support");
++ }
++ if (!UseContainerSupport) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Container Support not enabled");
++ }
++ return;
++ }
++
++ /*
++ * Find the cgroup mount point for memory and cpuset
++ * by reading /proc/self/mountinfo
++ *
++ * Example for docker:
++ * 219 214 0:29 /docker/7208cebd00fa5f2e342b1094f7bed87fa25661471a4637118e65f1c995be8a34 /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,memory
++ *
++ * Example for host:
++ * 34 28 0:29 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,memory
++ */
++ mntinfo = fopen("/proc/self/mountinfo", "r");
++ if (mntinfo == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/mountinfo, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
++ // Look for the filesystem type and see if it's cgroup
++ char fstype[MAXPATHLEN+1];
++ fstype[0] = '\0';
++ char *s = strstr(p, " - ");
++ if (s != NULL &&
++ sscanf(s, " - %s", fstype) == 1 &&
++ strcmp(fstype, "cgroup") == 0) {
++
++ if (strstr(p, "memory") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ memory = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and memory: %s", p);
++ }
++ } else if (strstr(p, "cpuset") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuset = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuset: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu,cpuacct") != NULL || strstr(p, "cpuacct,cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu,cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpuacct") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpuacct = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpuacct: %s", p);
++ }
++ }
++ } else if (strstr(p, "cpu") != NULL) {
++ int matched = sscanf(p, "%d %d %d:%d %s %s",
++ &mountid,
++ &parentid,
++ &major,
++ &minor,
++ tmproot,
++ tmpmount);
++ if (matched == 6) {
++ cpu = new CgroupSubsystem(tmproot, tmpmount);
++ }
++ else {
++ if (PrintContainerInfo) {
++ tty->print_cr("Incompatible str containing cgroup and cpu: %s", p);
++ }
++ }
++ }
++ }
++ }
++
++ fclose(mntinfo);
++
++ if (memory == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup memory subsystem not found");
++ }
++ return;
++ }
++ if (cpuset == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuset subsystem not found");
++ }
++ return;
++ }
++ if (cpu == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpu subsystem not found");
++ }
++ return;
++ }
++ if (cpuacct == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Required cgroup cpuacct subsystem not found");
++ }
++ return;
++ }
++
++ /*
++ * Read /proc/self/cgroup and map host mount point to
++ * local one via /proc/self/mountinfo content above
++ *
++ * Docker example:
++ * 5:memory:/docker/6558aed8fc662b194323ceab5b964f69cf36b3e8af877a14b80256e93aecb044
++ *
++ * Host example:
++ * 5:memory:/user.slice
++ *
++ * Construct a path to the process specific memory and cpuset
++ * cgroup directory.
++ *
++ * For a container running under Docker from memory example above
++ * the paths would be:
++ *
++ * /sys/fs/cgroup/memory
++ *
++ * For a Host from memory example above the path would be:
++ *
++ * /sys/fs/cgroup/memory/user.slice
++ *
++ */
++ cgroup = fopen("/proc/self/cgroup", "r");
++ if (cgroup == NULL) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Can't open /proc/self/cgroup, %s",
++ strerror(errno));
++ }
++ return;
++ }
++
++ while ( (p = fgets(buf, MAXPATHLEN, cgroup)) != NULL) {
++ int cgno;
++ int matched;
++ char *controller;
++ char *base;
++
++ /* Skip cgroup number */
++ strsep(&p, ":");
++ /* Get controller and base */
++ controller = strsep(&p, ":");
++ base = strsep(&p, "\n");
++
++ if (controller != NULL) {
++ if (strstr(controller, "memory") != NULL) {
++ memory->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuset") != NULL) {
++ cpuset->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu,cpuacct") != NULL || strstr(controller, "cpuacct,cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpuacct") != NULL) {
++ cpuacct->set_subsystem_path(base);
++ } else if (strstr(controller, "cpu") != NULL) {
++ cpu->set_subsystem_path(base);
++ }
++ }
++ }
++
++ fclose(cgroup);
++
++ // We need to update the amount of physical memory now that
++ // command line arguments have been processed.
++ if ((mem_limit = memory_limit_in_bytes()) > 0) {
++ os::Linux::set_physical_memory(mem_limit);
++ }
++
++ _is_containerized = true;
++
++}
++
++const char * OSContainer::container_type() {
++ if (is_containerized()) {
++ return "cgroupv1";
++ } else {
++ return NULL;
++ }
++}
++
++
++/* memory_limit_in_bytes
++ *
++ * Return the limit of available memory for this process.
++ *
++ * return:
++ * memory limit in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.limit_in_bytes",
++ "Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
++
++ if (memlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ }
++ else {
++ return (jlong)memlimit;
++ }
++}
++
++jlong OSContainer::memory_and_swap_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.memsw.limit_in_bytes",
++ "Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
++ if (memswlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory and Swap Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memswlimit;
++ }
++}
++
++jlong OSContainer::memory_soft_limit_in_bytes() {
++ GET_CONTAINER_INFO(julong, memory, "/memory.soft_limit_in_bytes",
++ "Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
++ if (memsoftlimit >= _unlimited_memory) {
++ if (PrintContainerInfo) {
++ tty->print_cr("Memory Soft Limit is: Unlimited");
++ }
++ return (jlong)-1;
++ } else {
++ return (jlong)memsoftlimit;
++ }
++}
++
++/* memory_usage_in_bytes
++ *
++ * Return the amount of used memory for this process.
++ *
++ * return:
++ * memory usage in bytes or
++ * -1 for unlimited
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.usage_in_bytes",
++ "Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memusage);
++ return memusage;
++}
++
++/* memory_max_usage_in_bytes
++ *
++ * Return the maximum amount of used memory for this process.
++ *
++ * return:
++ * max memory usage in bytes or
++ * OSCONTAINER_ERROR for not supported
++ */
++jlong OSContainer::memory_max_usage_in_bytes() {
++ GET_CONTAINER_INFO(jlong, memory, "/memory.max_usage_in_bytes",
++ "Maximum Memory Usage is: " JLONG_FORMAT, JLONG_FORMAT, memmaxusage);
++ return memmaxusage;
++}
++
++/* active_processor_count
++ *
++ * Calculate an appropriate number of active processors for the
++ * VM to use based on these three inputs.
++ *
++ * cpu affinity
++ * cgroup cpu quota & cpu period
++ * cgroup cpu shares
++ *
++ * Algorithm:
++ *
++ * Determine the number of available CPUs from sched_getaffinity
++ *
++ * If user specified a quota (quota != -1), calculate the number of
++ * required CPUs by dividing quota by period.
++ *
++ * If shares are in effect (shares != -1), calculate the number
++ * of CPUs required for the shares by dividing the share value
++ * by PER_CPU_SHARES.
++ *
++ * All results of division are rounded up to the next whole number.
++ *
++ * If neither shares or quotas have been specified, return the
++ * number of active processors in the system.
++ *
++ * If both shares and quotas have been specified, the results are
++ * based on the flag PreferContainerQuotaForCPUCount. If true,
++ * return the quota value. If false return the smallest value
++ * between shares or quotas.
++ *
++ * If shares and/or quotas have been specified, the resulting number
++ * returned will never exceed the number of active processors.
++ *
++ * return:
++ * number of CPUs
++ */
++int OSContainer::active_processor_count() {
++ int quota_count = 0, share_count = 0;
++ int cpu_count, limit_count;
++ int result;
++
++ cpu_count = limit_count = os::Linux::active_processor_count();
++ int quota = cpu_quota();
++ int period = cpu_period();
++ int share = cpu_shares();
++
++ if (quota > -1 && period > 0) {
++ quota_count = ceilf((float)quota / (float)period);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Quota count based on quota/period: %d", quota_count);
++ }
++ }
++ if (share > -1) {
++ share_count = ceilf((float)share / (float)PER_CPU_SHARES);
++ if (PrintContainerInfo) {
++ tty->print_cr("CPU Share count based on shares: %d", share_count);
++ }
++ }
++
++ // If both shares and quotas are setup results depend
++ // on flag PreferContainerQuotaForCPUCount.
++ // If true, limit CPU count to quota
++ // If false, use minimum of shares and quotas
++ if (quota_count !=0 && share_count != 0) {
++ if (PreferContainerQuotaForCPUCount) {
++ limit_count = quota_count;
++ } else {
++ limit_count = MIN2(quota_count, share_count);
++ }
++ } else if (quota_count != 0) {
++ limit_count = quota_count;
++ } else if (share_count != 0) {
++ limit_count = share_count;
++ }
++
++ result = MIN2(cpu_count, limit_count);
++ if (PrintContainerInfo) {
++ tty->print_cr("OSContainer::active_processor_count: %d", result);
++ }
++ return result;
++}
++
++char * OSContainer::cpu_cpuset_cpus() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.cpus",
++ "cpuset.cpus is: %s", "%1023s", cpus, 1024);
++ return os::strdup(cpus);
++}
++
++char * OSContainer::cpu_cpuset_memory_nodes() {
++ GET_CONTAINER_INFO_CPTR(cptr, cpuset, "/cpuset.mems",
++ "cpuset.mems is: %s", "%1023s", mems, 1024);
++ return os::strdup(mems);
++}
++
++/* cpu_quota
++ *
++ * Return the number of milliseconds per period
++ * process is guaranteed to run.
++ *
++ * return:
++ * quota time in milliseconds
++ * -1 for no quota
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_quota() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_quota_us",
++ "CPU Quota is: %d", "%d", quota);
++ return quota;
++}
++
++int OSContainer::cpu_period() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.cfs_period_us",
++ "CPU Period is: %d", "%d", period);
++ return period;
++}
++
++/* cpu_shares
++ *
++ * Return the amount of cpu shares available to the process
++ *
++ * return:
++ * Share number (typically a number relative to 1024)
++ * (2048 typically expresses 2 CPUs worth of processing)
++ * -1 for no share setup
++ * OSCONTAINER_ERROR for not supported
++ */
++int OSContainer::cpu_shares() {
++ GET_CONTAINER_INFO(int, cpu, "/cpu.shares",
++ "CPU Shares is: %d", "%d", shares);
++ // Convert 1024 to no shares setup
++ if (shares == 1024) return -1;
++
++ return shares;
++}
++
+diff --git openjdk.orig/hotspot/src/os/linux/vm/osContainer_linux.hpp openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/os/linux/vm/osContainer_linux.hpp
+@@ -0,0 +1,68 @@
++/*
++ * Copyright (c) 2018, 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
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ *
++ */
++
++#ifndef OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++#define OS_LINUX_VM_OSCONTAINER_LINUX_HPP
++
++#include "utilities/globalDefinitions.hpp"
++#include "utilities/macros.hpp"
++#include "memory/allocation.hpp"
++
++#define OSCONTAINER_ERROR (-2)
++
++class OSContainer: AllStatic {
++
++ private:
++ static bool _is_initialized;
++ static bool _is_containerized;
++
++ public:
++ static void init();
++ static inline bool is_containerized();
++ static const char * container_type();
++
++ static jlong memory_limit_in_bytes();
++ static jlong memory_and_swap_limit_in_bytes();
++ static jlong memory_soft_limit_in_bytes();
++ static jlong memory_usage_in_bytes();
++ static jlong memory_max_usage_in_bytes();
++
++ static int active_processor_count();
++
++ static char * cpu_cpuset_cpus();
++ static char * cpu_cpuset_memory_nodes();
++
++ static int cpu_quota();
++ static int cpu_period();
++
++ static int cpu_shares();
++
++};
++
++inline bool OSContainer::is_containerized() {
++ assert(_is_initialized, "OSContainer not initialized");
++ return _is_containerized;
++}
++
++#endif // OS_LINUX_VM_OSCONTAINER_LINUX_HPP
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -37,6 +37,7 @@
+ #include "mutex_linux.inline.hpp"
+ #include "oops/oop.inline.hpp"
+ #include "os_share_linux.hpp"
++#include "osContainer_linux.hpp"
+ #include "prims/jniFastGetField.hpp"
+ #include "prims/jvm.h"
+ #include "prims/jvm_misc.hpp"
+@@ -179,13 +180,62 @@
+ julong os::Linux::available_memory() {
+ // values in struct sysinfo are "unsigned long"
+ struct sysinfo si;
++ julong avail_mem;
++
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit, mem_usage;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ if (mem_limit > 0 && (mem_usage = OSContainer::memory_usage_in_bytes()) < 1) {
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory usage failed: " JLONG_FORMAT ", using host value", mem_usage);
++ }
++ }
++
++ if (mem_limit > 0 && mem_usage > 0 ) {
++ avail_mem = mem_limit > mem_usage ? (julong)mem_limit - (julong)mem_usage : 0;
++ if (PrintContainerInfo) {
++ tty->print_cr("available container memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
++ }
++ }
++
+ sysinfo(&si);
+-
+- return (julong)si.freeram * si.mem_unit;
++ avail_mem = (julong)si.freeram * si.mem_unit;
++ if (Verbose) {
++ tty->print_cr("available memory: " JULONG_FORMAT, avail_mem);
++ }
++ return avail_mem;
+ }
+
+ julong os::physical_memory() {
+- return Linux::physical_memory();
++ jlong phys_mem = 0;
++ if (OSContainer::is_containerized()) {
++ jlong mem_limit;
++ if ((mem_limit = OSContainer::memory_limit_in_bytes()) > 0) {
++ if (PrintContainerInfo) {
++ tty->print_cr("total container memory: " JLONG_FORMAT, mem_limit);
++ }
++ return mem_limit;
++ }
++
++ if (PrintContainerInfo) {
++ tty->print_cr("container memory limit %s: " JLONG_FORMAT ", using host value",
++ mem_limit == OSCONTAINER_ERROR ? "failed" : "unlimited", mem_limit);
++ }
++ }
++
++ phys_mem = Linux::physical_memory();
++ if (Verbose) {
++ tty->print_cr("total system memory: " JLONG_FORMAT, phys_mem);
++ }
++ return phys_mem;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -2129,6 +2179,8 @@
+ os::Posix::print_load_average(st);
+
+ os::Linux::print_full_memory_info(st);
++
++ os::Linux::print_container_info(st);
+ }
+
+ // Try to identify popular distros.
+@@ -2194,6 +2246,57 @@
+ st->cr();
+ }
+
++void os::Linux::print_container_info(outputStream* st) {
++if (!OSContainer::is_containerized()) {
++ return;
++ }
++
++ st->print("container (cgroup) information:\n");
++
++ const char *p_ct = OSContainer::container_type();
++ st->print("container_type: %s\n", p_ct != NULL ? p_ct : "failed");
++
++ char *p = OSContainer::cpu_cpuset_cpus();
++ st->print("cpu_cpuset_cpus: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ p = OSContainer::cpu_cpuset_memory_nodes();
++ st->print("cpu_memory_nodes: %s\n", p != NULL ? p : "failed");
++ free(p);
++
++ int i = OSContainer::active_processor_count();
++ if (i > 0) {
++ st->print("active_processor_count: %d\n", i);
++ } else {
++ st->print("active_processor_count: failed\n");
++ }
++
++ i = OSContainer::cpu_quota();
++ st->print("cpu_quota: %d\n", i);
++
++ i = OSContainer::cpu_period();
++ st->print("cpu_period: %d\n", i);
++
++ i = OSContainer::cpu_shares();
++ st->print("cpu_shares: %d\n", i);
++
++ jlong j = OSContainer::memory_limit_in_bytes();
++ st->print("memory_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_and_swap_limit_in_bytes();
++ st->print("memory_and_swap_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::memory_soft_limit_in_bytes();
++ st->print("memory_soft_limit_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_usage_in_bytes();
++ st->print("memory_usage_in_bytes: " JLONG_FORMAT "\n", j);
++
++ j = OSContainer::OSContainer::memory_max_usage_in_bytes();
++ st->print("memory_max_usage_in_bytes: " JLONG_FORMAT "\n", j);
++ st->cr();
++}
++
+ void os::print_memory_info(outputStream* st) {
+
+ st->print("Memory:");
+@@ -4966,6 +5069,10 @@
+ }
+ }
+
++void os::pd_init_container_support() {
++ OSContainer::init();
++}
++
+ // this is called _after_ the global arguments have been parsed
+ jint os::init_2(void)
+ {
+@@ -5146,7 +5253,7 @@
+ // sched_getaffinity gives an accurate answer as it accounts for cpusets.
+ // If anything goes wrong we fallback to returning the number of online
+ // processors - which can be greater than the number available to the process.
+-int os::active_processor_count() {
++int os::Linux::active_processor_count() {
+ cpu_set_t cpus; // can represent at most 1024 (CPU_SETSIZE) processors
+ int cpus_size = sizeof(cpu_set_t);
+ int cpu_count = 0;
+@@ -5164,10 +5271,48 @@
+ "which may exceed available processors", strerror(errno), cpu_count);
+ }
+
+- assert(cpu_count > 0 && cpu_count <= processor_count(), "sanity check");
++ assert(cpu_count > 0 && cpu_count <= os::processor_count(), "sanity check");
+ return cpu_count;
+ }
+
++// Determine the active processor count from one of
++// three different sources:
++//
++// 1. User option -XX:ActiveProcessorCount
++// 2. kernel os calls (sched_getaffinity or sysconf(_SC_NPROCESSORS_ONLN)
++// 3. extracted from cgroup cpu subsystem (shares and quotas)
++//
++// Option 1, if specified, will always override.
++// If the cgroup subsystem is active and configured, we
++// will return the min of the cgroup and option 2 results.
++// This is required since tools, such as numactl, that
++// alter cpu affinity do not update cgroup subsystem
++// cpuset configuration files.
++int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
++ int active_cpus;
++ if (OSContainer::is_containerized()) {
++ active_cpus = OSContainer::active_processor_count();
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: determined by OSContainer: %d",
++ active_cpus);
++ }
++ } else {
++ active_cpus = os::Linux::active_processor_count();
++ }
++
++ return active_cpus;
++}
++
+ void os::set_native_thread_name(const char *name) {
+ // Not yet implemented.
+ return;
+diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.hpp
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+@@ -35,6 +35,7 @@
+
+ class Linux {
+ friend class os;
++ friend class OSContainer;
+ friend class TestReserveMemorySpecial;
+
+ // For signal-chaining
+@@ -79,6 +80,9 @@
+
+ static julong available_memory();
+ static julong physical_memory() { return _physical_memory; }
++ static void set_physical_memory(julong phys_mem) { _physical_memory = phys_mem; }
++ static int active_processor_count();
++
+ static void initialize_system_info();
+
+ static int commit_memory_impl(char* addr, size_t bytes, bool exec);
+@@ -116,6 +120,7 @@
+ static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
+
+ static void print_full_memory_info(outputStream* st);
++ static void print_container_info(outputStream* st);
+ static void print_distro_info(outputStream* st);
+ static void print_libversion_info(outputStream* st);
+
+diff --git openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+--- openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp
+@@ -357,6 +357,16 @@
+ }
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (Verbose) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ int online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ pid_t pid = getpid();
+ psetid_t pset = PS_NONE;
+diff --git openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+--- openjdk.orig/hotspot/src/os/windows/vm/os_windows.cpp
++++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp
+@@ -716,6 +716,16 @@
+ #endif
+
+ int os::active_processor_count() {
++ // User has overridden the number of active processors
++ if (ActiveProcessorCount > 0) {
++ if (PrintActiveCpus) {
++ tty->print_cr("active_processor_count: "
++ "active processor count set by user : %d",
++ ActiveProcessorCount);
++ }
++ return ActiveProcessorCount;
++ }
++
+ DWORD_PTR lpProcessAffinityMask = 0;
+ DWORD_PTR lpSystemAffinityMask = 0;
+ int proc_count = processor_count();
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -1801,20 +1801,34 @@
+ }
+ }
+
++ // Convert Fraction to Precentage values
++ if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MaxRAMFraction))
++ MaxRAMPercentage = 100.0 / MaxRAMFraction;
++
++ if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
++ !FLAG_IS_DEFAULT(MinRAMFraction))
++ MinRAMPercentage = 100.0 / MinRAMFraction;
++
++ if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
++ !FLAG_IS_DEFAULT(InitialRAMFraction))
++ InitialRAMPercentage = 100.0 / InitialRAMFraction;
++
+ // If the maximum heap size has not been set with -Xmx,
+ // then set it as fraction of the size of physical memory,
+ // respecting the maximum and minimum sizes of the heap.
+ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- julong reasonable_max = phys_mem / MaxRAMFraction;
+-
+- if (phys_mem <= MaxHeapSize * MinRAMFraction) {
++ julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
++ const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
++ if (reasonable_min < MaxHeapSize) {
+ // Small physical memory, so use a minimum fraction of it for the heap
+- reasonable_max = phys_mem / MinRAMFraction;
++ reasonable_max = reasonable_min;
+ } else {
+ // Not-small physical memory, so require a heap at least
+ // as large as MaxHeapSize
+ reasonable_max = MAX2(reasonable_max, (julong)MaxHeapSize);
+ }
++
+ if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
+ // Limit the heap size to ErgoHeapSizeLimit
+ reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
+@@ -1856,7 +1870,7 @@
+ reasonable_minimum = limit_by_allocatable_memory(reasonable_minimum);
+
+ if (InitialHeapSize == 0) {
+- julong reasonable_initial = phys_mem / InitialRAMFraction;
++ julong reasonable_initial = (julong)((phys_mem * InitialRAMPercentage) / 100);
+
+ reasonable_initial = MAX3(reasonable_initial, reasonable_minimum, (julong)min_heap_size());
+ reasonable_initial = MIN2(reasonable_initial, (julong)MaxHeapSize);
+@@ -1881,6 +1895,94 @@
+ }
+ }
+
++// This option inspects the machine and attempts to set various
++// parameters to be optimal for long-running, memory allocation
++// intensive jobs. It is intended for machines with large
++// amounts of cpu and memory.
++jint Arguments::set_aggressive_heap_flags() {
++ // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
++ // VM, but we may not be able to represent the total physical memory
++ // available (like having 8gb of memory on a box but using a 32bit VM).
++ // Thus, we need to make sure we're using a julong for intermediate
++ // calculations.
++ julong initHeapSize;
++ julong total_memory = os::physical_memory();
++
++ if (total_memory < (julong) 256 * M) {
++ jio_fprintf(defaultStream::error_stream(),
++ "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
++ vm_exit(1);
++ }
++
++ // The heap size is half of available memory, or (at most)
++ // all of possible memory less 160mb (leaving room for the OS
++ // when using ISM). This is the maximum; because adaptive sizing
++ // is turned on below, the actual space used may be smaller.
++
++ initHeapSize = MIN2(total_memory / (julong) 2,
++ total_memory - (julong) 160 * M);
++
++ initHeapSize = limit_by_allocatable_memory(initHeapSize);
++
++ if (FLAG_IS_DEFAULT(MaxHeapSize)) {
++ FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
++ FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
++ // Currently the minimum size and the initial heap sizes are the same.
++ set_min_heap_size(initHeapSize);
++ }
++ if (FLAG_IS_DEFAULT(NewSize)) {
++ // Make the young generation 3/8ths of the total heap.
++ FLAG_SET_CMDLINE(uintx, NewSize,
++ ((julong) MaxHeapSize / (julong) 8) * (julong) 3);
++ FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
++ }
++
++#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
++ FLAG_SET_DEFAULT(UseLargePages, true);
++#endif
++
++ // Increase some data structure sizes for efficiency
++ FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
++ FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
++ FLAG_SET_CMDLINE(uintx, TLABSize, 256 * K);
++
++ // See the OldPLABSize comment below, but replace 'after promotion'
++ // with 'after copying'. YoungPLABSize is the size of the survivor
++ // space per-gc-thread buffers. The default is 4kw.
++ FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256 * K); // Note: this is in words
++
++ // OldPLABSize is the size of the buffers in the old gen that
++ // UseParallelGC uses to promote live data that doesn't fit in the
++ // survivor spaces. At any given time, there's one for each gc thread.
++ // The default size is 1kw. These buffers are rarely used, since the
++ // survivor spaces are usually big enough. For specjbb, however, there
++ // are occasions when there's lots of live data in the young gen
++ // and we end up promoting some of it. We don't have a definite
++ // explanation for why bumping OldPLABSize helps, but the theory
++ // is that a bigger PLAB results in retaining something like the
++ // original allocation order after promotion, which improves mutator
++ // locality. A minor effect may be that larger PLABs reduce the
++ // number of PLAB allocation events during gc. The value of 8kw
++ // was arrived at by experimenting with specjbb.
++ FLAG_SET_CMDLINE(uintx, OldPLABSize, 8 * K); // Note: this is in words
++
++ // Enable parallel GC and adaptive generation sizing
++ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
++
++ // Encourage steady state memory management
++ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
++
++ // This appears to improve mutator locality
++ FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
++
++ // Get around early Solaris scheduling bug
++ // (affinity vs other jobs on system)
++ // but disallow DR and offlining (5008695).
++ FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
++
++ return JNI_OK;
++}
++
+ // This must be called after ergonomics because we want bytecode rewriting
+ // if the server compiler is used, or if UseSharedSpaces is disabled.
+ void Arguments::set_bytecode_flags() {
+@@ -2644,6 +2746,14 @@
+ return result;
+ }
+
++ // We need to ensure processor and memory resources have been properly
++ // configured - which may rely on arguments we just processed - before
++ // doing the final argument processing. Any argument processing that
++ // needs to know about processor and memory resources must occur after
++ // this point.
++
++ os::init_container_support();
++
+ // Do final processing now that all arguments have been parsed
+ result = finalize_vm_init_args(&scp, scp_assembly_required);
+ if (result != JNI_OK) {
+@@ -3117,94 +3227,6 @@
+ _exit_hook = CAST_TO_FN_PTR(exit_hook_t, option->extraInfo);
+ } else if (match_option(option, "abort", &tail)) {
+ _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo);
+- // -XX:+AggressiveHeap
+- } else if (match_option(option, "-XX:+AggressiveHeap", &tail)) {
+-
+- // This option inspects the machine and attempts to set various
+- // parameters to be optimal for long-running, memory allocation
+- // intensive jobs. It is intended for machines with large
+- // amounts of cpu and memory.
+-
+- // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
+- // VM, but we may not be able to represent the total physical memory
+- // available (like having 8gb of memory on a box but using a 32bit VM).
+- // Thus, we need to make sure we're using a julong for intermediate
+- // calculations.
+- julong initHeapSize;
+- julong total_memory = os::physical_memory();
+-
+- if (total_memory < (julong)256*M) {
+- jio_fprintf(defaultStream::error_stream(),
+- "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
+- vm_exit(1);
+- }
+-
+- // The heap size is half of available memory, or (at most)
+- // all of possible memory less 160mb (leaving room for the OS
+- // when using ISM). This is the maximum; because adaptive sizing
+- // is turned on below, the actual space used may be smaller.
+-
+- initHeapSize = MIN2(total_memory / (julong)2,
+- total_memory - (julong)160*M);
+-
+- initHeapSize = limit_by_allocatable_memory(initHeapSize);
+-
+- if (FLAG_IS_DEFAULT(MaxHeapSize)) {
+- FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
+- FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
+- // Currently the minimum size and the initial heap sizes are the same.
+- set_min_heap_size(initHeapSize);
+- }
+- if (FLAG_IS_DEFAULT(NewSize)) {
+- // Make the young generation 3/8ths of the total heap.
+- FLAG_SET_CMDLINE(uintx, NewSize,
+- ((julong)MaxHeapSize / (julong)8) * (julong)3);
+- FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
+- }
+-
+-#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
+- FLAG_SET_DEFAULT(UseLargePages, true);
+-#endif
+-
+- // Increase some data structure sizes for efficiency
+- FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
+- FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
+- FLAG_SET_CMDLINE(uintx, TLABSize, 256*K);
+-
+- // See the OldPLABSize comment below, but replace 'after promotion'
+- // with 'after copying'. YoungPLABSize is the size of the survivor
+- // space per-gc-thread buffers. The default is 4kw.
+- FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words
+-
+- // OldPLABSize is the size of the buffers in the old gen that
+- // UseParallelGC uses to promote live data that doesn't fit in the
+- // survivor spaces. At any given time, there's one for each gc thread.
+- // The default size is 1kw. These buffers are rarely used, since the
+- // survivor spaces are usually big enough. For specjbb, however, there
+- // are occasions when there's lots of live data in the young gen
+- // and we end up promoting some of it. We don't have a definite
+- // explanation for why bumping OldPLABSize helps, but the theory
+- // is that a bigger PLAB results in retaining something like the
+- // original allocation order after promotion, which improves mutator
+- // locality. A minor effect may be that larger PLABs reduce the
+- // number of PLAB allocation events during gc. The value of 8kw
+- // was arrived at by experimenting with specjbb.
+- FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words
+-
+- // Enable parallel GC and adaptive generation sizing
+- FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+-
+- // Encourage steady state memory management
+- FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+-
+- // This appears to improve mutator locality
+- FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
+-
+- // Get around early Solaris scheduling bug
+- // (affinity vs other jobs on system)
+- // but disallow DR and offlining (5008695).
+- FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
+-
+ } else if (match_option(option, "-XX:+NeverTenure", &tail)) {
+ // The last option must always win.
+ FLAG_SET_CMDLINE(bool, AlwaysTenure, false);
+@@ -3605,6 +3627,15 @@
+ return JNI_ERR;
+ }
+
++ // This must be done after all arguments have been processed
++ // and the container support has been initialized since AggressiveHeap
++ // relies on the amount of total memory available.
++ if (AggressiveHeap) {
++ jint result = set_aggressive_heap_flags();
++ if (result != JNI_OK) {
++ return result;
++ }
++ }
+ // This must be done after all arguments have been processed.
+ // java_compiler() true means set to "NONE" or empty.
+ if (java_compiler() && !xdebug_mode()) {
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.hpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.hpp
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2018, 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
+@@ -365,6 +365,8 @@
+ // Aggressive optimization flags.
+ static void set_aggressive_opts_flags();
+
++ static jint set_aggressive_heap_flags();
++
+ // Argument parsing
+ static void do_pd_flag_adjustments();
+ static bool parse_argument(const char* arg, Flag::Flags origin);
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
+@@ -2076,13 +2076,23 @@
+ product_pd(uint64_t, MaxRAM, \
+ "Real memory size (in bytes) used to set maximum heap size") \
+ \
++ product(bool, AggressiveHeap, false, \
++ "Optimize heap options for long-running memory intensive apps") \
++ \
+ product(uintx, ErgoHeapSizeLimit, 0, \
+ "Maximum ergonomically set heap size (in bytes); zero means use " \
+- "MaxRAM / MaxRAMFraction") \
++ "MaxRAM * MaxRAMPercentage / 100") \
+ \
+ experimental(bool, UseCGroupMemoryLimitForHeap, false, \
+ "Use CGroup memory limit as physical memory limit for heap " \
+- "sizing") \
++ "sizing" \
++ "Deprecated, replaced by container support") \
++ \
++ diagnostic(bool, PrintContainerInfo, false, \
++ "Print container related information") \
++ \
++ diagnostic(bool, PrintActiveCpus, false, \
++ "Print the number of CPUs detected in os::active_processor_count") \
+ \
+ product(uintx, MaxRAMFraction, 4, \
+ "Maximum fraction (1/n) of real memory used for maximum heap " \
+@@ -2099,6 +2109,19 @@
+ product(uintx, InitialRAMFraction, 64, \
+ "Fraction (1/n) of real memory used for initial heap size") \
+ \
++ product(double, MaxRAMPercentage, 25.0, \
++ "Maximum percentage of real memory used for maximum heap size") \
++ \
++ product(double, MinRAMPercentage, 50.0, \
++ "Minimum percentage of real memory used for maximum heap" \
++ "size on systems with small physical memory size") \
++ \
++ product(double, InitialRAMPercentage, 1.5625, \
++ "Percentage of real memory used for initial heap size") \
++ \
++ product(intx, ActiveProcessorCount, -1, \
++ "Specify the CPU count the VM should use and report as active") \
++ \
+ develop(uintx, MaxVirtMemFraction, 2, \
+ "Maximum fraction (1/n) of virtual memory used for ergonomically "\
+ "determining maximum heap size") \
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp
++++ openjdk/hotspot/src/share/vm/runtime/os.hpp
+@@ -152,8 +152,16 @@
+ static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned);
+
+ static void initialize_initial_active_processor_count();
++
++ LINUX_ONLY(static void pd_init_container_support();)
++
+ public:
+ static void init(void); // Called before command line parsing
++
++ static void init_container_support() { // Called during command line parsing.
++ LINUX_ONLY(pd_init_container_support();)
++ }
++
+ static void init_before_ergo(void); // Called after command line parsing
+ // before VM ergonomics processing.
+ static jint init_2(void); // Called after command line parsing
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp openjdk/hotspot/src/share/vm/runtime/thread.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/thread.cpp
++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp
+@@ -3332,6 +3332,7 @@
+ Arguments::init_version_specific_system_properties();
+
+ // Parse arguments
++ // Note: this internally calls os::init_container_support()
+ jint parse_result = Arguments::parse(args);
+ if (parse_result != JNI_OK) return parse_result;
+
diff --git a/8165489-pr3589.patch b/8165489-pr3589.patch
new file mode 100644
index 0000000..1674dec
--- /dev/null
+++ b/8165489-pr3589.patch
@@ -0,0 +1,123 @@
+# HG changeset patch
+# User mdoerr
+# Date 1473159687 -7200
+# Tue Sep 06 13:01:27 2016 +0200
+# Node ID 7f6e1069a5719c8908b53774d3560ce851c7cd70
+# Parent b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Summary: Add missing barrier, sharing code with Unsafe_GetObject.
+Reviewed-by: kbarrett, mgerdin, pliden, tschatzl
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp
+@@ -199,37 +199,40 @@
+
+ // Get/SetObject must be special-cased, since it works with handles.
+
++// We could be accessing the referent field in a reference
++// object. If G1 is enabled then we need to register non-null
++// referent with the SATB barrier.
++
++#if INCLUDE_ALL_GCS
++static bool is_java_lang_ref_Reference_access(oop o, jlong offset) {
++ if (offset == java_lang_ref_Reference::referent_offset && o != NULL) {
++ Klass* k = o->klass();
++ if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
++ assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
++ return true;
++ }
++ }
++ return false;
++}
++#endif
++
++static void ensure_satb_referent_alive(oop o, jlong offset, oop v) {
++#if INCLUDE_ALL_GCS
++ if (UseG1GC && v != NULL && is_java_lang_ref_Reference_access(o, offset)) {
++ G1SATBCardTableModRefBS::enqueue(v);
++ }
++#endif
++}
++
+ // The xxx140 variants for backward compatibility do not allow a full-width offset.
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ if (obj == NULL) THROW_0(vmSymbols::java_lang_NullPointerException());
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register a non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset) {
+- oop o = JNIHandles::resolve_non_null(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset, jobject x_h))
+@@ -262,32 +265,10 @@
+ UNSAFE_ENTRY(jobject, Unsafe_GetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset))
+ UnsafeWrapper("Unsafe_GetObject");
+ GET_OOP_FIELD(obj, offset, v)
+- jobject ret = JNIHandles::make_local(env, v);
+-#if INCLUDE_ALL_GCS
+- // We could be accessing the referent field in a reference
+- // object. If G1 is enabled then we need to register non-null
+- // referent with the SATB barrier.
+- if (UseG1GC) {
+- bool needs_barrier = false;
+
+- if (ret != NULL) {
+- if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) {
+- oop o = JNIHandles::resolve(obj);
+- Klass* k = o->klass();
+- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+- needs_barrier = true;
+- }
+- }
+- }
++ ensure_satb_referent_alive(p, offset, v);
+
+- if (needs_barrier) {
+- oop referent = JNIHandles::resolve(ret);
+- G1SATBCardTableModRefBS::enqueue(referent);
+- }
+- }
+-#endif // INCLUDE_ALL_GCS
+- return ret;
++ return JNIHandles::make_local(env, v);
+ UNSAFE_END
+
+ UNSAFE_ENTRY(void, Unsafe_SetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject x_h))
+@@ -312,6 +293,9 @@
+ } else {
+ (void)const_cast<oop&>(v = *(volatile oop*) addr);
+ }
++
++ ensure_satb_referent_alive(p, offset, v);
++
+ OrderAccess::acquire();
+ return JNIHandles::make_local(env, v);
+ UNSAFE_END
diff --git a/8165852-pr3468.patch b/8165852-pr3468.patch
new file mode 100644
index 0000000..6a9f643
--- /dev/null
+++ b/8165852-pr3468.patch
@@ -0,0 +1,21 @@
+--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
+@@ -74,8 +74,16 @@
+ } catch (UnixException x) {
+ x.rethrowAsIOException(parent);
+ }
+- if (attrs.dev() != dev())
+- break;
++ if (attrs.dev() != dev()) {
++
++ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
++ // find the file system even when not in /etc/mtab)
++ byte[] dir = path.asByteArray();
++ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
++ if (Arrays.equals(dir, entry.dir()))
++ return entry;
++ }
++ }
+ path = parent;
+ parent = parent.getParent();
+ }
diff --git a/8171000-pr3542-rh1402819.patch b/8171000-pr3542-rh1402819.patch
new file mode 100644
index 0000000..d831aa9
--- /dev/null
+++ b/8171000-pr3542-rh1402819.patch
@@ -0,0 +1,121 @@
+# HG changeset patch
+# User kaddepalli
+# Date 1517818481 -19800
+# Mon Feb 05 13:44:41 2018 +0530
+# Node ID b77308735540644d4710244e3c88865067f2905a
+# Parent 39bfc94b1f4265b645c2970a58389acc779dafe9
+8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Reviewed-by: serb, mhalder
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -394,77 +394,48 @@
+ XRectangle bbox; /* bounding box of grabbed area */
+ list_ptr regions;/* list of regions to read from */
+ {
+- image_region_type *reg;
+- int32_t dst_x, dst_y; /* where in pixmap to write (UL) */
+- int32_t diff;
+-
+- XImage *reg_image,*ximage ;
+- int32_t srcRect_x,srcRect_y,srcRect_width,srcRect_height ;
+- int32_t rem ;
+- int32_t bytes_per_line;
+- int32_t bitmap_unit;
+-
+- bitmap_unit = sizeof (long);
+- if (format == ZPixmap)
+- bytes_per_line = width*depth/8;
+- else
+- bytes_per_line = width/8;
+-
+-
+- /* Find out how many more bytes are required for padding so that
+- ** bytes per scan line will be multiples of bitmap_unit bits */
+- if (format == ZPixmap) {
+- rem = (bytes_per_line*8)%bitmap_unit;
+- if (rem)
+- bytes_per_line += (rem/8 + 1);
+- }
++ XImage *ximage ;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+
+- bytes_per_line = ximage->bytes_per_line;
+-
+- if (format == ZPixmap)
+- ximage->data = malloc(height*bytes_per_line);
+- else
+- ximage->data = malloc(height*bytes_per_line*depth);
+-
++ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (reg = (image_region_type *) first_in_list( regions); reg;
++ for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+- int32_t rect;
+- struct my_XRegion *vis_reg;
+- vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (rect = 0;
+- rect < vis_reg->numRects;
+- rect++)
++ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
++ for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
+ {
+- /** ------------------------------------------------------------------------
+- Intersect bbox with visible part of region giving src rect & output
+- location. Width is the min right side minus the max left side.
+- Similar for height. Offset src rect so x,y are relative to
+- origin of win, not the root-relative visible rect of win.
+- ------------------------------------------------------------------------ **/
+- srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
+- - MAX( vis_reg->rects[rect].x1, bbox.x);
++ /** ------------------------------------------------------------------------
++ Intersect bbox with visible part of region giving src rect & output
++ location. Width is the min right side minus the max left side.
++ Similar for height. Offset src rect so x,y are relative to
++ origin of win, not the root-relative visible rect of win.
++ ------------------------------------------------------------------------ **/
++ int32_t srcRect_width = MIN( vis_reg->rects[rect].x2, bbox.width + bbox.x)
++ - MAX( vis_reg->rects[rect].x1, bbox.x);
++
++ int32_t srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
++ - MAX( vis_reg->rects[rect].y1, bbox.y);
+
+- srcRect_height = MIN( vis_reg->rects[rect].y2, bbox.height + bbox.y)
+- - MAX( vis_reg->rects[rect].y1, bbox.y);
++ int32_t diff = bbox.x - vis_reg->rects[rect].x1;
++ int32_t srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
++ int32_t dst_x = MAX( 0, -diff) ;
+
+- diff = bbox.x - vis_reg->rects[rect].x1;
+- srcRect_x = MAX( 0, diff) + (vis_reg->rects[rect].x1 - reg->x_rootrel - reg->border);
+- dst_x = MAX( 0, -diff) ;
+- diff = bbox.y - vis_reg->rects[rect].y1;
+- srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
+- dst_y = MAX( 0, -diff) ;
+- reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
+- (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
+- TransferImage(disp,reg_image,srcRect_width,
+- srcRect_height,reg,ximage,dst_x,dst_y) ;
+- XDestroyImage(reg_image);
+- }
++ diff = bbox.y - vis_reg->rects[rect].y1;
++ int32_t srcRect_y = MAX( 0, diff) + (vis_reg->rects[rect].y1 - reg->y_rootrel - reg->border);
++ int32_t dst_y = MAX( 0, -diff) ;
++ XImage* reg_image = XGetImage(disp,reg->win,srcRect_x,srcRect_y,
++ (uint32_t) srcRect_width, (uint32_t) srcRect_height,AllPlanes,format) ;
++
++ if (reg_image) {
++ TransferImage(disp,reg_image,srcRect_width,
++ srcRect_height,reg,ximage,dst_x,dst_y) ;
++ XDestroyImage(reg_image);
++ }
++ }
+ }
+ return ximage ;
+ }
diff --git a/8184309-pr3596.patch b/8184309-pr3596.patch
new file mode 100644
index 0000000..00b6125
--- /dev/null
+++ b/8184309-pr3596.patch
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User ysuenaga
+# Date 1527498573 -3600
+# Mon May 28 10:09:33 2018 +0100
+# Node ID ef176cb429c49d1c330d9575938f66b04e3fb730
+# Parent 6915dc9ae18cce5625d3a3fc74b37da70a5b4215
+8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Reviewed-by: kbarrett, vlivanov
+
+diff --git openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp openjdk/hotspot/src/share/vm/code/dependencies.cpp
+--- openjdk.orig/hotspot/src/share/vm/code/dependencies.cpp
++++ openjdk/hotspot/src/share/vm/code/dependencies.cpp
+@@ -525,7 +525,7 @@
+ xtty->object("x", arg.metadata_value());
+ }
+ } else {
+- char xn[10]; sprintf(xn, "x%d", j);
++ char xn[12]; sprintf(xn, "x%d", j);
+ if (arg.is_oop()) {
+ xtty->object(xn, arg.oop_value());
+ } else {
diff --git a/8185723-pr3553.patch b/8185723-pr3553.patch
new file mode 100644
index 0000000..f8ee50a
--- /dev/null
+++ b/8185723-pr3553.patch
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User aph
+# Date 1501690960 -3600
+# Wed Aug 02 17:22:40 2017 +0100
+# Node ID 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+# Parent 4e2adbc3d2b512f6b2bf318d2db60f4d1903f8c7
+8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Reviewed-by: roland
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -38,10 +38,10 @@
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+ #if defined(PPC32)
+ double tmp;
+- asm volatile ("lfd %0, 0(%1)\n"
+- "stfd %0, 0(%2)\n"
+- : "=f"(tmp)
+- : "b"(src), "b"(dst));
++ asm volatile ("lfd %0, %2\n"
++ "stfd %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8186461-pr3557.patch b/8186461-pr3557.patch
new file mode 100644
index 0000000..cc8020c
--- /dev/null
+++ b/8186461-pr3557.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User glaubitz
+# Date 1524889690 -3600
+# Sat Apr 28 05:28:10 2018 +0100
+# Node ID be1379a186ba527b32c93a83e04c9600735fe44b
+# Parent 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
+8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -36,12 +36,18 @@
+
+ // Atomically copy 64 bits of data
+ static void atomic_copy64(volatile void *src, volatile void *dst) {
+-#if defined(PPC32)
++#if defined(PPC32) && !defined(__SPE__)
+ double tmp;
+ asm volatile ("lfd %0, %2\n"
+ "stfd %0, %1\n"
+ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
+ : "Q"(*(volatile double*)src));
++#elif defined(PPC32) && defined(__SPE__)
++ long tmp;
++ asm volatile ("evldd %0, %2\n"
++ "evstdd %0, %1\n"
++ : "=&r"(tmp), "=Q"(*(volatile long*)dst)
++ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+ asm volatile ("ld %0, 0(%1)\n"
diff --git a/8196516-pr3523-rh1538767.patch b/8196516-pr3523-rh1538767.patch
new file mode 100644
index 0000000..b321611
--- /dev/null
+++ b/8196516-pr3523-rh1538767.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1523360781 -7200
+# Tue Apr 10 13:46:21 2018 +0200
+# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
+# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
+8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
+Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
+
+diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
+--- a/make/lib/Awt2dLibraries.gmk
++++ b/make/lib/Awt2dLibraries.gmk
+@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+ BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
+ endif
+
++# LDFLAGS clarification:
++# Filter relevant linker flags disallowing unresolved symbols as we cannot
++# build-time decide to which library to link against (libawt_headless or
++# libawt_xawt). See JDK-8196516 for details.
+ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ LIBRARY := fontmanager, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
+ CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
+ -DCC_NOEX, \
+ MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
+- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
++ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
++ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/8197429-pr3456-rh1536622.patch b/8197429-pr3456-rh1536622.patch
deleted file mode 100644
index fc60cd3..0000000
--- a/8197429-pr3456-rh1536622.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -674,6 +674,10 @@
- }
- }
-
-+void os::Linux::expand_stack_to(address bottom) {
-+ _expand_stack_to(bottom);
-+}
-+
- bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
- assert(t!=NULL, "just checking");
- assert(t->osthread()->expanding_stack(), "expand should be set");
-diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -245,6 +245,8 @@
- static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
-
- private:
-+ static void expand_stack_to(address bottom);
-+
- 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);
-diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2018, 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
-@@ -892,6 +892,25 @@
- void os::workaround_expand_exec_shield_cs_limit() {
- #if defined(IA32)
- size_t page_size = os::vm_page_size();
-+
-+ /*
-+ * JDK-8197429
-+ *
-+ * Expand the stack mapping to the end of the initial stack before
-+ * attempting to install the codebuf. This is needed because newer
-+ * Linux kernels impose a distance of a megabyte between stack
-+ * memory and other memory regions. If we try to install the
-+ * codebuf before expanding the stack the installation will appear
-+ * to succeed but we'll get a segfault later if we expand the stack
-+ * in Java code.
-+ *
-+ */
-+ if (os::Linux::is_initial_thread()) {
-+ address limit = Linux::initial_thread_stack_bottom();
-+ limit += (StackYellowPages + StackRedPages) * page_size;
-+ os::Linux::expand_stack_to(limit);
-+ }
-+
- /*
- * Take the highest VA the OS will give us and exec
- *
-@@ -910,6 +929,16 @@
- char* hint = (char*) (Linux::initial_thread_stack_bottom() -
- ((StackYellowPages + StackRedPages + 1) * page_size));
- char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+
-+ if (codebuf == NULL) {
-+ // JDK-8197429: There may be a stack gap of one megabyte between
-+ // the limit of the stack and the nearest memory region: this is a
-+ // Linux kernel workaround for CVE-2017-1000364. If we failed to
-+ // map our codebuf, try again at an address one megabyte lower.
-+ hint -= 1 * M;
-+ codebuf = os::attempt_reserve_memory_at(page_size, hint);
-+ }
-+
- if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
- return; // No matter, we tried, best effort.
- }
diff --git a/8197429-pr3546-rh1536622.patch b/8197429-pr3546-rh1536622.patch
new file mode 100644
index 0000000..fc60cd3
--- /dev/null
+++ b/8197429-pr3546-rh1536622.patch
@@ -0,0 +1,93 @@
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -674,6 +674,10 @@
+ }
+ }
+
++void os::Linux::expand_stack_to(address bottom) {
++ _expand_stack_to(bottom);
++}
++
+ bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
+ assert(t!=NULL, "just checking");
+ assert(t->osthread()->expanding_stack(), "expand should be set");
+diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -245,6 +245,8 @@
+ static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime);
+
+ private:
++ static void expand_stack_to(address bottom);
++
+ 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);
+diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2018, 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
+@@ -892,6 +892,25 @@
+ void os::workaround_expand_exec_shield_cs_limit() {
+ #if defined(IA32)
+ size_t page_size = os::vm_page_size();
++
++ /*
++ * JDK-8197429
++ *
++ * Expand the stack mapping to the end of the initial stack before
++ * attempting to install the codebuf. This is needed because newer
++ * Linux kernels impose a distance of a megabyte between stack
++ * memory and other memory regions. If we try to install the
++ * codebuf before expanding the stack the installation will appear
++ * to succeed but we'll get a segfault later if we expand the stack
++ * in Java code.
++ *
++ */
++ if (os::Linux::is_initial_thread()) {
++ address limit = Linux::initial_thread_stack_bottom();
++ limit += (StackYellowPages + StackRedPages) * page_size;
++ os::Linux::expand_stack_to(limit);
++ }
++
+ /*
+ * Take the highest VA the OS will give us and exec
+ *
+@@ -910,6 +929,16 @@
+ char* hint = (char*) (Linux::initial_thread_stack_bottom() -
+ ((StackYellowPages + StackRedPages + 1) * page_size));
+ char* codebuf = os::attempt_reserve_memory_at(page_size, hint);
++
++ if (codebuf == NULL) {
++ // JDK-8197429: There may be a stack gap of one megabyte between
++ // the limit of the stack and the nearest memory region: this is a
++ // Linux kernel workaround for CVE-2017-1000364. If we failed to
++ // map our codebuf, try again at an address one megabyte lower.
++ hint -= 1 * M;
++ codebuf = os::attempt_reserve_memory_at(page_size, hint);
++ }
++
+ if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) {
+ return; // No matter, we tried, best effort.
+ }
diff --git a/8197546-pr3542-rh1402819.patch b/8197546-pr3542-rh1402819.patch
new file mode 100644
index 0000000..ba712ad
--- /dev/null
+++ b/8197546-pr3542-rh1402819.patch
@@ -0,0 +1,35 @@
+# HG changeset patch
+# User prr
+# Date 1518454604 28800
+# Mon Feb 12 08:56:44 2018 -0800
+# Node ID 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+# Parent b77308735540644d4710244e3c88865067f2905a
+8197546: Fix for 8171000 breaks Solaris + Linux builds
+Reviewed-by: serb, jdv
+
+diff --git openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/multiVis.c
++++ openjdk/jdk/src/solaris/native/sun/awt/multiVis.c
+@@ -395,6 +395,8 @@
+ list_ptr regions;/* list of regions to read from */
+ {
+ XImage *ximage ;
++ image_region_type* reg;
++ int32_t rect;
+
+ ximage = XCreateImage(disp,fakeVis,(uint32_t) depth,format,0,NULL,
+ (uint32_t)width,(uint32_t)height,8,0);
+@@ -402,11 +404,11 @@
+ ximage->data = calloc(ximage->bytes_per_line*height*((format==ZPixmap)? 1 : depth), sizeof(char));
+ ximage->bits_per_pixel = depth; /** Valid only if format is ZPixmap ***/
+
+- for (image_region_type* reg = (image_region_type *) first_in_list( regions); reg;
++ for (reg = (image_region_type *) first_in_list( regions); reg;
+ reg = (image_region_type *) next_in_list( regions))
+ {
+ struct my_XRegion *vis_reg = (struct my_XRegion *)(reg->visible_region);
+- for (int32_t rect = 0; rect < vis_reg->numRects; rect++)
++ for (rect = 0; rect < vis_reg->numRects; rect++)
+ {
+ /** ------------------------------------------------------------------------
+ Intersect bbox with visible part of region giving src rect & output
diff --git a/8197981-pr3548.patch b/8197981-pr3548.patch
new file mode 100644
index 0000000..5f6d9ce
--- /dev/null
+++ b/8197981-pr3548.patch
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User andrew
+# Date 1518667645 0
+# Thu Feb 15 04:07:25 2018 +0000
+# Node ID 1d35411eb7bdf16191e220ffe3b1dc4d5d0c6041
+# Parent 999983606f5c61b093c6f6316a7b26c4cd4ca79e
+8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Summary: Fix issue discovered by -Wreturn-type on systems without LP64.
+Reviewed-by: aph
+
+diff --git openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
++++ openjdk/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
+@@ -457,6 +457,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+@@ -498,6 +498,7 @@
+ long long unsigned int oldval,
+ long long unsigned int newval) {
+ ShouldNotCallThis();
++ return 0;
+ }
+ };
+ #endif // !_LP64
diff --git a/8199936-pr3533-workaround.patch b/8199936-pr3533-workaround.patch
new file mode 100644
index 0000000..900e0c3
--- /dev/null
+++ b/8199936-pr3533-workaround.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User andrew
+# Date 1526122977 -3600
+# Sat May 12 12:02:57 2018 +0100
+# Node ID 00ccc73498628a51a45301322e64ce2ad06e49be
+# Parent aecf9f48f7b5c6148b62713a6b746301435b57cc
+PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations
+Summary: Enable -mstackrealign on x86 Linux as well as x86 Mac OS X
+
+diff --git openjdk.orig///common/autoconf/hotspot-spec.gmk.in openjdk///common/autoconf/hotspot-spec.gmk.in
+--- openjdk.orig///common/autoconf/hotspot-spec.gmk.in
++++ openjdk///common/autoconf/hotspot-spec.gmk.in
+@@ -110,7 +110,8 @@
+ RC:=@HOTSPOT_RC@
+
+ EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \
+- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \
++ $(REALIGN_CFLAG)
+ EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
+ EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
+
+diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in
+--- openjdk.orig///common/autoconf/spec.gmk.in
++++ openjdk///common/autoconf/spec.gmk.in
+@@ -333,6 +333,7 @@
+
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@
+ NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@
++REALIGN_CFLAG=@REALIGN_CFLAG@
+ CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+
+ CXX:=@FIXPATH@ @CCACHE@ @CXX@
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -796,20 +796,16 @@
+ #
+ # NOTE: check for -mstackrealign needs to be below potential addition of -m32
+ #
+- if test "x$OPENJDK_TARGET_CPU_BITS" = x32 && test "x$OPENJDK_TARGET_OS" = xmacosx; then
++ if test "x$OPENJDK_TARGET_CPU" = xx86 && test "x$OPENJDK_TARGET_OS" = xmacosx -o \
++ "x$OPENJDK_TARGET_OS" = xlinux; then
+ # On 32-bit MacOSX the OS requires C-entry points to be 16 byte aligned.
+- # While waiting for a better solution, the current workaround is to use -mstackrealign.
+- CFLAGS="$CFLAGS -mstackrealign"
+- AC_MSG_CHECKING([if 32-bit compiler supports -mstackrealign])
+- AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
+- [
+- AC_MSG_RESULT([yes])
+- ],
+- [
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+- ]
++ # While waiting for a better solution, the current workaround is to use -mstackrealign
++ # This is also required on Linux systems which use libraries compiled with SSE instructions
++ REALIGN_CFLAG="-mstackrealign"
++ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
++ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ AC_SUBST([REALIGN_CFLAG])
+ fi
+
+ C_FLAG_DEPS="-MMD -MF"
diff --git a/8201509-pr3579.patch b/8201509-pr3579.patch
new file mode 100644
index 0000000..132c225
--- /dev/null
+++ b/8201509-pr3579.patch
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User mbalao
+# Date 1525317412 -3600
+# Thu May 03 04:16:52 2018 +0100
+# Node ID de79964656fc652f2085dac4fe99bcc128b5a3b1
+# Parent ffd5260fe5adcb26f87a14f1aaaf3e1a075d712a
+8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Summary: The inline assembler for the S390 (S390 and not _LP64) has src and dst reversed thereby corrupting data
+Reviewed-by: shade
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2010 Red Hat, Inc.
++ * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -50,10 +50,10 @@
+ : "Q"(*(volatile long*)src));
+ #elif defined(S390) && !defined(_LP64)
+ double tmp;
+- asm volatile ("ld %0, 0(%1)\n"
+- "std %0, 0(%2)\n"
+- : "=r"(tmp)
+- : "a"(src), "a"(dst));
++ asm volatile ("ld %0, %2\n"
++ "std %0, %1\n"
++ : "=&f"(tmp), "=Q"(*(volatile double*)dst)
++ : "Q"(*(volatile double*)src));
+ #elif defined(__ARM_ARCH_7A__)
+ jlong tmp;
+ asm volatile ("ldrexd %0, [%1]\n"
diff --git a/8203182-pr3603-rh1568033.patch b/8203182-pr3603-rh1568033.patch
new file mode 100644
index 0000000..031a60c
--- /dev/null
+++ b/8203182-pr3603-rh1568033.patch
@@ -0,0 +1,131 @@
+# HG changeset patch
+# User igerasim
+# Date 1528992969 25200
+# Thu Jun 14 09:16:09 2018 -0700
+# Node ID d9b0b4bd2526818afa73b60da77403245554caa8
+# Parent 1f4b038b9550afaf88a70cee4cf9c1422ecd86d6
+8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Summary: Ensure session is properly released in P11Signature class
+Reviewed-by: valeriep
+Contributed-by: Martin Balao <mbalao(a)redhat.com>
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java
+@@ -309,47 +309,51 @@
+ session = token.killSession(session);
+ return;
+ }
+- // "cancel" operation by finishing it
+- // XXX make sure all this always works correctly
+- if (mode == M_SIGN) {
+- try {
+- if (type == T_UPDATE) {
+- token.p11.C_SignFinal(session.id(), 0);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
++ try {
++ // "cancel" operation by finishing it
++ // XXX make sure all this always works correctly
++ if (mode == M_SIGN) {
++ try {
++ if (type == T_UPDATE) {
++ token.p11.C_SignFinal(session.id(), 0);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Sign(session.id(), digest);
+ }
+- token.p11.C_Sign(session.id(), digest);
++ } catch (PKCS11Exception e) {
++ throw new ProviderException("cancel failed", e);
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
++ } else { // M_VERIFY
++ try {
++ byte[] signature;
++ if (keyAlgorithm.equals("DSA")) {
++ signature = new byte[40];
++ } else {
++ signature = new byte[(p11Key.length() + 7) >> 3];
++ }
++ if (type == T_UPDATE) {
++ token.p11.C_VerifyFinal(session.id(), signature);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
++ }
++ token.p11.C_Verify(session.id(), digest, signature);
++ }
++ } catch (PKCS11Exception e) {
++ // will fail since the signature is incorrect
++ // XXX check error code
++ }
+ }
+- } else { // M_VERIFY
+- try {
+- byte[] signature;
+- if (keyAlgorithm.equals("DSA")) {
+- signature = new byte[40];
+- } else {
+- signature = new byte[(p11Key.length() + 7) >> 3];
+- }
+- if (type == T_UPDATE) {
+- token.p11.C_VerifyFinal(session.id(), signature);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Verify(session.id(), digest, signature);
+- }
+- } catch (PKCS11Exception e) {
+- // will fail since the signature is incorrect
+- // XXX check error code
+- }
++ } finally {
++ session = token.releaseSession(session);
+ }
+ }
+
+@@ -368,6 +372,8 @@
+ }
+ initialized = true;
+ } catch (PKCS11Exception e) {
++ // release session when initialization failed
++ session = token.releaseSession(session);
+ throw new ProviderException("Initialization failed", e);
+ }
+ if (bytesProcessed != 0) {
+@@ -529,6 +535,8 @@
+ }
+ bytesProcessed += len;
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException(e);
+ }
+ break;
+@@ -576,6 +584,8 @@
+ bytesProcessed += len;
+ byteBuffer.position(ofs + len);
+ } catch (PKCS11Exception e) {
++ initialized = false;
++ session = token.releaseSession(session);
+ throw new ProviderException("Update failed", e);
+ }
+ break;
diff --git a/8206406-pr3610-rh1597825.patch b/8206406-pr3610-rh1597825.patch
new file mode 100644
index 0000000..0f38126
--- /dev/null
+++ b/8206406-pr3610-rh1597825.patch
@@ -0,0 +1,65 @@
+# HG changeset patch
+# User aph
+# Date 1531146945 -3600
+# Mon Jul 09 15:35:45 2018 +0100
+# Node ID 95b72537801cc9946c27ad27f07e3f0790a21b08
+# Parent f6341f4635dacb56678264d29a88cd052b74036b
+8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Reviewed-by: dholmes
+
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+@@ -34,12 +34,12 @@
+
+ // Implementation of StubCodeDesc
+
+-StubCodeDesc* StubCodeDesc::_list = NULL;
+-int StubCodeDesc::_count = 0;
++StubCodeDesc* volatile StubCodeDesc::_list = NULL;
++int StubCodeDesc::_count = 0;
+
+
+ StubCodeDesc* StubCodeDesc::desc_for(address pc) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && !p->contains(pc)) p = p->_next;
+ // p == NULL || p->contains(pc)
+ return p;
+@@ -47,7 +47,7 @@
+
+
+ StubCodeDesc* StubCodeDesc::desc_for_index(int index) {
+- StubCodeDesc* p = _list;
++ StubCodeDesc* p = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ while (p != NULL && p->index() != index) p = p->_next;
+ return p;
+ }
+diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp
+@@ -38,7 +38,7 @@
+
+ class StubCodeDesc: public CHeapObj<mtCode> {
+ protected:
+- static StubCodeDesc* _list; // the list of all descriptors
++ static StubCodeDesc* volatile _list; // the list of all descriptors
+ static int _count; // length of list
+
+ StubCodeDesc* _next; // the next element in the linked list
+@@ -69,13 +69,13 @@
+
+ StubCodeDesc(const char* group, const char* name, address begin) {
+ assert(name != NULL, "no name specified");
+- _next = _list;
++ _next = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
+ _group = group;
+ _name = name;
+ _index = ++_count; // (never zero)
+ _begin = begin;
+ _end = NULL;
+- _list = this;
++ OrderAccess::release_store_ptr(&_list, this);
+ };
+
+ const char* group() const { return _group; }
diff --git a/8206425-hotspot-remove-debuglink.patch b/8206425-hotspot-remove-debuglink.patch
new file mode 100644
index 0000000..adbf1f0
--- /dev/null
+++ b/8206425-hotspot-remove-debuglink.patch
@@ -0,0 +1,73 @@
+# HG changeset patch
+# User sgehwolf
+# Date 1530808022 -7200
+# Thu Jul 05 18:27:02 2018 +0200
+# Node ID 5ba59d58d976db456c4455640111e8107b8d80e8
+# Parent ad057f2e3211cd18bc56550d8a2c400d92ec35b1
+8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Summary: Only add .gnu_debuglink sections when there is some stripping done.
+Reviewed-by: erikj, dholmes
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -57,14 +57,15 @@
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -100,14 +100,15 @@
+ -lthread_db
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -358,14 +358,15 @@
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
++ ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+- ifeq ($(STRIP_POLICY),all_strip)
+ $(QUIETLY) $(STRIP) $@
+ else
+ ifeq ($(STRIP_POLICY),min_strip)
++ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+ $(QUIETLY) $(STRIP) -g $@
++ endif
+ # implied else here is no stripping at all
+- endif
+ endif
+ ifeq ($(ZIP_DEBUGINFO_FILES),1)
+ $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/8207057-pr3613-hotspot-assembler-debuginfo.patch b/8207057-pr3613-hotspot-assembler-debuginfo.patch
new file mode 100644
index 0000000..894596d
--- /dev/null
+++ b/8207057-pr3613-hotspot-assembler-debuginfo.patch
@@ -0,0 +1,20 @@
+--- openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:04:12.497865891 -0400
++++ openjdk/hotspot/make/linux/makefiles/rules.make 2018-08-30 16:06:16.371214049 -0400
+@@ -34,7 +34,7 @@
+ CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
+ CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
+
+-AS.S = $(AS) $(ASFLAGS)
++AS.S = $(AS) -g $(ASFLAGS)
+
+ COMPILE.CC = $(CC_COMPILE) -c
+ GENASM.CC = $(CC_COMPILE) -S
+@@ -169,7 +169,7 @@
+ %.o: %.s
+ @echo Assembling $<
+ $(QUIETLY) $(REMOVE_TARGET)
+- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
++ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+
+ %.s: %.cpp
+ @echo Generating assembly for $<
diff --git a/8207234-dont-add-unnecessary-debug-links.patch b/8207234-dont-add-unnecessary-debug-links.patch
new file mode 100644
index 0000000..9c29e6b
--- /dev/null
+++ b/8207234-dont-add-unnecessary-debug-links.patch
@@ -0,0 +1,77 @@
+--- openjdk/make/common/NativeCompilation.gmk
++++ openjdk/make/common/NativeCompilation.gmk
+@@ -437,29 +437,6 @@
+
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+- ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+- else # not solaris
+- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+- endif # Touch to not retrigger rule on rebuild
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -483,7 +460,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
+ $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
+ endif
+ endif
+ endif
+@@ -522,28 +498,8 @@
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
+ ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+- # empty section headers until a fixed $(OBJCOPY) is available.
+- # An empty section header has sh_addr == 0 and sh_size == 0.
+- # This problem has only been seen on Solaris X64, but we call this tool
+- # on all Solaris builds just in case.
+- #
+- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+- $(RM) $$@
+- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ else # not solaris
+- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
+- $(RM) $$@
+- $(OBJCOPY) --only-keep-debug $$< $$@
+- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ endif
+- $(TOUCH) $$@
+ endif # !windows
+ endif # !macosx
+
+@@ -567,7 +523,6 @@
+ $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
+ $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
+ else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
+- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
+ endif
+ endif
+ endif
diff --git a/PR3183.patch b/PR3183.patch
deleted file mode 100644
index 5a619b4..0000000
--- a/PR3183.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1478057514 0
-# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
-# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
-PR3183: Support Fedora/RHEL system crypto policy
-
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
---- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
-@@ -43,6 +43,9 @@
- * implementation-specific location, which is typically the properties file
- * {@code lib/security/java.security} in the Java installation directory.
- *
-+ * <p>Additional default values of security properties are read from a
-+ * system-specific location, if available.</p>
-+ *
- * @author Benjamin Renaud
- */
-
-@@ -52,6 +55,10 @@
- private static final Debug sdebug =
- Debug.getInstance("properties");
-
-+ /* System property file*/
-+ private static final String SYSTEM_PROPERTIES =
-+ "/etc/crypto-policies/back-ends/java.config";
-+
- /* The java.security properties */
- private static Properties props;
-
-@@ -93,6 +100,7 @@
- if (sdebug != null) {
- sdebug.println("reading security properties file: " +
- propFile);
-+ sdebug.println(props.toString());
- }
- } catch (IOException e) {
- if (sdebug != null) {
-@@ -114,6 +122,31 @@
- }
-
- if ("true".equalsIgnoreCase(props.getProperty
-+ ("security.useSystemPropertiesFile"))) {
-+
-+ // now load the system file, if it exists, so its values
-+ // will win if they conflict with the earlier values
-+ try (BufferedInputStream bis =
-+ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
-+ props.load(bis);
-+ loadedProps = true;
-+
-+ if (sdebug != null) {
-+ sdebug.println("reading system security properties file " +
-+ SYSTEM_PROPERTIES);
-+ sdebug.println(props.toString());
-+ }
-+ } catch (IOException e) {
-+ if (sdebug != null) {
-+ sdebug.println
-+ ("unable to load security properties from " +
-+ SYSTEM_PROPERTIES);
-+ e.printStackTrace();
-+ }
-+ }
-+ }
-+
-+ if ("true".equalsIgnoreCase(props.getProperty
- ("security.overridePropertiesFile"))) {
-
- String extraPropFile = System.getProperty
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
---- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
---- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
-@@ -276,6 +276,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=true
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
---- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
---- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
-@@ -278,6 +278,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
---- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
-+++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
-@@ -279,6 +279,13 @@
- security.overridePropertiesFile=true
-
- #
-+# Determines whether this properties file will be appended to
-+# using the system properties file stored at
-+# /etc/crypto-policies/back-ends/java.config
-+#
-+security.useSystemPropertiesFile=false
-+
-+#
- # Determines the default key and trust manager factory algorithms for
- # the javax.net.ssl package.
- #
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..61b3b69
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+Package of LTS OpenJDK 8
+OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 10. LTSs (next is 11) will go as separate packages.
+
+JDK8 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/8/ and is landing to your RHEL. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives.
+
+See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
+See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
+
diff --git a/dont-add-unnecessary-debug-links.patch b/dont-add-unnecessary-debug-links.patch
deleted file mode 100644
index 9c29e6b..0000000
--- a/dont-add-unnecessary-debug-links.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- openjdk/make/common/NativeCompilation.gmk
-+++ openjdk/make/common/NativeCompilation.gmk
-@@ -437,29 +437,6 @@
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
-- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
-- else # not solaris
-- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
-- endif # Touch to not retrigger rule on rebuild
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -483,7 +460,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
-@@ -522,28 +498,8 @@
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
-- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
-- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
-- # empty section headers until a fixed $(OBJCOPY) is available.
-- # An empty section header has sh_addr == 0 and sh_size == 0.
-- # This problem has only been seen on Solaris X64, but we call this tool
-- # on all Solaris builds just in case.
-- #
-- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
-- $(RM) $$@
-- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
-- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
-- $(RM) $$@
-- $(OBJCOPY) --only-keep-debug $$< $$@
-- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
-- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
-@@ -567,7 +523,6 @@
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
-- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
diff --git a/hotspot-assembler-debuginfo.patch b/hotspot-assembler-debuginfo.patch
deleted file mode 100644
index bf51c43..0000000
--- a/hotspot-assembler-debuginfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/rules.make.orig 2016-12-06 12:25:19.099768390 -0500
-+++ openjdk/hotspot/make/linux/makefiles/rules.make 2016-12-06 12:25:42.449990112 -0500
-@@ -34,7 +34,7 @@
- CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
- CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
--AS.S = $(AS) $(ASFLAGS)
-+AS.S = $(AS) -g $(ASFLAGS)
-
- COMPILE.CC = $(CC_COMPILE) -c
- GENASM.CC = $(CC_COMPILE) -S
-@@ -169,7 +169,7 @@
- %.o: %.s
- @echo Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
-- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-+ $(QUIETLY) $(AS.S) -g $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
- %.s: %.cpp
- @echo Generating assembly for $<
diff --git a/hotspot-remove-debuglink.patch b/hotspot-remove-debuglink.patch
deleted file mode 100644
index 3b3070d..0000000
--- a/hotspot-remove-debuglink.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Remove unnecessary .gnu_debuglink sections from libjvm
-
-The .gnu_debuglink section indicates which file contains the debuginfo. This
-is not needed if we not stripping the shared object.
-
-RPM's debuginfo extraction code will add the right file links automatically. As
-it is, RPM copies over the .gnu_debuglink link to the debug info file. Without
-this patch, the debug info file also ends up containing the .gnu_debuglink
-section pointing to a missing (and not needed) file.
-
-diff --git a/make/linux/makefiles/jsig.make b/make/linux/makefiles/jsig.make
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -57,14 +57,15 @@
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
-diff --git a/make/linux/makefiles/saproc.make b/make/linux/makefiles/saproc.make
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -99,14 +99,15 @@
- -lthread_db
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
-+ ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
-- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
- $(QUIETLY) $(STRIP) -g $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
-diff --git a/make/linux/makefiles/vm.make b/make/linux/makefiles/vm.make
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -358,14 +358,15 @@
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
-- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
-+ $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
-+ endif
- # implied else here is no stripping at all
-- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 503eeca..0f2b41f 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -1,19 +1,48 @@
-# note, parametrised macros are order-senisitve (unlike not-parametrized) even with normal macros
-# also necessary when passing it as parameter other macros. If not macro, then it is considered as switch
-%global debug_suffix_unquoted -debug
+# RPM conditionals so as to be able to dynamically produce
+# slowdebug/release builds. See:
+# http://rpm.org/user_doc/conditional_builds.html
+#
+# Examples:
+#
+# Produce release *and* slowdebug builds on x86_64 (default):
+# $ rpmbuild -ba java-1.8.0-openjdk.spec
+#
+# Produce only release builds (no slowdebug builds) on x86_64:
+# $ rpmbuild -ba java-1.8.0-openjdk.spec --without slowdebug
+#
+# Only produce a release build on x86_64:
+# $ fedpkg mockbuild --without slowdebug
+#
+# Only produce a debug build on x86_64:
+# $ fedpkg local --without release
+#
+# Enable slowdebug builds by default on relevant arches.
+%bcond_without slowdebug
+# Enable release builds by default on relevant arches.
+%bcond_without release
+
+%define _find_debuginfo_opts -g
+# note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros
+# also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch
+# see the difference between global and define:
+# See https://github.com/rpm-software-management/rpm/issues/127 to comments at "pmatilai commented on Aug 18, 2017"
+# (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192)
+%global debug_suffix_unquoted -slowdebug
# quoted one for shell operations
%global debug_suffix "%{debug_suffix_unquoted}"
%global normal_suffix ""
-#if you wont only debug build, but providing java, build only normal build, but set normalbuild_parameter
-%global debugbuild_parameter slowdebug
-%global normalbuild_parameter release
-%global debug_warning This package have full debug on. Install only in need, and remove asap.
+# if you want only debug build but providing java build only normal build but set normalbuild_parameter
+%global debug_warning This package has full debug on. Install only in need and remove asap.
%global debug_on with full debug on
%global for_debug for packages with debug on
-# by default we build normal build always.
+%if %{with release}
%global include_normal_build 1
+%else
+%global include_normal_build 0
+%endif
+
%if %{include_normal_build}
%global build_loop1 %{normal_suffix}
%else
@@ -21,23 +50,30 @@
%endif
%global aarch64 aarch64 arm64 armv8
-# sometimes we need to distinguish big and little endian PPC64
+# we need to distinguish between big and little endian PPC64
%global ppc64le ppc64le
%global ppc64be ppc64 ppc64p7
%global multilib_arches %{power64} sparc64 x86_64
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm}
# By default, we build a debug build during main build on JIT architectures
-# do not ever sync {arm} to main packages, unles whole this package is merged.
+%if %{with slowdebug}
%ifarch %{jit_arches}
+%ifnarch %{arm}
%global include_debug_build 1
%else
+%global include_debug_build 1
+%endif
+%else
+%global include_debug_build 0
+%endif
+%else
%global include_debug_build 0
%endif
# On x86_64 and AArch64, we use the Shenandoah HotSpot
%ifarch x86_64 %{aarch64}
-%global use_shenandoah_hotspot 0
+%global use_shenandoah_hotspot 1
%else
%global use_shenandoah_hotspot 0
%endif
@@ -48,10 +84,10 @@
%global build_loop2 %{nil}
%endif
-# if you disable both builds, then build fails
+# if you disable both builds, then the build fails
%global build_loop %{build_loop1} %{build_loop2}
-# note, that order normal_suffix debug_suffix, in case of both enabled,
-# is expected in one single case at the end of build
+# note: that order: normal_suffix debug_suffix, in case of both enabled
+# is expected in one single case at the end of the build
%global rev_build_loop %{build_loop2} %{build_loop1}
%ifarch %{jit_arches}
@@ -66,28 +102,15 @@
%global targets all
%endif
-%ifnarch %{jit_arches}
-# Disable hardened build on non-jit arches. Work-around for RHBZ#1290936.
-%undefine _hardened_build
-%global ourcppflags %{nil}
-%global ourldflags %{nil}
-%else
-%ifarch %{aarch64}
-# Disable hardened build on AArch64 as it didn't bootcycle
-%undefine _hardened_build
-%global ourcppflags "-fstack-protector-strong"
-%global ourldflags %{nil}
-%else
+
# Filter out flags from the optflags macro that cause problems with the OpenJDK build
-# We filter out -O flags so that the optimisation of HotSpot is not lowered from O3 to O2
+# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||')
%global ourldflags %{__global_ldflags}
-%endif
-%endif
%ifarch %{arm}
# Disable hardened build on aarch32. Work-around for RHBZ#1290936.
%undefine _hardened_build
@@ -95,9 +118,9 @@
%global ourldflags %{nil}
%endif
-# With diabled nss is NSS deactivated, so in NSS_LIBDIR can be wrong path
-# the initialisation must be here. LAter the pkg-connfig have bugy behaviour
-#looks liekopenjdk RPM specific bug
+# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path
+# the initialization must be here. Later the pkg-config have buggy behavior
+# looks like openjdk RPM specific bug
# Always set this so the nss.cfg file is not broken
%global NSS_LIBDIR %(pkg-config --variable=libdir nss)
%global NSS_LIBS %(pkg-config --libs nss)
@@ -105,13 +128,18 @@
# see https://bugzilla.redhat.com/show_bug.cgi?id=1332456
%global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : )
%global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : )
-#this is worakround for processing of requires during srpm creation
+# this is workaround for processing of requires during srpm creation
%global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi)
%global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi)
-# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
-%global _privatelibs libmawt[.]so.*
+# Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349.
+# See also https://bugzilla.redhat.com/show_bug.cgi?id=1590796
+# as to why some libraries *cannot* be excluded. In particular,
+# these are:
+# libjsig.so, libjava.so, libjawt.so, libjvm.so and libverify.so
+%global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjli[.]so.*|libjsdt[.]so.*|libjsoundalsa[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libnpt[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsplashscreen[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
+
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
@@ -121,66 +149,59 @@
# does not match that given by _build_cpu
%ifarch x86_64
%global archinstall amd64
-%global stapinstall x86_64
%endif
%ifarch ppc
%global archinstall ppc
-%global stapinstall powerpc
%endif
%ifarch %{ppc64be}
%global archinstall ppc64
-%global stapinstall powerpc
%endif
%ifarch %{ppc64le}
%global archinstall ppc64le
-%global stapinstall powerpc
%endif
%ifarch %{ix86}
%global archinstall i386
-%global stapinstall i386
%endif
%ifarch ia64
%global archinstall ia64
-%global stapinstall ia64
%endif
%ifarch s390
%global archinstall s390
-%global stapinstall s390
%endif
%ifarch s390x
%global archinstall s390x
-%global stapinstall s390
%endif
%ifarch %{arm}
%global archinstall arm
-%global stapinstall arm
%endif
%ifarch %{aarch64}
%global archinstall aarch64
-%global stapinstall arm64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global archinstall sparc
-%global stapinstall %{_build_cpu}
%endif
# 64 bit sparc
%ifarch sparc64
%global archinstall sparcv9
-%global stapinstall %{_build_cpu}
%endif
%ifnarch %{jit_arches}
%global archinstall %{_arch}
%endif
+
+
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+# New Version-String scheme-style defines
+%global majorver 8
+
%ifarch %{ix86} x86_64
-%global with_openjfx_binding 0
+%global with_openjfx_binding 1
%global openjfx_path %{_jvmdir}/openjfx
# links src directories
%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
@@ -199,19 +220,18 @@
%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.
-%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
-%global abs2rel %{__perl} -e %{script}
-
-
# Standard JPackage naming and versioning defines.
%global origin openjdk
+%global origin_nice OpenJDK
+%global top_level_dir_name %{origin}
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u171-b11-aarch32-180511
+%global revision jdk8u181-b13-aarch32-180802
+%global shenandoah_project aarch64-port
+%global shenandoah_repo jdk8u-shenandoah
+%global shenandoah_revision aarch64-shenandoah-jdk8u181-b13
+
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -221,17 +241,19 @@
# priority must be 7 digits in total. The expression is workarounding tip
%global priority %(TIP=1800%{updatever}; echo ${TIP/tip/999})
-%global javaver 1.8.0
+%global javaver 1.%{majorver}.0
+%global systemtap_javaver 9
# parametrized macros are order-sensitive
-%global fullversion %{name}-%{version}-%{release}
-#images stub
-%global j2sdkimage j2sdk-image
+%global compatiblename %{name}
+%global fullversion %{compatiblename}-%{version}-%{release}
+# images stub
+%global jdkimage j2sdk-image
# output dir stub
%define buildoutputdir() %{expand:openjdk/build/jdk8.build%{?1}}
-#we can copy the javadoc to not arched dir, or made it not noarch
+# we can copy the javadoc to not arched dir, or make it not noarch
%define uniquejavadocdir() %{expand:%{fullversion}%{?1}}
-#main id and dir of this jdk
+# main id and dir of this jdk
%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}}
# Standard JPackage directories and symbolic links.
@@ -246,18 +268,19 @@
%if %{with_systemtap}
# Where to install systemtap tapset (links)
-# We would like these to be in a package specific subdir,
+# We would like these to be in a package specific sub-dir,
# but currently systemtap doesn't support that, so we have to
-# use the root tapset dir for now. To distinquish between 64
+# use the root tapset dir for now. To distinguish between 64
# and 32 bit architectures we place the tapsets under the arch
# specific dir (note that systemtap will only pickup the tapset
# for the primary arch for now). Systemtap uses the machine name
# aka build_cpu as architecture specific directory name.
%global tapsetroot /usr/share/systemtap
-%global tapsetdir %{tapsetroot}/tapset/%{stapinstall}
+%global tapsetdirttapset %{tapsetroot}/tapset/
+%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
%endif
-# not-duplicated scriplets for normal/debug packages
+# not-duplicated scriptlets for normal/debug packages
%global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
@@ -332,7 +355,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
# see pretrans where this file is declared
-# also see that pretrans is only for nondebug
+# also see that pretrans is only for non-debug
if [ ! "%{?1}" == %{debug_suffix} ]; then
if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then
sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}}
@@ -530,7 +553,7 @@ exit 0
}
%define files_jre() %{expand:
-%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
+%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png
%{_datadir}/applications/*policytool%{?1}.desktop
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libsplashscreen.so
@@ -548,12 +571,11 @@ exit 0
%defattr(-,root,root,-)
%dir %{_sysconfdir}/.java/.systemPrefs
%dir %{_sysconfdir}/.java
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}
%{_jvmdir}/%{jrelnk -- %{?1}}
-%{_jvmprivdir}/*
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security
%{_jvmdir}/%{jredir -- %{?1}}/lib/security/cacerts
%dir %{_jvmdir}/%{jredir -- %{?1}}
@@ -569,6 +591,9 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/bin/servertool
%{_jvmdir}/%{jredir -- %{?1}}/bin/tnameserv
%{_jvmdir}/%{jredir -- %{?1}}/bin/unpack200
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/
+%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar
@@ -592,8 +617,8 @@ exit 0
%config(noreplace) %{_jvmdir}/%{jredir -- %{?1}}/lib/security/nss.cfg
%ifarch %{jit_arches}
%ifnarch %{power64}
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
-%attr(664, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa
+%attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa
%endif
%endif
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/
@@ -693,7 +718,17 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/management-agent.jar
%{_jvmdir}/%{jredir -- %{?1}}/lib/management/*
%{_jvmdir}/%{jredir -- %{?1}}/lib/cmm/*
-%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/*
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/cldrdata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/dnsns.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/jaccess.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/localedata.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/meta-index
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/nashorn.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunec.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunjce_provider.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunpkcs11.jar
+%{_jvmdir}/%{jredir -- %{?1}}/lib/ext/zipfs.jar
+
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors
%dir %{_jvmdir}/%{jredir -- %{?1}}/lib/management
@@ -703,9 +738,9 @@ exit 0
%define files_devel() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/ASSEMBLY_EXCEPTION
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/LICENSE
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/THIRD_PARTY_README
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/ASSEMBLY_EXCEPTION
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/include
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib
@@ -754,6 +789,9 @@ exit 0
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/aarch32
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
+%if %{with_systemtap}
+%{_jvmdir}/%{sdkdir -- %{?1}}/tapset
+%endif
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ir.idl
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/jconsole.jar
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/orb.idl
@@ -795,34 +833,33 @@ exit 0
%{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1*
%if %{with_systemtap}
%dir %{tapsetroot}
+%dir %{tapsetdirttapset}
%dir %{tapsetdir}
-%{tapsetdir}/*%{version}-%{release}.%{_arch}%{?1}.stp
-%dir %{_jvmdir}/%{sdkdir -- %{?1}}/tapset
-%{_jvmdir}/%{sdkdir -- %{?1}}/tapset/*.stp
+%{tapsetdir}/*%{_arch}%{?1}.stp
%endif
}
%define files_demo() %{expand:
%defattr(-,root,root,-)
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_src() %{expand:
%defattr(-,root,root,-)
-%doc README.src
+%doc README.md
%{_jvmdir}/%{sdkdir -- %{?1}}/src.zip
}
%define files_javadoc() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_javadoc_zip() %{expand:
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip
-%license %{buildoutputdir -- %{?1}}/images/%{j2sdkimage}/jre/LICENSE
+%license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE
}
%define files_accessibility() %{expand:
@@ -832,106 +869,94 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/accessibility.properties
}
-# not-duplicated requires/provides/obsolate for normal/debug packages
+# not-duplicated requires/provides/obsoletes for normal/debug packages
%define java_rpo() %{expand:
Requires: fontconfig%{?_isa}
Requires: xorg-x11-fonts-Type1
-
# Requires rest of java
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+# for java-X-openjdk package's desktop binding
+Recommends: gtk2%{?_isa}
+#Provides: java-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
-# Standard JPackage base provides.
-#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
+# Standard JPackage base provides
+#Provides: jre = %{javaver}%{?1}
#Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
+#Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre = %{javaver}%{?1}
#Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release}
#Provides: java%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: java-fonts%{?1} = %{epoch}:%{version}
-
-Obsoletes: java-1.7.0-openjdk%{?1}
-Obsoletes: java-1.5.0-gcj%{?1}
-Obsoletes: sinjdoc
}
%define java_headless_rpo() %{expand:
-# Require /etc/pki/java/cacerts.
+# Require /etc/pki/java/cacerts
Requires: ca-certificates
# Require javapackages-filesystem for ownership of /usr/lib/jvm/
Requires: javapackages-filesystem
-# Require zoneinfo data provided by tzdata-java subpackage.
+# Require zone-info data provided by tzdata-java sub-package
Requires: tzdata-java >= 2015d
# libsctp.so.1 is being `dlopen`ed on demand
Requires: lksctp-tools%{?_isa}
# there is a need to depend on the exact version of NSS
Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION}
Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION}
-# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum eforce it, not rpm transaction and so no configs are persisted when pure rpm -u is run. I t may be consiedered as regression
-Requires: copy-jdk-configs >= 3.3
+# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it,
+# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be
+# considered as regression
+Requires: copy-jdk-configs >= 3.3
OrderWithRequires: copy-jdk-configs
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
+# for optional support of kernel stream control, card reader and printing bindings
+Suggests: lksctp-tools%{?_isa}, pcsc-lite-devel%{?_isa}, cups
-# Standard JPackage base provides.
+# Standard JPackage base provides
+#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release}
-#Provides: jre-headless%{?1} = %{epoch}:%{javaver}
#Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-headless%{?1} = %{epoch}:%{javaver}
-# Standard JPackage extensions provides.
-#Provides: jndi%{?1} = %{epoch}:%{version}
-#Provides: jndi-ldap%{?1} = %{epoch}:%{version}
-#Provides: jndi-cos%{?1} = %{epoch}:%{version}
-#Provides: jndi-rmi%{?1} = %{epoch}:%{version}
-#Provides: jndi-dns%{?1} = %{epoch}:%{version}
-#Provides: jaas%{?1} = %{epoch}:%{version}
-#Provides: jsse%{?1} = %{epoch}:%{version}
-#Provides: jce%{?1} = %{epoch}:%{version}
-#Provides: jdbc-stdext%{?1} = 4.1
-#Provides: java-sasl%{?1} = %{epoch}:%{version}
-
-#https://bugzilla.redhat.com/show_bug.cgi?id=1312019
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1312019
#Provides: /usr/bin/jjs
-Obsoletes: java-1.7.0-openjdk-headless%{?1}
}
%define java_devel_rpo() %{expand:
-# Require base package.
+# Requires base package
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install tool alternatives.
+# Post requires alternatives to install tool alternatives
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall tool alternatives.
+# Postun requires alternatives to uninstall tool alternatives
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage devel provides.
+# Standard JPackage devel provides
#Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version}
#Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-sdk%{?1} = %{epoch}:%{javaver}
#Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version}
+#Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version}
#Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version}
#Provides: java-devel%{?1} = %{epoch}:%{javaver}
-Obsoletes: java-1.7.0-openjdk-devel%{?1}
-Obsoletes: java-1.5.0-gcj-devel%{?1}
}
@@ -939,39 +964,36 @@ Obsoletes: java-1.5.0-gcj-devel%{?1}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+#Provides: java-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-demo%{?1}
}
%define java_javadoc_rpo() %{expand:
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Post requires alternatives to install javadoc alternative.
+# Post requires alternatives to install javadoc alternative
Requires(post): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(post): chkconfig >= 1.7
-# Postun requires alternatives to uninstall javadoc alternative.
+# Postun requires alternatives to uninstall javadoc alternative
Requires(postun): %{_sbindir}/alternatives
# in version 1.7 and higher for --family switch
Requires(postun): chkconfig >= 1.7
-# Standard JPackage javadoc provides.
+# Standard JPackage javadoc provides
#Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
-
-Obsoletes: java-1.7.0-openjdk-javadoc%{?1}
-
+#Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release}
}
%define java_src_rpo() %{expand:
Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
-# Standard JPackage javadoc provides.
+# Standard JPackage sources provides
#Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release}
-#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-src%{?1}
+#Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release}
}
%define java_accessibility_rpo() %{expand:
@@ -979,24 +1001,25 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-accessibility = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-accessibility = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{release}
-Obsoletes: java-1.7.0-openjdk-accessibility%{?1}
}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
Name: java-%{javaver}-%{origin}-aarch32
-Version: %{javaver}.%{updatever}
-Release: 2.%{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
+Version: %{javaver}.%{updatever}.%{buildver}
+Release: 1%{?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
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
-# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
-# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
-# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
+# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
+# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
+# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
@@ -1025,18 +1048,25 @@ URL: http://openjdk.java.net/
Source0: %{project}-%{repo}-%{revision}.tar.xz
# Shenandoah HotSpot
-#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+# aarch64-port/jdk8u-shenandoah contains an integration forest of
+# OpenJDK 8u, the aarch64 port and Shenandoah
+# To regenerate, use:
+# VERSION=%%{shenandoah_revision}
+# FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> REPOS=hotspot generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
+#Source1: {shenandoah_project}-{shenandoah_repo}-{shenandoah_revision}.tar.xz
# Custom README for -src subpackage
-Source2: README.src
+Source2: README.md
# Use 'generate_tarballs.sh' to generate the following tarballs
-# They are based on code contained in the IcedTea7 project.
+# They are based on code contained in the IcedTea project (3.x)
# Systemtap tapsets. Zipped up to keep it small.
Source8: systemtap-tapset-3.4.0pre01.tar.xz
-# Desktop files. Adapated from IcedTea.
+# Desktop files. Adapted from IcedTea
Source9: jconsole.desktop.in
Source10: policytool.desktop.in
@@ -1058,7 +1088,11 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess
Source101: config.sub
+############################################
+#
# RPM/distribution specific patches
+#
+############################################
# Accessibility patches
# Ignore AWTError when assistive technologies are loaded
@@ -1066,7 +1100,11 @@ Patch1: java-1.8.0-openjdk-accessible-toolkit.patch
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
+#############################################
+#
# Upstreamable patches
+#
+#############################################
# PR2737: Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# PR2095, RH1163501: 2048-bit DH upper bound too small for Fedora infrastructure (sync with IcedTea 2.x)
@@ -1097,30 +1135,39 @@ Patch509: rh1176206-root.patch
Patch523: pr2974-rh1337583.patch
# PR3083, RH1346460: Regression in SSL debug output without an ECC provider
Patch528: pr3083-rh1346460.patch
-# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
-# linking with unresolved symbols.
-Patch529: rhbz_1538767_fix_linking.patch
-
+# RH1566890: CVE-2018-3639
+Patch529: rh1566890_embargoed20180521.patch
+# PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+Patch530: pr3601.patch
+# PR3183: Support Fedora/RHEL system crypto policy
+Patch300: pr3183.patch
+
+#############################################
+#
# Upstreamable debugging patches
+#
+#############################################
# 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
-# 8200556, PR3566: AArch64 port crashes on slowdebug builds
-#Patch207: 8200556-pr3566.patch
+# 8207234: More libraries with .gnu_debuglink sections added unconditionally
+Patch205: 8207234-dont-add-unnecessary-debug-links.patch
# Arch-specific upstreamable patches
-# PR2415: JVM -Xmx requirement is too high on s390
-#Patch100: {name}-s390-java-opts.patch
-# Type fixing for s390
-#Patch102: {name}-size_t.patch
-# Use "%z" for size_t on s390 as size_t != intptr_t
-#Patch103: s390-size_t_format_flags.patch
-# Fix more cases of missing return statements on AArch64
-#Patch104: pr3458-rh1540242.patch
-
+# s390: PR2415: JVM -Xmx requirement is too high on s390
+Patch100: java-1.8.0-openjdk-s390-java-opts.patch
+# s390: Type fixing for s390
+Patch102: java-1.8.0-openjdk-size_t.patch
+# s390: PR3593: Use "%z" for size_t on s390 as size_t != intptr_t
+Patch103: pr3593-s390-size_t_format_flags.patch
+# x86: S8199936, PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations (-mstackrealign workaround)
+Patch105: 8199936-pr3533-workaround.patch
+# AArch64: PR3519: Fix further functions with a missing return value (AArch64)
+#Patch106: pr3519.patch
+
+#############################################
+#
# Patches which need backporting to 8u
+#
+#############################################
# S8073139, RH1191652; fix name of ppc64le architecture
#Patch601: {name}-rh1191652-root.patch
#Patch602: {name}-rh1191652-jdk.patch
@@ -1131,45 +1178,104 @@ Patch7: include-all-srcs.patch
Patch202: system-libpng.patch
# 8042159: Allow using a system-installed lcms2
Patch203: system-lcms.patch
-# PR2462: Backport "8074839: Resolve disabled warnings for libunpack and the unpack200 binary"
+# S8074839, PR2462: Resolve disabled warnings for libunpack and the unpack200 binary
# This fixes printf warnings that lead to build failure with -Werror=format-security from optflags
Patch502: pr2462.patch
-# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
-Patch506: pr2842-01.patch
-Patch507: pr2842-02.patch
# S8154313: Generated javadoc scattered all over the place
Patch400: 8154313.patch
+# 8197429, PR3546, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
+Patch561: 8197429-pr3546-rh1536622.patch
+# 8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
+Patch563: 8171000-pr3542-rh1402819.patch
+# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
+Patch564: 8197546-pr3542-rh1402819.patch
+# PR3559: Use ldrexd for atomic reads on ARMv7.
+Patch567: pr3559.patch
+# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+Patch571: pr3591.patch
+# 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
+Patch572: 8184309-pr3596.patch
+# 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
+Patch573: 8141570-pr3548.patch
+# 8143245, PR3548: Zero build requires disabled warnings
+Patch574: 8143245-pr3548.patch
+# 8197981, PR3548: Missing return statement in __sync_val_compare_and_swap_8
+Patch575: 8197981-pr3548.patch
+# 8064786, PR3599: Fix debug build after 8062808: Turn on the -Wreturn-type warning
+Patch576: 8064786-pr3599.patch
+# 8062808, PR3548: Turn on the -Wreturn-type warning
+Patch577: 8062808-pr3548.patch
+# 8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs
+Patch210: 8165852-pr3468.patch
+# 8207057, PR3613: Enable debug information for assembly code files
+Patch206: 8207057-pr3613-hotspot-assembler-debuginfo.patch
+
+#############################################
+#
+# Patches appearing in 8u192
+#
+#############################################
+# S8031668, PR2842: TOOLCHAIN_FIND_COMPILER unexpectedly resolves symbolic links
+Patch506: pr2842-01.patch
+# S8148351, PR2842: Only display resolved symlink for compiler, do not change path
+Patch507: pr2842-02.patch
# S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-Patch540: rhbz1548475-LDFLAGSusage.patch
# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present
Patch560: 8188030-pr3459-rh1484079.patch
-# 8197429, PR3456, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes
-Patch561: 8197429-pr3456-rh1536622.patch
-
+# 8205104, PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+Patch562: pr3539-rh1548475.patch
+# 8185723, PR3553: Zero: segfaults on Power PC 32-bit
+Patch565: 8185723-pr3553.patch
+# 8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
+Patch566: 8186461-pr3557.patch
+# 8201509, PR3579: Zero: S390 31bit atomic_copy64 inline assembler is wrong
+Patch569: 8201509-pr3579.patch
+# 8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile
+Patch570: 8165489-pr3589.patch
+# 8196516, RH1538767: libfontmanager.so needs to be built with LDFLAGS so as to allow
+# linking with unresolved symbols.
+Patch531: 8196516-pr3523-rh1538767.patch
+# 8075942, PR3602: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo
+Patch578: 8075942-pr3602-rh1582032.patch
+# 8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails
+Patch579: 8203182-pr3603-rh1568033.patch
+# 8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
+Patch580: 8206406-pr3610-rh1597825.patch
+# 8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage
+Patch581: 8146115-pr3508-rh1463098.patch
+# 8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped
+Patch204: 8206425-hotspot-remove-debuglink.patch
+
+#############################################
+#
# Patches ineligible for 8u
+#
+#############################################
# 8043805: Allow using a system-installed libjpeg
Patch201: system-libjpeg.patch
-Patch209: 8035496-hotspot.patch
-Patch210: suse_linuxfilestore.patch
-# custom securities
-Patch300: PR3183.patch
+#############################################
+#
# Local fixes
+#
+#############################################
# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
Patch525: pr1834-rh1022017.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
+# PR3575, RH1567204: System cacerts database handling should not affect jssecacerts
+Patch540: pr3575-rh1567204.patch
-# Shenandoah fixes
-# PR3573: Fix TCK crash with Shenandoah
-#Patch700: pr3573.patch
-
+#############################################
+#
# Non-OpenJDK fixes
+#
+#############################################
Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
@@ -1178,7 +1284,8 @@ BuildRequires: alsa-lib-devel
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
-BuildRequires: elfutils
+# elfutils only are OK for build without AOT
+BuildRequires: elfutils-devel
BuildRequires: fontconfig
BuildRequires: freetype-devel
BuildRequires: giflib-devel
@@ -1202,11 +1309,12 @@ BuildRequires: zip
# Use OpenJDK 7 where available (on RHEL) to avoid
# having to use the rhel-7.x-java-unsafe-candidate hack
%if ! 0%{?fedora} && 0%{?rhel} <= 7
+# Require a boot JDK which doesn't fail due to RH1482244
BuildRequires: java-1.7.0-openjdk-devel >= 1.7.0.151-2.6.11.3
%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
%endif
-# Zero-assembler build requirement.
+# Zero-assembler build requirement
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
@@ -1220,8 +1328,8 @@ BuildRequires: nss-softokn-freebl-devel >= 3.16.1
BuildRequires: systemtap-sdt-devel
%endif
-# this is built always, also during debug-only build
-# when it is built in debug-only, then this package is just placeholder
+# this is always built, also during debug-only build
+# when it is built in debug-only this package is just placeholder
%{java_rpo %{nil}}
ExclusiveArch: %{arm}
@@ -1231,110 +1339,112 @@ A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
-%package debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package slowdebug
+Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on}
Group: Development/Languages
%{java_rpo -- %{debug_suffix_unquoted}}
-%description debug
-The OpenJDK runtime environment.
+%description slowdebug
+The %{origin_nice} runtime environment.
%{debug_warning}
%endif
%if %{include_normal_build}
%package headless
-Summary: OpenJDK Runtime Environment
+Summary: %{origin_nice} Headless Runtime Environment %{majorver}
Group: Development/Languages
%{java_headless_rpo %{nil}}
%description headless
-The OpenJDK runtime environment without audio and video support.
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%endif
%if %{include_debug_build}
-%package headless-debug
-Summary: OpenJDK Runtime Environment %{debug_on}
+%package headless-slowdebug
+Summary: %{origin_nice} Runtime Environment %{debug_on}
Group: Development/Languages
%{java_headless_rpo -- %{debug_suffix_unquoted}}
-%description headless-debug
-The OpenJDK runtime environment without audio and video support.
+%description headless-slowdebug
+The %{origin_nice} runtime environment %{majorver} without audio and video support.
%{debug_warning}
%endif
%if %{include_normal_build}
%package devel
-Summary: OpenJDK Development Environment
+Summary: %{origin_nice} Development Environment %{majorver}
Group: Development/Tools
%{java_devel_rpo %{nil}}
%description devel
-The OpenJDK development tools.
+The %{origin_nice} development tools %{majorver}.
%endif
%if %{include_debug_build}
-%package devel-debug
-Summary: OpenJDK Development Environment %{debug_on}
+%package devel-slowdebug
+Summary: %{origin_nice} Development Environment %{majorver} %{debug_on}
Group: Development/Tools
%{java_devel_rpo -- %{debug_suffix_unquoted}}
-%description devel-debug
-The OpenJDK development tools.
+%description devel-slowdebug
+The %{origin_nice} development tools %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package demo
-Summary: OpenJDK Demos
+Summary: %{origin_nice} Demos %{majorver}
Group: Development/Languages
%{java_demo_rpo %{nil}}
%description demo
-The OpenJDK demos.
+The %{origin_nice} demos %{majorver}.
%endif
%if %{include_debug_build}
-%package demo-debug
-Summary: OpenJDK Demos %{debug_on}
+%package demo-slowdebug
+Summary: %{origin_nice} Demos %{majorver} %{debug_on}
Group: Development/Languages
%{java_demo_rpo -- %{debug_suffix_unquoted}}
-%description demo-debug
-The OpenJDK demos.
+%description demo-slowdebug
+The %{origin_nice} demos %{majorver}.
%{debug_warning}
%endif
%if %{include_normal_build}
%package src
-Summary: OpenJDK Source Bundle
+Summary: %{origin_nice} Source Bundle %{majorver}
Group: Development/Languages
%{java_src_rpo %{nil}}
%description src
-The OpenJDK source bundle.
+The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver}
+class library source code for use by IDE indexers and debuggers.
%endif
%if %{include_debug_build}
-%package src-debug
-Summary: OpenJDK Source Bundle %{for_debug}
+%package src-slowdebug
+Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug}
Group: Development/Languages
%{java_src_rpo -- %{debug_suffix_unquoted}}
-%description src-debug
-The OpenJDK source bundle %{for_debug}.
+%description src-slowdebug
+The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
+ class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
%endif
%if %{include_normal_build}
%package javadoc
-Summary: OpenJDK API Documentation
+Summary: %{origin_nice} %{majorver} API documentation
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1342,12 +1452,12 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc
-The OpenJDK API documentation.
+The %{origin_nice} %{majorver} API documentation.
%endif
%if %{include_normal_build}
%package javadoc-zip
-Summary: OpenJDK API Documentation compressed in single archive
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
@@ -1355,60 +1465,60 @@ BuildArch: noarch
%{java_javadoc_rpo %{nil}}
%description javadoc-zip
-The OpenJDK API documentation compressed in single archive.
+The %{origin_nice} %{majorver} API documentation compressed in single archive.
%endif
%if %{include_debug_build}
-%package javadoc-debug
-Summary: OpenJDK API Documentation %{for_debug}
+%package javadoc-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-debug
-The OpenJDK API documentation %{for_debug}.
+%description javadoc-slowdebug
+The %{origin_nice} %{majorver} API documentation %{for_debug}.
%endif
%if %{include_debug_build}
-%package javadoc-zip-debug
-Summary: OpenJDK API Documentation compressed in single archive %{for_debug}
+%package javadoc-zip-slowdebug
+Summary: %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}
Group: Documentation
Requires: javapackages-filesystem
BuildArch: noarch
%{java_javadoc_rpo -- %{debug_suffix_unquoted}}
-%description javadoc-zip-debug
-The OpenJDK API documentation compressed in single archive %{for_debug}.
+%description javadoc-zip-slowdebug
+The %{origin_nice} %{majorver} API documentation compressed in single archive %{for_debug}.
%endif
%if %{include_normal_build}
%package accessibility
-Summary: OpenJDK accessibility connector
+Summary: %{origin_nice} %{majorver} accessibility connector
%{java_accessibility_rpo %{nil}}
%description accessibility
-Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows
+Enables accessibility support in %{origin_nice} %{majorver} by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
-Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
+Please note, the java-atk-wrapper is still in beta, and %{origin_nice} %{majorver} itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%endif
%if %{include_debug_build}
-%package accessibility-debug
-Summary: OpenJDK accessibility connector %{for_debug}
+%package accessibility-slowdebug
+Summary: %{origin_nice} %{majorver} accessibility connector %{for_debug}
%{java_accessibility_rpo -- %{debug_suffix_unquoted}}
-%description accessibility-debug
+%description accessibility-slowdebug
See normal java-%{version}-openjdk-accessibility description.
%endif
@@ -1431,21 +1541,21 @@ Provides: javafx-devel = %{epoch}:%{version}-%{release}
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}
+%package openjfx-slowdebug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-slowdebug
+Requires: %{name}-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx%{?_isa}
-Provides: javafx-debug = %{epoch}:%{version}-%{release}
-%description openjfx-debug
-Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-slowdebug
+Set of links from OpenJDK-slowdebug (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}
+%package openjfx-devel-slowdebug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-slowdebug
+Requires: %{name}-devel-slowdebug%{?_isa} = %{epoch}:%{version}-%{release}
Requires: openjfx-devel%{?_isa}
-Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
-%description openjfx-devel-debug
-Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+Provides: javafx-devel-slowdebug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-slowdebug
+Set of links from OpenJDK-slowdebug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
%endif
%endif
@@ -1463,7 +1573,7 @@ else
exit 12
fi
if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then
- echo "you have disabled both include_debug_build and include_debug_build. no go."
+ echo "You have disabled both include_debug_build and include_normal_build. That is a no go."
exit 13
fi
%setup -q -c -n %{uniquesuffix ""} -T -a 0
@@ -1509,9 +1619,8 @@ sh %{SOURCE12}
%patch204
%patch205
%patch206
-#%patch207
-%patch209
%patch210
+
%patch300
%patch1
@@ -1520,20 +1629,21 @@ sh %{SOURCE12}
%patch7
# s390 build fixes
-#%patch100
-#%patch102
-#%patch103
+%patch100
+%patch102
+%patch103
# AArch64 fixes
-#%patch104
+#%patch106
+
+# x86 fixes
+%patch105
# ppc64le fixes
#%patch603
#%patch601
#%patch602
-# Zero fixes.
-
# Upstreamable fixes
%patch502
%patch504
@@ -1554,17 +1664,37 @@ sh %{SOURCE12}
%patch523
%patch526
%patch528
+%patch529
+%patch530
%patch538
-%patch540
%patch560
pushd openjdk/jdk
-%patch529 -p1
+%patch531 -p1
popd
%patch561
+%patch562
+%patch563
+%patch564
+%patch565
+%patch566
+%patch567
+%patch569
+%patch571
+%patch572
+%patch573
+%patch574
+%patch575
+%patch576
+%patch577
+%patch578
+%patch579
+%patch580
+%patch581
# RPM-only fixes
%patch525
%patch539
+%patch540
# RHEL-only patches
%if ! 0%{?fedora} && 0%{?rhel} <= 7
@@ -1573,7 +1703,8 @@ popd
# Shenandoah-only patches
%if %{use_shenandoah_hotspot}
-%patch700
+%else
+%patch570
%endif
%patch1000
@@ -1588,17 +1719,17 @@ cp -r tapset tapset%{debug_suffix}
for suffix in %{build_loop} ; do
for file in "tapset"$suffix/*.in; do
- OUTPUT_FILE=`echo $file | sed -e s:%{javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g`
- sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g $file > $file.1
+ OUTPUT_FILE=`echo $file | sed -e "s:%{systemtap_javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
+ sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g" $file > $file.1
# TODO find out which architectures other than i686 have a client vm
%ifarch %{ix86}
- sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE
+ sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g" $file.1 > $OUTPUT_FILE
%else
- sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE
+ sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE
%endif
- sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
- sed -i -e s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g $OUTPUT_FILE
+ sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE
+ sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE
done
done
# systemtap tapsets ends
@@ -1611,18 +1742,20 @@ for file in %{SOURCE9} %{SOURCE10} ; do
EXT="${FILE##*.}"
NAME="${FILE%.*}"
OUTPUT_FILE=$NAME$suffix.$EXT
- sed -e s:#JAVA_HOME#:%{sdkbindir -- $suffix}:g $file > $OUTPUT_FILE
- sed -i -e s:#JRE_HOME#:%{jrebindir -- $suffix}:g $OUTPUT_FILE
- sed -i -e s:#ARCH#:%{version}-%{release}.%{_arch}$suffix:g $OUTPUT_FILE
+ sed -e "s:@JAVA_HOME@:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE
+ sed -i -e "s:@JRE_HOME@:%{jrebindir -- $suffix}:g" $OUTPUT_FILE
+ sed -i -e "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
+ sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
done
done
# Setup nss.cfg
-sed -e s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g %{SOURCE11} > nss.cfg
+sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
%build
-# How many cpu's do we have?
+# How many CPU's do we have?
export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
export NUM_PROC=${NUM_PROC:-1}
%if 0%{?_smp_ncpus_max}
@@ -1630,7 +1763,6 @@ export NUM_PROC=${NUM_PROC:-1}
[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
%endif
-# Build IcedTea and OpenJDK.
%ifarch s390x sparc64 alpha %{power64} %{aarch64}
export ARCH_DATA_MODEL=64
%endif
@@ -1643,23 +1775,28 @@ export CFLAGS="$CFLAGS -mieee"
# Explicitly set the C++ standard as the default has changed on GCC >= 6
EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse"
EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
+
%ifarch %{power64} ppc
# fix rpmlint warnings
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
%endif
export EXTRA_CFLAGS
-(cd openjdk/common/autoconf
+(cd %{top_level_dir_name}/common/autoconf
bash ./autogen.sh
)
for suffix in %{build_loop} ; do
-if [ "$suffix" = "%{debug_suffix}" ] ; then
-debugbuild=%{debugbuild_parameter}
+if [ "x$suffix" = "x" ] ; then
+ debugbuild=release
else
-debugbuild=%{normalbuild_parameter}
+ # change --something to something
+ debugbuild=`echo $suffix | sed "s/-//g"`
fi
+# Variable used in hs_err hook on build failures
+top_dir_abs_path=$(pwd)/%{top_level_dir_name}
+
mkdir -p %{buildoutputdir -- $suffix}
pushd %{buildoutputdir -- $suffix}
@@ -1679,7 +1816,7 @@ bash ../../configure \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
- --with-lcms=bundled \
+ --with-lcms=system \
--with-stdc++lib=dynamic \
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
--with-extra-cflags="$EXTRA_CFLAGS" \
@@ -1701,24 +1838,29 @@ make \
POST_STRIP_CMD="" \
LOG=trace \
SCTP_WERROR= \
- %{targets}
+ %{targets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false )
make zip-docs
# the build (erroneously) removes read permissions from some jars
# this is a regression in OpenJDK 7 (our compiler):
# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437
-find images/%{j2sdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
-chmod ugo+r images/%{j2sdkimage}/lib/ct.sym
+find images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \;
+chmod ugo+r images/%{jdkimage}/lib/ct.sym
# remove redundant *diz and *debuginfo files
-find images/%{j2sdkimage} -iname '*.diz' -exec rm {} \;
-find images/%{j2sdkimage} -iname '*.debuginfo' -exec rm {} \;
+find images/%{jdkimage} -iname '*.diz' -exec rm {} \;
+find images/%{jdkimage} -iname '*.debuginfo' -exec rm {} \;
+
+# Build screws up permissions on binaries
+# https://bugs.openjdk.java.net/browse/JDK-8173610
+find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \;
+find images/%{jdkimage}/bin/ -exec chmod +x {} \;
popd >& /dev/null
# Install nss.cfg right away as we will be using the JRE above
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Install nss.cfg right away as we will be using the JRE above
install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
@@ -1727,7 +1869,7 @@ install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/
rm $JAVA_HOME/jre/lib/tzdb.dat
ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat
-#build cycles
+# build cycles
done
%check
@@ -1735,7 +1877,7 @@ done
# We test debug first as it will give better diagnostics on a crash
for suffix in %{rev_build_loop} ; do
-export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage}
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE13}
@@ -1753,14 +1895,14 @@ do
# All these tests rely on RPM failing the build if the exit code of any set
# of piped commands is non-zero.
- # Test for .debug_* sections in the shared object. This is the main test.
- # Stripped objects will not contain these.
+ # Test for .debug_* sections in the shared object. This is the main test
+ # Stripped objects will not contain these
eu-readelf -S "$lib" | grep "] .debug_"
test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
- # Test FILE symbols. These will most likely be removed by anyting that
+ # Test FILE symbols. These will most likely be removed by anything that
# manipulates symbol tables because it's generally useless. So a nice test
- # that nothing has messed with symbols.
+ # that nothing has messed with symbols
old_IFS="$IFS"
IFS=$'\n'
for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT")
@@ -1771,7 +1913,7 @@ do
done
IFS="$old_IFS"
- # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking.
+ # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
if [ "`basename $lib`" = "libjvm.so" ]; then
eu-readelf -s "$lib" | \
grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$"
@@ -1779,7 +1921,7 @@ do
# Test that there are no .gnu_debuglink sections pointing to another
# debuginfo file. There shouldn't be any debuginfo files, so the link makes
- # no sense either.
+ # no sense either
eu-readelf -S "$lib" | grep 'gnu'
if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
echo "bad .gnu_debuglink section."
@@ -1821,7 +1963,7 @@ $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
-#build cycles check
+# build cycles check
done
%install
@@ -1829,9 +1971,10 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir -- $suffix}/images/%{j2sdkimage}
+# Install the jdk
+pushd %{buildoutputdir -- $suffix}/images/%{jdkimage}
-#install jsa directories so we can owe them
+# Install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/
@@ -1842,7 +1985,7 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}
%if %{with_systemtap}
- # Install systemtap support files.
+ # Install systemtap support files
install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset
# note, that uniquesuffix is in BUILD dir in this case
cp -a $RPM_BUILD_DIR/%{uniquesuffix ""}/tapset$suffix/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/tapset/
@@ -1850,28 +1993,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
tapsetFiles=`ls *.stp`
popd
install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
- pushd $RPM_BUILD_ROOT%{tapsetdir}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir -- $suffix}/tapset %{tapsetdir})
- for name in $tapsetFiles ; do
- targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
- ln -sf $RELATIVE/$name $targetName
- done
- popd
+ for name in $tapsetFiles ; do
+ targetName=`echo $name | sed "s/.stp/$suffix.stp/"`
+ ln -sf %{_jvmdir}/%{sdkdir -- $suffix}/tapset/$name $RPM_BUILD_ROOT%{tapsetdir}/$targetName
+ done
%endif
- # Remove empty cacerts database.
+ # 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.
+ # 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 .
+ ln -sf /etc/pki/java/cacerts .
popd
- # Install JCE policy symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix -- $suffix}/jce/vanilla
-
- # Install versioned symlinks.
+ # Install versioned symlinks
pushd $RPM_BUILD_ROOT%{_jvmdir}
ln -sf %{jredir -- $suffix} %{jrelnk -- $suffix}
popd
@@ -1879,11 +2014,11 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
# Remove javaws man page
rm -f man/man1/javaws*
- # Install man pages.
+ # Install man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*
do
- # Convert man pages to UTF8 encoding.
+ # Convert man pages to UTF8 encoding
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
@@ -1902,19 +2037,20 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien
popd
-# Install Javadoc documentation.
+# Install Javadoc documentation
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir -- $suffix}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}
-cp -a %{buildoutputdir -- $suffix}/bundles/jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
+built_doc_archive=`echo "jdk-%{javaver}_%{updatever}$suffix-%{buildver}-docs.zip" | sed s/slowdebug/debug/`
+cp -a %{buildoutputdir -- $suffix}/bundles/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip
-# Install icons and menu entries.
+# Install icons and menu entries
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png
done
-# Install desktop files.
+# Install desktop files
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
for e in jconsole$suffix policytool$suffix ; do
desktop-file-install --vendor=%{uniquesuffix -- $suffix} --mode=644 \
@@ -1925,7 +2061,7 @@ done
# See https://bugzilla.redhat.com/show_bug.cgi?id=741821
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs
-# FIXME: remove SONAME entries from demo DSOs. See
+# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
@@ -2061,17 +2197,24 @@ 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
+# stabilize permissions
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ;
+find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ;
+
# end, dual install
done
-%if %{include_normal_build}
-# intentioanlly only for non-debug
+%if %{include_normal_build}
+# intentionally only for non-debug
%pretrans headless -p <lua>
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre
-- if copy-jdk-configs is in transaction, it installs in pretrans to temp
--- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in tranasction and so is
--- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
+-- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is
+-- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends
-- whether copy-jdk-configs is installed or not. If so, then configs are copied
-- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all
local posix = require "posix"
@@ -2088,10 +2231,10 @@ local stat2 = posix.stat(SOURCE2, "type");
print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.")
end;
package.path = package.path .. ";" .. SOURCE1
-else
+else
if (stat2 ~= nil) then
if (debug) then
- print(SOURCE2 .." exists - copy-jdk-configs alrady installed and NOT in transation. Using.")
+ print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.")
end;
package.path = package.path .. ";" .. SOURCE2
else
@@ -2103,11 +2246,11 @@ else
return
end
end
--- run contetn of included file with fake args
+-- run content of included file with fake args
arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"}
require "copy_jdk_configs.lua"
-%post
+%post
%{post_script %{nil}}
%post headless
@@ -2144,45 +2287,45 @@ require "copy_jdk_configs.lua"
%{postun_javadoc_zip %{nil}}
%endif
-%if %{include_debug_build}
-%post debug
+%if %{include_debug_build}
+%post slowdebug
%{post_script -- %{debug_suffix_unquoted}}
-%post headless-debug
+%post headless-slowdebug
%{post_headless -- %{debug_suffix_unquoted}}
-%postun debug
+%postun slowdebug
%{postun_script -- %{debug_suffix_unquoted}}
-%postun headless-debug
+%postun headless-slowdebug
%{postun_headless -- %{debug_suffix_unquoted}}
-%posttrans debug
+%posttrans slowdebug
%{posttrans_script -- %{debug_suffix_unquoted}}
-%post devel-debug
+%post devel-slowdebug
%{post_devel -- %{debug_suffix_unquoted}}
-%postun devel-debug
+%postun devel-slowdebug
%{postun_devel -- %{debug_suffix_unquoted}}
-%posttrans devel-debug
+%posttrans devel-slowdebug
%{posttrans_devel -- %{debug_suffix_unquoted}}
-%post javadoc-debug
+%post javadoc-slowdebug
%{post_javadoc -- %{debug_suffix_unquoted}}
-%postun javadoc-debug
+%postun javadoc-slowdebug
%{postun_javadoc -- %{debug_suffix_unquoted}}
-%post javadoc-zip-debug
+%post javadoc-zip-slowdebug
%{post_javadoc_zip -- %{debug_suffix_unquoted}}
-%postun javadoc-zip-debug
+%postun javadoc-zip-slowdebug
%{postun_javadoc_zip -- %{debug_suffix_unquoted}}
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files
# main package builds always
%{files_jre %{nil}}
@@ -2192,10 +2335,10 @@ require "copy_jdk_configs.lua"
%endif
-%if %{include_normal_build}
+%if %{include_normal_build}
%files headless
-# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
-# all config/norepalce files (and more) have to be declared in pretrans. See pretrans
+# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue
+# all config/noreplace files (and more) have to be declared in pretrans. See pretrans
%{files_jre_headless %{nil}}
%files devel
@@ -2210,6 +2353,10 @@ require "copy_jdk_configs.lua"
%files javadoc
%{files_javadoc %{nil}}
+# this puts huge file to /usr/share
+# unluckily ti is really a documentation file
+# and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only
+# same for debug variant
%files javadoc-zip
%{files_javadoc_zip %{nil}}
@@ -2223,39 +2370,43 @@ require "copy_jdk_configs.lua"
%endif
%endif
-%if %{include_debug_build}
-%files debug
+%if %{include_debug_build}
+%files slowdebug
%{files_jre -- %{debug_suffix_unquoted}}
-%files headless-debug
+%files headless-slowdebug
%{files_jre_headless -- %{debug_suffix_unquoted}}
-%files devel-debug
+%files devel-slowdebug
%{files_devel -- %{debug_suffix_unquoted}}
-%files demo-debug -f %{name}-demo.files-debug
+%files demo-slowdebug -f %{name}-demo.files-slowdebug
%{files_demo -- %{debug_suffix_unquoted}}
-%files src-debug
+%files src-slowdebug
%{files_src -- %{debug_suffix_unquoted}}
-%files javadoc-debug
+%files javadoc-slowdebug
%{files_javadoc -- %{debug_suffix_unquoted}}
-%files javadoc-zip-debug
+%files javadoc-zip-slowdebug
%{files_javadoc_zip -- %{debug_suffix_unquoted}}
-%files accessibility-debug
+%files accessibility-slowdebug
%{files_accessibility -- %{debug_suffix_unquoted}}
%if %{with_openjfx_binding}
-%files openjfx-debug -f %{name}-openjfx.files-debug
+%files openjfx-slowdebug -f %{name}-openjfx.files-slowdebug
-%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%files openjfx-devel-slowdebug -f %{name}-openjfx-devel.files-slowdebug
%endif
%endif
%changelog
+* Thu Aug 30 2018 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.181-1.180802
+- update sources to 8u181
+- sync with mainline package
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.171-2.180511
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
diff --git a/java-1.8.0-openjdk-size_t.patch b/java-1.8.0-openjdk-size_t.patch
index c9c6b97..6e0d762 100644
--- a/java-1.8.0-openjdk-size_t.patch
+++ b/java-1.8.0-openjdk-size_t.patch
@@ -1,7 +1,7 @@
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -2659,7 +2659,7 @@ void CFLS_LAB::get_from_global_pool(size
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+@@ -2659,7 +2659,7 @@
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
@@ -10,10 +10,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compact
}
assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -957,7 +957,7 @@ void ConcurrentMarkSweepGeneration::comp
+diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+@@ -957,7 +957,7 @@
if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size");
@@ -22,7 +22,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: ");
-@@ -6575,7 +6575,7 @@ void CMSCollector::reset(bool asynch) {
+@@ -6577,7 +6577,7 @@
HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
@@ -31,7 +31,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
_markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() &&
-@@ -6873,7 +6873,7 @@ void CMSMarkStack::expand() {
+@@ -6875,7 +6875,7 @@
return;
}
// Double capacity if possible
@@ -40,10 +40,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurr
// Do not give up existing stack until we have managed to
// get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -3902,7 +3902,7 @@ void CMTask::drain_local_queue(bool part
+diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+@@ -3903,7 +3903,7 @@
// of things to do) or totally (at the very end).
size_t target_size;
if (partially) {
@@ -52,7 +52,7 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
} else {
target_size = 0;
}
-@@ -4728,7 +4728,7 @@ size_t G1PrintRegionLivenessInfoClosure:
+@@ -4707,7 +4707,7 @@
// The > 0 check is to deal with the prev and next live bytes which
// could be 0.
if (*hum_bytes > 0) {
@@ -61,10 +61,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_
*hum_bytes -= bytes;
}
return bytes;
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1726,7 +1726,7 @@ HeapWord* G1CollectedHeap::expand_and_al
+diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+@@ -1726,7 +1726,7 @@
verify_region_sets_optional();
@@ -73,10 +73,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size
ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion",
ergo_format_reason("allocation request failed")
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -38,7 +38,7 @@ G1StringDedupQueue::G1StringDedupQueue()
+diff --git a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
+@@ -117,7 +117,7 @@
+ return reserved_size() - committed_size();
+ }
+
+-size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
++uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
+ return (addr - _low_boundary) / _page_size;
+ }
+
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp
+@@ -38,7 +38,7 @@
_cancel(false),
_empty(true),
_dropped(0) {
@@ -85,22 +97,22 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp.s
_queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
for (size_t i = 0; i < _nqueues; i++) {
new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -110,7 +110,7 @@ public:
+diff --git a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+@@ -120,7 +120,7 @@
};
- G1StringDedupEntryCache::G1StringDedupEntryCache() {
-- _nlists = MAX2(ParallelGCThreads, (size_t)1);
-+ _nlists = MAX2(ParallelGCThreads, (uintx)1);
- _lists = PaddedArray<G1StringDedupEntryFreeList, mtGC>::create_unfreeable((uint)_nlists);
- }
-
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -109,7 +109,7 @@ void HeapRegion::setup_heap_region_size(
+ G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
+- _nlists(MAX2(ParallelGCThreads, (size_t)1)),
++ _nlists(MAX2(ParallelGCThreads, (uintx)1)),
+ _max_list_length(0),
+ _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
+ _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
+diff --git a/src/share/vm/gc_implementation/g1/heapRegion.cpp b/src/share/vm/gc_implementation/g1/heapRegion.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
+@@ -109,7 +109,7 @@
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
@@ -109,10 +121,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jd
}
int region_size_log = log2_long((jlong) region_size);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -194,7 +194,7 @@ bool ParScanThreadState::take_from_overf
+diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+@@ -194,7 +194,7 @@
const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4,
@@ -121,10 +133,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow
// stack to our work queue.
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -910,8 +910,8 @@ void PSParallelCompact::initialize_space
+diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+@@ -910,8 +910,8 @@
void PSParallelCompact::initialize_dead_wood_limiter()
{
const size_t max = 100;
@@ -135,10 +147,10 @@ diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallel
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0);
-diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -385,7 +385,7 @@ void TwoGenerationCollectorPolicy::initi
+diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+@@ -385,7 +385,7 @@
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
@@ -147,7 +159,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to
-@@ -433,7 +433,7 @@ void GenCollectorPolicy::initialize_size
+@@ -433,7 +433,7 @@
// yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize.
@@ -156,7 +168,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
}
assert(max_new_size > 0, "All paths should set max_new_size");
-@@ -455,24 +455,23 @@ void GenCollectorPolicy::initialize_size
+@@ -455,24 +455,23 @@
// lower limit.
_min_gen0_size = NewSize;
desired_new_size = NewSize;
@@ -186,7 +198,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
assert(_min_gen0_size > 0, "Sanity check");
_initial_gen0_size = desired_new_size;
-@@ -573,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi
+@@ -573,7 +572,7 @@
} else {
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
@@ -195,10 +207,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspo
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
-diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp
---- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1455,7 +1455,7 @@ void MetaspaceGC::initialize() {
+diff --git a/src/share/vm/memory/metaspace.cpp b/src/share/vm/memory/metaspace.cpp
+--- openjdk/hotspot/src/share/vm/memory/metaspace.cpp
++++ openjdk/hotspot/src/share/vm/memory/metaspace.cpp
+@@ -1455,7 +1455,7 @@
void MetaspaceGC::post_initialize() {
// Reset the high-water mark once the VM initialization is done.
@@ -207,7 +219,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
}
bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
-@@ -1515,7 +1515,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1515,7 +1515,7 @@
(size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity,
@@ -216,7 +228,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
-@@ -1573,7 +1573,7 @@ void MetaspaceGC::compute_new_size() {
+@@ -1573,7 +1573,7 @@
const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity,
@@ -225,7 +237,7 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f"
-@@ -3245,7 +3245,7 @@ void Metaspace::global_initialize() {
+@@ -3285,7 +3285,7 @@
// on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
@@ -234,10 +246,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size.
-diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -238,13 +238,13 @@ size_t ThreadLocalAllocBuffer::initial_d
+diff --git a/src/share/vm/memory/threadLocalAllocBuffer.cpp b/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+@@ -238,13 +238,13 @@
size_t init_sz = 0;
if (TLABSize > 0) {
@@ -254,10 +266,10 @@ diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8
init_sz = align_object_size(init_sz);
}
init_sz = MIN2(MAX2(init_sz, min_size()), max_size());
-diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
---- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2015-06-09 10:21:39.000000000 -0400
-@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont
+diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+@@ -48,7 +48,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -266,7 +278,7 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont
+@@ -82,7 +82,7 @@
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
@@ -275,10 +287,10 @@ diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hot
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
-diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp
---- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2015-05-19 12:16:26.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2015-06-09 10:21:39.000000000 -0400
-@@ -1277,7 +1277,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -1283,7 +1283,7 @@
// NewSize was set on the command line and it is larger than
// preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
@@ -287,7 +299,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
} else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
}
-@@ -1302,8 +1302,8 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1308,8 +1308,8 @@
// Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) {
@@ -298,7 +310,7 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1313,7 +1313,7 @@ void Arguments::set_cms_and_parnew_gc_fl
+@@ -1319,7 +1319,7 @@
// so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) {
@@ -307,15 +319,3 @@ diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
-diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp
---- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp.size_t 2015-06-09 10:35:04.000000000 -0400
-+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp 2015-06-09 10:33:21.000000000 -0400
-@@ -117,7 +117,7 @@ size_t G1PageBasedVirtualSpace::uncommit
- return reserved_size() - committed_size();
- }
-
--size_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
-+uintptr_t G1PageBasedVirtualSpace::addr_to_page_index(char* addr) const {
- return (addr - _low_boundary) / _page_size;
- }
-
diff --git a/jconsole.desktop.in b/jconsole.desktop.in
index a096349..a8917c1 100644
--- a/jconsole.desktop.in
+++ b/jconsole.desktop.in
@@ -1,10 +1,10 @@
[Desktop Entry]
-Name=OpenJDK 8 Monitoring & Management Console #ARCH#
-Comment=Monitor and manage OpenJDK applications for #ARCH#
-Exec=#JAVA_HOME#/jconsole
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
+Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
+Exec=@JAVA_HOME@/jconsole
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
-Categories=Development;Monitor;Java;
+Categories=Development;Profiling;Java;
Version=1.0
diff --git a/policytool.desktop.in b/policytool.desktop.in
index d38b42d..e05969d 100644
--- a/policytool.desktop.in
+++ b/policytool.desktop.in
@@ -1,8 +1,8 @@
[Desktop Entry]
-Name=OpenJDK 8 Policy Tool #ARCH#
-Comment=Manage OpenJDK policy files #ARCH#
-Exec=#JRE_HOME#/policytool
-Icon=java-1.8.0
+Name=OpenJDK @JAVA_MAJOR_VERSION@ Policy Tool #ARCH#
+Comment=Manage OpenJDK @JAVA_MAJOR_VERSION@ policy files #ARCH#
+Exec=@JRE_HOME@/policytool
+Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-security-tools-PolicyTool
diff --git a/pr3183.patch b/pr3183.patch
new file mode 100644
index 0000000..5a619b4
--- /dev/null
+++ b/pr3183.patch
@@ -0,0 +1,158 @@
+
+# HG changeset patch
+# User andrew
+# Date 1478057514 0
+# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
+# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
+PR3183: Support Fedora/RHEL system crypto policy
+
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/classes/java/security/Security.java
+--- openjdk/jdk/src/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
+@@ -43,6 +43,9 @@
+ * implementation-specific location, which is typically the properties file
+ * {@code lib/security/java.security} in the Java installation directory.
+ *
++ * <p>Additional default values of security properties are read from a
++ * system-specific location, if available.</p>
++ *
+ * @author Benjamin Renaud
+ */
+
+@@ -52,6 +55,10 @@
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+
++ /* System property file*/
++ private static final String SYSTEM_PROPERTIES =
++ "/etc/crypto-policies/back-ends/java.config";
++
+ /* The java.security properties */
+ private static Properties props;
+
+@@ -93,6 +100,7 @@
+ if (sdebug != null) {
+ sdebug.println("reading security properties file: " +
+ propFile);
++ sdebug.println(props.toString());
+ }
+ } catch (IOException e) {
+ if (sdebug != null) {
+@@ -114,6 +122,31 @@
+ }
+
+ if ("true".equalsIgnoreCase(props.getProperty
++ ("security.useSystemPropertiesFile"))) {
++
++ // now load the system file, if it exists, so its values
++ // will win if they conflict with the earlier values
++ try (BufferedInputStream bis =
++ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
++ props.load(bis);
++ loadedProps = true;
++
++ if (sdebug != null) {
++ sdebug.println("reading system security properties file " +
++ SYSTEM_PROPERTIES);
++ sdebug.println(props.toString());
++ }
++ } catch (IOException e) {
++ if (sdebug != null) {
++ sdebug.println
++ ("unable to load security properties from " +
++ SYSTEM_PROPERTIES);
++ e.printStackTrace();
++ }
++ }
++ }
++
++ if ("true".equalsIgnoreCase(props.getProperty
+ ("security.overridePropertiesFile"))) {
+
+ String extraPropFile = System.getProperty
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-aix
+--- openjdk/jdk/src/share/lib/security/java.security-aix Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-aix Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-linux Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=true
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-macosx
+--- openjdk/jdk/src/share/lib/security/java.security-macosx Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-macosx Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-solaris
+--- openjdk/jdk/src/share/lib/security/java.security-solaris Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-solaris Wed Nov 02 03:31:54 2016 +0000
+@@ -278,6 +278,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/share/lib/security/java.security-windows
+--- openjdk/jdk/src/share/lib/security/java.security-windows Wed Oct 26 03:51:39 2016 +0100
++++ openjdk/jdk/src/share/lib/security/java.security-windows Wed Nov 02 03:31:54 2016 +0000
+@@ -279,6 +279,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=false
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
+
diff --git a/pr3539-rh1548475.patch b/pr3539-rh1548475.patch
new file mode 100644
index 0000000..0bae3de
--- /dev/null
+++ b/pr3539-rh1548475.patch
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User andrew
+# Date 1526065930 -3600
+# Fri May 11 20:12:10 2018 +0100
+# Node ID b8fc1e640c4c7f38ca94131279cb67c4d3de6961
+# Parent afb31413c73cbc06420fdb447aa90a7a38258904
+PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/jsig.make openjdk/hotspot/make/aix/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/aix/makefiles/jsig.make
++++ openjdk/hotspot/make/aix/makefiles/jsig.make
+@@ -45,7 +45,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ LFLAGS_JSIG += $(BIN_UTILS)
+
+diff --git openjdk.orig/hotspot/make/aix/makefiles/saproc.make openjdk/hotspot/make/aix/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/aix/makefiles/saproc.make
++++ openjdk/hotspot/make/aix/makefiles/saproc.make
+@@ -66,7 +66,7 @@
+ endif
+
+
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
+ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+diff --git openjdk.orig/hotspot/make/aix/makefiles/vm.make openjdk/hotspot/make/aix/makefiles/vm.make
+--- openjdk.orig/hotspot/make/aix/makefiles/vm.make
++++ openjdk/hotspot/make/aix/makefiles/vm.make
+@@ -117,7 +117,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/jsig.make openjdk/hotspot/make/bsd/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/jsig.make
++++ openjdk/hotspot/make/bsd/makefiles/jsig.make
+@@ -52,7 +52,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
++LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/saproc.make openjdk/hotspot/make/bsd/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/saproc.make
++++ openjdk/hotspot/make/bsd/makefiles/saproc.make
+@@ -114,7 +114,7 @@
+ # bring in minimum version argument or we'll fail on OSX 10.10
+ SA_LFLAGS = $(LFLAGS)
+ endif
+-SA_LFLAGS += $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS += $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ BOOT_JAVA_INCLUDES = -I$(BOOT_JAVA_HOME)/include \
+ -I$(BOOT_JAVA_HOME)/include/$(shell uname -s | tr "[:upper:]" "[:lower:]")
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/vm.make openjdk/hotspot/make/bsd/makefiles/vm.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/vm.make
++++ openjdk/hotspot/make/bsd/makefiles/vm.make
+@@ -119,7 +119,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
+diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
+--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
++++ openjdk/hotspot/make/linux/makefiles/jsig.make
+@@ -44,7 +44,7 @@
+ # cause problems with interposing. See CR: 6466665
+ # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
+
+-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK)
++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) $(EXTRA_LDFLAGS)
+
+ # DEBUG_BINARIES overrides everything, use full -g debug information
+ ifeq ($(DEBUG_BINARIES), true)
+diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
++++ openjdk/hotspot/make/linux/makefiles/saproc.make
+@@ -73,7 +73,7 @@
+ else
+ ALT_SAINCDIR=
+ endif
+-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
+
+ SAARCH ?= $(BUILDARCH)
+
+diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make
++++ openjdk/hotspot/make/linux/makefiles/vm.make
+@@ -130,7 +130,7 @@
+
+ # Extra flags from gnumake's invocation or environment
+ CFLAGS += $(EXTRA_CFLAGS)
+-LFLAGS += $(EXTRA_CFLAGS)
++LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
+
+ # Don't set excutable bit on stack segment
+ # the same could be done by separate execstack command
diff --git a/pr3559.patch b/pr3559.patch
new file mode 100644
index 0000000..48211dc
--- /dev/null
+++ b/pr3559.patch
@@ -0,0 +1,29 @@
+# HG changeset patch
+# User aph
+# Date 1338206478 14400
+# Mon May 28 08:01:18 2012 -0400
+# Node ID 6275d7b419091092752d5a1854194c98897892ba
+# Parent be1379a186ba527b32c93a83e04c9600735fe44b
+PR3559: Use ldrexd for atomic reads on ARMv7.
+
+2012-05-28 Andrew Haley <aph(a)redhat.com>
+
+ * os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
+ on ARMv7.
+
+diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+@@ -54,6 +54,12 @@
+ "std %0, 0(%2)\n"
+ : "=r"(tmp)
+ : "a"(src), "a"(dst));
++#elif defined(__ARM_ARCH_7A__)
++ jlong tmp;
++ asm volatile ("ldrexd %0, [%1]\n"
++ : "=r"(tmp)
++ : "r"(src), "m"(src));
++ *(jlong *) dst = tmp;
+ #else
+ *(jlong *) dst = *(jlong *) src;
+ #endif
diff --git a/pr3575-rh1567204.patch b/pr3575-rh1567204.patch
new file mode 100644
index 0000000..ce24c59
--- /dev/null
+++ b/pr3575-rh1567204.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User andrew
+# Date 1525111445 -3600
+# Mon Apr 30 19:04:05 2018 +0100
+# Node ID 388fc8da23044317c160678ffa8ff541c216a255
+# Parent 556adf3a76aa81bf3918d7d46554dae7cc1d5c5c
+PR3575: System cacerts database handling should not affect jssecacerts
+
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+@@ -162,7 +162,7 @@
+ * Try:
+ * javax.net.ssl.trustStore (if this variable exists, stop)
+ * jssecacerts
+- * cacerts
++ * cacerts (system and local)
+ *
+ * If none exists, we use an empty keystore.
+ */
+@@ -174,14 +174,14 @@
+ storeFile = new File(storeFileName);
+ fis = getFileInputStream(storeFile);
+ } else {
+- /* Check system cacerts DB first; /etc/pki/java/cacerts */
+- storeFile = new File(sep + "etc" + sep + "pki" + sep
+- + "java" + sep + "cacerts");
++ String javaHome = props.get("javaHome");
++ storeFile = new File(javaHome + sep + "lib" + sep
++ + "security" + sep +
++ "jssecacerts");
+ if ((fis = getFileInputStream(storeFile)) == null) {
+- 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) {
+ storeFile = new File(javaHome + sep + "lib" + sep
+ + "security" + sep +
diff --git a/pr3591.patch b/pr3591.patch
new file mode 100644
index 0000000..e287590
--- /dev/null
+++ b/pr3591.patch
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User andrew
+# Date 1526489197 -3600
+# Wed May 16 17:46:37 2018 +0100
+# Node ID 64e87a408afd2b56d59dad73dee28d4b99463810
+# Parent 00ccc73498628a51a45301322e64ce2ad06e49be
+PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
+
+diff --git openjdk.orig///common/autoconf/toolchain.m4 openjdk///common/autoconf/toolchain.m4
+--- openjdk.orig///common/autoconf/toolchain.m4
++++ openjdk///common/autoconf/toolchain.m4
+@@ -794,6 +794,8 @@
+ TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$REALIGN_CFLAG -Werror], [],
+ AC_MSG_ERROR([The selected compiler $CXX does not support -mstackrealign! Try to put another compiler in the path.])
+ )
++ CFLAGS_JDK="${CFLAGS_JDK} ${REALIGN_CFLAG}"
++ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${REALIGN_CFLAG}"
+ AC_SUBST([REALIGN_CFLAG])
+ fi
+
diff --git a/pr3593-s390-size_t_format_flags.patch b/pr3593-s390-size_t_format_flags.patch
new file mode 100644
index 0000000..b9ae9ab
--- /dev/null
+++ b/pr3593-s390-size_t_format_flags.patch
@@ -0,0 +1,143 @@
+diff -r cf43a852f486 src/share/vm/asm/codeBuffer.cpp
+--- openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -977,7 +977,7 @@
+ for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) {
+ CodeSection* sect = code_section(n);
+ if (!sect->is_allocated() || sect->is_empty()) continue;
+- xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>",
++ xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>",
+ n, sect->limit() - sect->start(), sect->limit() - sect->end());
+ }
+ xtty->print_cr("</blob>");
+diff -r cf43a852f486 src/share/vm/code/codeCache.cpp
+--- openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/code/codeCache.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -191,7 +191,7 @@
+ }
+ if (PrintCodeCacheExtension) {
+ ResourceMark rm;
+- tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)",
++ tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)",
+ (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(),
+ (address)_heap->high() - (address)_heap->low_boundary());
+ }
+diff -r cf43a852f486 src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp
+--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -556,7 +556,7 @@
+ " [Table]\n"
+ " [Memory Usage: "G1_STRDEDUP_BYTES_FORMAT_NS"]\n"
+ " [Size: "SIZE_FORMAT", Min: "SIZE_FORMAT", Max: "SIZE_FORMAT"]\n"
+- " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " UINTX_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
++ " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " SIZE_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n"
+ " [Resize Count: "UINTX_FORMAT", Shrink Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS"), Grow Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS")]\n"
+ " [Rehash Count: "UINTX_FORMAT", Rehash Threshold: "UINTX_FORMAT", Hash Seed: 0x%x]\n"
+ " [Age Threshold: "UINTX_FORMAT"]",
+diff -r cf43a852f486 src/share/vm/memory/blockOffsetTable.cpp
+--- openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -57,7 +57,7 @@
+ gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: ");
+ gclog_or_tty->print_cr(" "
+ " rs.base(): " INTPTR_FORMAT
+- " rs.size(): " INTPTR_FORMAT
++ " rs.size(): " SIZE_FORMAT
+ " rs end(): " INTPTR_FORMAT,
+ p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size()));
+ gclog_or_tty->print_cr(" "
+diff -r cf43a852f486 src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1285,14 +1285,14 @@
+ }
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
++ tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize);
+ }
+
+ // Code along this path potentially sets NewSize and OldSize
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
+- " initial_heap_size: " SIZE_FORMAT
++ tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT
++ " initial_heap_size: " UINTX_FORMAT
+ " max_heap: " SIZE_FORMAT,
+ min_heap_size(), InitialHeapSize, max_heap);
+ }
+@@ -1308,7 +1308,7 @@
+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t)NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
++ tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize);
+ }
+ }
+ // Unless explicitly requested otherwise, size old gen
+@@ -1318,7 +1318,7 @@
+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize));
+ if (PrintGCDetails && Verbose) {
+ // Too early to use gclog_or_tty
+- tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
++ tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize);
+ }
+ }
+ }
+@@ -1834,7 +1834,7 @@
+
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
++ tty->print_cr(" Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial);
+ }
+ FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
+ }
+@@ -1844,7 +1844,7 @@
+ set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
+ if (PrintGCDetails && Verbose) {
+ // Cannot use gclog_or_tty yet.
+- tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size());
++ tty->print_cr(" Minimum heap size " UINTX_FORMAT, min_heap_size());
+ }
+ }
+ }
+diff -r cf43a852f486 src/share/vm/utilities/globalDefinitions.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 03:43:29 2016 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jan 13 05:30:26 2016 +0000
+@@ -1382,12 +1382,21 @@
+
+ #define INTPTR_FORMAT_W(width) "%" #width PRIxPTR
+
++#if defined(S390) && !defined(_LP64)
++#define SSIZE_FORMAT "%z" PRIdPTR
++#define SIZE_FORMAT "%z" PRIuPTR
++#define SIZE_FORMAT_HEX "0x%z" PRIxPTR
++#define SSIZE_FORMAT_W(width) "%" #width "z" PRIdPTR
++#define SIZE_FORMAT_W(width) "%" #width "z" PRIuPTR
++#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR
++#else // !S390
+ #define SSIZE_FORMAT "%" PRIdPTR
+ #define SIZE_FORMAT "%" PRIuPTR
+ #define SIZE_FORMAT_HEX "0x%" PRIxPTR
+ #define SSIZE_FORMAT_W(width) "%" #width PRIdPTR
+ #define SIZE_FORMAT_W(width) "%" #width PRIuPTR
+ #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR
++#endif // S390
+
+ #define INTX_FORMAT "%" PRIdPTR
+ #define UINTX_FORMAT "%" PRIuPTR
+diff -r 388e9d0905e6 src/share/vm/memory/collectorPolicy.cpp
+--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Mon Apr 11 11:33:18 2016 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp Tue Apr 12 04:12:50 2016 +0100
+@@ -1056,7 +1056,8 @@
+ size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size);
+ assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected));
+ assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,
+- err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize));
++ err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT,
++ expected, NewSize));
+ }
+
+ private:
diff --git a/pr3601.patch b/pr3601.patch
new file mode 100644
index 0000000..d1e9576
--- /dev/null
+++ b/pr3601.patch
@@ -0,0 +1,38 @@
+# HG changeset patch
+# User andrew
+# Date 1529475043 -3600
+# Wed Jun 20 07:10:43 2018 +0100
+# Node ID f6341f4635dacb56678264d29a88cd052b74036b
+# Parent 30520d5018b509b0ae68f5fcc9a5c540e3e5b2de
+PR3601: Fix additional -Wreturn-type issues introduced by 8061651
+
+diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
+@@ -835,7 +835,7 @@
+ JVM_ENTRY(jboolean, JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname))
+ JVMWrapper("JVM_KnownToNotExist");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::known_to_not_exist(env, loader, classname, CHECK_(false));
++ return ClassLoaderExt::known_to_not_exist(env, loader, classname, THREAD);
+ #else
+ return false;
+ #endif
+@@ -845,7 +845,7 @@
+ JVM_ENTRY(jobjectArray, JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader))
+ JVMWrapper("JVM_GetResourceLookupCacheURLs");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache_urls(env, loader, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache_urls(env, loader, THREAD);
+ #else
+ return NULL;
+ #endif
+@@ -855,7 +855,7 @@
+ JVM_ENTRY(jintArray, JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name))
+ JVMWrapper("JVM_GetResourceLookupCache");
+ #if INCLUDE_CDS
+- return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, CHECK_NULL);
++ return ClassLoaderExt::get_lookup_cache(env, loader, resource_name, THREAD);
+ #else
+ return NULL;
+ #endif
diff --git a/rh1566890_embargoed20180521.patch b/rh1566890_embargoed20180521.patch
new file mode 100644
index 0000000..e29bdb9
--- /dev/null
+++ b/rh1566890_embargoed20180521.patch
@@ -0,0 +1,44 @@
+# ssbd2.patch
+--- ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp~ 2018-05-02 13:02:51.924489199 -0400
++++ ./openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2018-05-02 13:04:57.274216581 -0400
+@@ -102,6 +102,8 @@
+ # include <inttypes.h>
+ # include <sys/ioctl.h>
+
++#include <sys/prctl.h>
++
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+
+ #ifndef _GNU_SOURCE
+@@ -4892,6 +4894,31 @@
+ }
+ }
+
++/* Per task speculation control */
++#ifndef PR_GET_SPECULATION_CTRL
++#define PR_GET_SPECULATION_CTRL 52
++#endif
++#ifndef PR_SET_SPECULATION_CTRL
++#define PR_SET_SPECULATION_CTRL 53
++#endif
++/* Speculation control variants */
++# undef PR_SPEC_STORE_BYPASS
++# define PR_SPEC_STORE_BYPASS 0
++/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
++# undef PR_SPEC_NOT_AFFECTED
++# undef PR_SPEC_PRCTL
++# undef PR_SPEC_ENABLE
++# undef PR_SPEC_DISABLE
++# define PR_SPEC_NOT_AFFECTED 0
++# define PR_SPEC_PRCTL (1UL << 0)
++# define PR_SPEC_ENABLE (1UL << 1)
++# define PR_SPEC_DISABLE (1UL << 2)
++
++static void set_speculation() __attribute__((constructor));
++static void set_speculation() {
++ prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
++}
++
+ // this is called _before_ the most of global arguments have been parsed
+ void os::init(void) {
+ char dummy; /* used to get a guess on initial stack address */
diff --git a/rhbz1548475-LDFLAGSusage.patch b/rhbz1548475-LDFLAGSusage.patch
deleted file mode 100644
index 243c71b..0000000
--- a/rhbz1548475-LDFLAGSusage.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-# User jvanek
-# https://bugzilla.redhat.com/show_bug.cgi?id=1548475
-# java-1.8.0-openjdk: Partial build flags injection
-# LFLAGS += $(EXTRA_CFLAGS) corrected to LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
---- openjdk/hotspot/make/aix/makefiles/vm.make
-+++ openjdk/hotspot/make/aix/makefiles/vm.make
-@@ -117,7 +117,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/bsd/makefiles/vm.make
-+++ openjdk/hotspot/make/bsd/makefiles/vm.make
-@@ -119,7 +119,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/vm.make
-+++ openjdk/hotspot/make/linux/makefiles/vm.make
-@@ -122,7 +122,7 @@
-
- # Extra flags from gnumake's invocation or environment
- CFLAGS += $(EXTRA_CFLAGS)
--LFLAGS += $(EXTRA_CFLAGS)
-+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS)
-
- # Don't set excutable bit on stack segment
- # the same could be done by separate execstack command
---- openjdk/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -73,7 +73,7 @@
- else
- ALT_SAINCDIR=
- endif
--SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
-+SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- SAARCH ?= $(BUILDARCH)
-
---- openjdk/hotspot/make/linux/makefiles/jsig.make
-+++ openjdk/hotspot/make/linux/makefiles/jsig.make
-@@ -44,7 +44,7 @@ LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
- # cause problems with interposing. See CR: 6466665
- # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
--LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS)
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
- ifeq ($(DEBUG_BINARIES), true)
diff --git a/rhbz_1538767_fix_linking.patch b/rhbz_1538767_fix_linking.patch
deleted file mode 100644
index b321611..0000000
--- a/rhbz_1538767_fix_linking.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User sgehwolf
-# Date 1523360781 -7200
-# Tue Apr 10 13:46:21 2018 +0200
-# Node ID 5f2401aef9acb6998f06cb82fdd8a84eda3e63ad
-# Parent 656ab3b39178c1e4de644d490613bfd8212ae924
-8196516: libfontmanager must be built with LDFLAGS allowing unresolved symbols
-Summary: Fixes build failures on some sustems with custom LDFLAGS settings.
-
-diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
---- a/make/lib/Awt2dLibraries.gmk
-+++ b/make/lib/Awt2dLibraries.gmk
-@@ -927,6 +927,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
- BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp_CXXFLAGS := -fno-strict-overflow
- endif
-
-+# LDFLAGS clarification:
-+# Filter relevant linker flags disallowing unresolved symbols as we cannot
-+# build-time decide to which library to link against (libawt_headless or
-+# libawt_xawt). See JDK-8196516 for details.
- $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- LIBRARY := fontmanager, \
- OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -941,7 +945,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \
- CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \
- -DCC_NOEX, \
- MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
-- LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
-+ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
-+ $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
diff --git a/sources b/sources
index ad9eb3b..9132140 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (aarch32-port-jdk8u-jdk8u171-b11-aarch32-180511.tar.xz) = 30c94eee26b2134cb254786d7d9dcc3ef7a05ec545d60edcda098b77247bc1f276345bde5555b373b58a7b29e66e8f5bb07fd34813460f7a7f07008a611bb43a
+SHA512 (aarch32-port-jdk8u-jdk8u181-b13-aarch32-180802.tar.xz) = dc0def6e3c25653bfcd9a3463c8946cfa7ea60eba86be28a5c372d7a1306f7acfafdf18c110bdc33fff961c9af0d085e65cbcbe5d68d1960b2b10b161d5c970a
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
diff --git a/suse_linuxfilestore.patch b/suse_linuxfilestore.patch
deleted file mode 100644
index 6a9f643..0000000
--- a/suse_linuxfilestore.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:40:26.690809603 +0200
-+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java 2017-08-23 11:44:28.314815334 +0200
-@@ -74,8 +74,16 @@
- } catch (UnixException x) {
- x.rethrowAsIOException(parent);
- }
-- if (attrs.dev() != dev())
-- break;
-+ if (attrs.dev() != dev()) {
-+
-+ // step 3: lookup mounted file systems (use /proc/mounts to ensure we
-+ // find the file system even when not in /etc/mtab)
-+ byte[] dir = path.asByteArray();
-+ for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
-+ if (Arrays.equals(dir, entry.dir()))
-+ return entry;
-+ }
-+ }
- path = parent;
- parent = parent.getParent();
- }
5 years, 8 months