Update to aarch64-shenandoah-jdk8u222-b01.

Refactor PR2888 after inclusion of 8129988 upstream. Now includes PR3575.
Drop 8171000 & 8197546 as applied upstream.
This commit is contained in:
Andrew Hughes 2019-07-24 05:07:05 +01:00
parent b961b8d01b
commit 2a3db76e6c
7 changed files with 49 additions and 247 deletions

1
.gitignore vendored
View File

@ -138,3 +138,4 @@
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b03.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b03.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b04.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b04.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u222-b01.tar.xz

View File

@ -217,7 +217,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global shenandoah_project aarch64-port %global shenandoah_project aarch64-port
%global shenandoah_repo jdk8u-shenandoah %global shenandoah_repo jdk8u-shenandoah
%global shenandoah_revision aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30 %global shenandoah_revision aarch64-shenandoah-jdk8u222-b01
# Define old aarch64/jdk8u tree variables for compatibility # Define old aarch64/jdk8u tree variables for compatibility
%global project %{shenandoah_project} %global project %{shenandoah_project}
%global repo %{shenandoah_repo} %global repo %{shenandoah_repo}
@ -226,19 +226,19 @@
%global icedteaver 3.11.0 %global icedteaver 3.11.0
# e.g. aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30 -> aarch64-shenandoah-jdk8u212-b04 # e.g. aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30 -> aarch64-shenandoah-jdk8u212-b04
%global version_tag %(VERSION=%{revision}; echo ${VERSION%%-shenandoah*}) %global version_tag %(VERSION=%{revision}; echo ${VERSION%%-shenandoah-merge*})
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{version_tag}; echo ${VERSION%%-*}) %global whole_update %(VERSION=%{version_tag}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60 # eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
%global updatever %(VERSION=%{whole_update}; echo ${VERSION##*u}) %global updatever %(VERSION=%{whole_update}; echo ${VERSION##*u})
# eg jdk8u60-b27 -> b27 # eg jdk8u60-b27 -> b27
%global buildver %(VERSION=%{version_tag}; echo ${VERSION##*-}) %global buildver %(VERSION=%{version_tag}; echo ${VERSION##*-})
%global rpmrelease 6 %global rpmrelease 1
# Define milestone (EA for pre-releases, GA ("fcs") for releases) # Define milestone (EA for pre-releases, GA ("fcs") for releases)
# Release will be (where N is usually a number starting at 1): # Release will be (where N is usually a number starting at 1):
# - 0.N%%{?extraver}%%{?dist} for EA releases, # - 0.N%%{?extraver}%%{?dist} for EA releases,
# - N%%{?extraver}{?dist} for GA releases # - N%%{?extraver}{?dist} for GA releases
%global is_ga 1 %global is_ga 0
%if %{is_ga} %if %{is_ga}
%global milestone fcs %global milestone fcs
%global milestone_version %{nil} %global milestone_version %{nil}
@ -1125,9 +1125,8 @@ Patch517: pr2899-dont_use_withseed_versions_of_nss_functions_as_they_dont_fully_
Patch518: pr2934-sunec_provider_throwing_keyexception_withine.separator_current_nss_thus_initialise_the_random_number_generator_and_feed_the_seed_to_it.patch Patch518: pr2934-sunec_provider_throwing_keyexception_withine.separator_current_nss_thus_initialise_the_random_number_generator_and_feed_the_seed_to_it.patch
Patch519: pr3479-rh1486025-sunec_provider_can_have_multiple_instances_leading_to_premature_nss_shutdown.patch Patch519: pr3479-rh1486025-sunec_provider_can_have_multiple_instances_leading_to_premature_nss_shutdown.patch
# PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) # PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts)
Patch539: pr2888-openjdk_should_check_for_system_cacerts_database_eg_etc_pki_java_cacerts.patch
# PR3575, RH1567204: System cacerts database handling should not affect jssecacerts # PR3575, RH1567204: System cacerts database handling should not affect jssecacerts
Patch540: pr3575-rh1567204-system_cacerts_database_handling_no_longer_affect_jssecacerts.patch Patch539: pr2888-openjdk_should_check_for_system_cacerts_database_eg_etc_pki_java_cacerts.patch
# PR3183, RH1340845: Support Fedora/RHEL8 system crypto policy # PR3183, RH1340845: Support Fedora/RHEL8 system crypto policy
Patch300: pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch Patch300: pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
# PR3655: Allow use of system crypto policy to be disabled by the user # PR3655: Allow use of system crypto policy to be disabled by the user
@ -1169,10 +1168,6 @@ Patch107: s390-8214206_fix.patch
Patch502: pr2462-resolve_disabled_warnings_for_libunpack_and_the_unpack200_binary.patch Patch502: pr2462-resolve_disabled_warnings_for_libunpack_and_the_unpack200_binary.patch
# S8154313: Generated javadoc scattered all over the place # S8154313: Generated javadoc scattered all over the place
Patch400: jdk8154313-generated_javadoc_scattered_all_over_the_place.patch Patch400: jdk8154313-generated_javadoc_scattered_all_over_the_place.patch
# 8171000, PR3542, RH1402819: Robot.createScreenCapture() crashes in wayland mode
Patch563: jdk8171000-pr3542-rh1402819-robot_createScreenCapture_crashes_in_wayland_mode.patch
# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
Patch564: jdk8197546-pr3542-rh1402819-fix_for_8171000_breaks_solaris_linux_builds.patch
# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code # PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
Patch571: jdk8199936-pr3591-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x_jdk.patch Patch571: jdk8199936-pr3591-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x_jdk.patch
# 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers # 8141570, PR3548: Fix Zero interpreter build for --disable-precompiled-headers
@ -1605,8 +1600,6 @@ sh %{SOURCE12}
%patch529 %patch529
%patch531 %patch531
%patch530 %patch530
%patch563
%patch564
%patch571 %patch571
%patch573 %patch573
%patch574 %patch574
@ -1625,7 +1618,7 @@ sh %{SOURCE12}
# RPM-only fixes # RPM-only fixes
%patch525 %patch525
%patch539 %patch539
%patch540 %patch1000
# RHEL-only patches # RHEL-only patches
%if ! 0%{?fedora} && 0%{?rhel} <= 7 %if ! 0%{?fedora} && 0%{?rhel} <= 7
@ -1634,8 +1627,6 @@ sh %{SOURCE12}
# Shenandoah patches # Shenandoah patches
%patch1000
# Extract systemtap tapsets # Extract systemtap tapsets
%if %{with_systemtap} %if %{with_systemtap}
tar --strip-components=1 -x -I xz -f %{SOURCE8} tar --strip-components=1 -x -I xz -f %{SOURCE8}
@ -2281,6 +2272,11 @@ require "copy_jdk_configs.lua"
%endif %endif
%changelog %changelog
* Sun Jul 07 2019 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.222.b01-0.1.ea
- Update to aarch64-shenandoah-jdk8u222-b01.
- Refactor PR2888 after inclusion of 8129988 upstream. Now includes PR3575.
- Drop 8171000 & 8197546 as applied upstream.
* Wed Jul 03 2019 Severin Gehwolf <sgehwolf@redhat.com> - 1:1.8.0.212.b04-6 * Wed Jul 03 2019 Severin Gehwolf <sgehwolf@redhat.com> - 1:1.8.0.212.b04-6
- Include 'ea' designator in Release when appropriate. - Include 'ea' designator in Release when appropriate.

View File

@ -1,121 +0,0 @@
# 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 ;
}

View File

@ -1,35 +0,0 @@
# 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

View File

@ -5,42 +5,45 @@
# Node ID 3334efeacd8327a14b7d2f392f4546e3c29c594b # Node ID 3334efeacd8327a14b7d2f392f4546e3c29c594b
# Parent 6b81fd2227d14226f2121f2d51b464536925686e # Parent 6b81fd2227d14226f2121f2d51b464536925686e
PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts)
PR3575: System cacerts database handling should not affect jssecacerts
diff --git a/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java b/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustStoreManager.java openjdk/jdk/src/share/classes/sun/security/ssl/TrustStoreManager.java
--- openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java --- openjdk.orig/jdk/src/share/classes/sun/security/ssl/TrustStoreManager.java
+++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java +++ openjdk/jdk/src/share/classes/sun/security/ssl/TrustStoreManager.java
@@ -174,15 +174,20 @@ @@ -72,7 +72,7 @@
storeFile = new File(storeFileName); * The preference of the default trusted KeyStore is:
fis = getFileInputStream(storeFile); * javax.net.ssl.trustStore
} else { * jssecacerts
- String javaHome = props.get("javaHome"); - * cacerts
- storeFile = new File(javaHome + sep + "lib" + sep + * cacerts (system and local)
- + "security" + sep + */
- "jssecacerts"); private static final class TrustStoreDescriptor {
+ /* Check system cacerts DB first; /etc/pki/java/cacerts */ private static final String fileSep = File.separator;
+ storeFile = new File(sep + "etc" + sep + "pki" + sep @@ -83,6 +83,10 @@
+ + "java" + sep + "cacerts"); defaultStorePath + fileSep + "cacerts";
if ((fis = getFileInputStream(storeFile)) == null) { private static final String jsseDefaultStore =
+ String javaHome = props.get("javaHome"); defaultStorePath + fileSep + "jssecacerts";
storeFile = new File(javaHome + sep + "lib" + sep + /* Check system cacerts DB: /etc/pki/java/cacerts */
- + "security" + sep + + private static final String systemStore =
- "cacerts"); + fileSep + "etc" + fileSep + "pki" +
- fis = getFileInputStream(storeFile); + fileSep + "java" + fileSep + "cacerts";
+ + "security" + sep +
+ "jssecacerts");
+ if ((fis = getFileInputStream(storeFile)) == null) {
+ storeFile = new File(javaHome + sep + "lib" + sep
+ + "security" + sep +
+ "cacerts");
+ fis = getFileInputStream(storeFile);
+ }
}
}
diff --git a/src/share/classes/sun/security/tools/KeyStoreUtil.java b/src/share/classes/sun/security/tools/KeyStoreUtil.java // the trust store name
--- openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java private final String storeName;
@@ -146,7 +150,8 @@
long temporaryTime = 0L;
if (!"NONE".equals(storePropName)) {
String[] fileNames =
- new String[] {storePropName, defaultStore};
+ new String[] {storePropName,
+ systemStore, defaultStore};
for (String fileName : fileNames) {
File f = new File(fileName);
if (f.isFile() && f.canRead()) {
diff --git openjdk.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java
--- openjdk.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java
+++ openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java +++ openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java
@@ -87,9 +87,14 @@ @@ -108,9 +108,14 @@
throws Exception throws Exception
{ {
String sep = File.separator; String sep = File.separator;

View File

@ -1,42 +0,0 @@
# 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 +

View File

@ -1,2 +1,2 @@
SHA512 (tapsets-icedtea-3.11.0.tar.xz) = f98420b2f9d7a0fc0af3a7e6a817c4330169db9378d9c38db56b0dd8281a3f1ff7747b4da0c66194695ca85a470b7963902d863d301e5e290dbfe11f6b6f2b5e SHA512 (tapsets-icedtea-3.11.0.tar.xz) = f98420b2f9d7a0fc0af3a7e6a817c4330169db9378d9c38db56b0dd8281a3f1ff7747b4da0c66194695ca85a470b7963902d863d301e5e290dbfe11f6b6f2b5e
SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u212-b04-shenandoah-merge-2019-04-30.tar.xz) = 8ef6029cfa053fce7e0f73aab72b287a4505b06d6e2f1153e5c903a48ba89147fc187987f58d6eb737ede9d5c76a8925f22c34a4f5c3d757674c06fccf77c21b SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u222-b01.tar.xz) = 1d120a52dc4a6ac77189fb8f8b27244aad2de7e1fa71c41e89280339fb5f0255761171159fb5b0ab0b4ba185d8462205574679219f9bd218843618f3dc575dd2