Compare commits

..

9 Commits

Author SHA1 Message Date
Sergey Bylokhov
86dddbcda6 8347427: JTabbedPane/8134116/Bug8134116.java has no license header
Backport-of: f67b703625
2025-02-21 23:06:37 +00:00
Christoph Langer
6139332080 8349603: [21u, 17u, 11u] Update GHA JDKs after Jan/25 updates
Reviewed-by: sgehwolf
Backport-of: 6ccdc3f8e0
2025-02-21 06:15:50 +00:00
t.ogata
6d12f92616 8328242: Add a log area to the PassFailJFrame
Backport-of: 9bc1b065db
2025-02-21 03:06:46 +00:00
SendaoYan
aad0315a00 8320916: jdk/jfr/event/gc/stacktrace/TestParallelMarkSweepAllocationPendingStackTrace.java failed with "OutOfMemoryError: GC overhead limit exceeded"
Backport-of: 693847452f
2025-02-21 01:49:44 +00:00
SendaoYan
1fafc5d236 8216539: tools/jar/modularJar/Basic.java timed out
Backport-of: 518e3a8788
2025-02-21 01:48:46 +00:00
SendaoYan
9ee1571d04 8327650: Test java/nio/channels/DatagramChannel/StressNativeSignal.java timed out
Backport-of: 7acfba288f
2025-02-21 01:48:32 +00:00
Daniel Hu
d158b8baef 8312049: runtime/logging/ClassLoadUnloadTest can be improved
Reviewed-by: phh
Backport-of: 4676b40f17
2025-02-20 17:33:05 +00:00
Antonio Vieiro
dba357f027 8341424: GHA: Collect hs_errs from build time failures
8342704: GHA: Report truncation is broken after JDK-8341424

Backport-of: 3bc06ab80f
2025-02-20 17:07:17 +00:00
Michael DeVera
bbe28d9278 8347965: (tz) Update Timezone Data to 2025a
Reviewed-by: andrew
Backport-of: caa3c78f78
2025-02-19 23:40:22 +00:00
22 changed files with 578 additions and 217 deletions

View File

@@ -24,12 +24,19 @@
# questions.
#
# Import common utils
. .github/scripts/report-utils.sh
GITHUB_STEP_SUMMARY="$1"
BUILD_DIR="$(ls -d build/*)"
# Send signal to the do-build action that we failed
touch "$BUILD_DIR/build-failure"
# Collect hs_errs for build-time crashes, e.g. javac, jmod, jlink, CDS.
# These usually land in make/
hs_err_files=$(ls make/hs_err*.log 2> /dev/null || true)
(
echo '### :boom: Build failure summary'
echo ''
@@ -46,6 +53,20 @@ touch "$BUILD_DIR/build-failure"
echo '</details>'
echo ''
for hs_err in $hs_err_files; do
echo "<details><summary><b>View HotSpot error log: "$hs_err"</b></summary>"
echo ''
echo '```'
echo "$hs_err:"
echo ''
cat "$hs_err"
echo '```'
echo '</details>'
echo ''
done
echo ''
echo ':arrow_right: To see the entire test log, click the job in the list to the left. To download logs, see the `failure-logs` [artifact above](#artifacts).'
) >> $GITHUB_STEP_SUMMARY
truncate_summary

View File

@@ -24,6 +24,9 @@
# questions.
#
# Import common utils
. .github/scripts/report-utils.sh
GITHUB_STEP_SUMMARY="$1"
test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt)
@@ -75,18 +78,6 @@ for test in $failures $errors; do
done >> $GITHUB_STEP_SUMMARY
# With many failures, the summary can easily exceed 1024 kB, the limit set by Github
# Trim it down if so.
summary_size=$(wc -c < $GITHUB_STEP_SUMMARY)
if [[ $summary_size -gt 1000000 ]]; then
# Trim to below 1024 kB, and cut off after the last detail group
head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp
mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY
(
echo ''
echo ':x: **WARNING: Summary is too large and has been truncated.**'
echo ''
) >> $GITHUB_STEP_SUMMARY
fi
echo ':arrow_right: To see the entire test log, click the job in the list to the left.' >> $GITHUB_STEP_SUMMARY
truncate_summary

41
.github/scripts/report-utils.sh vendored Normal file
View File

@@ -0,0 +1,41 @@
#!/bin/bash
#
# Copyright (c) 2024, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
function truncate_summary() {
# With large hs_errs, the summary can easily exceed 1024 kB, the limit set by Github
# Trim it down if so.
summary_size=$(wc -c < $GITHUB_STEP_SUMMARY)
if [[ $summary_size -gt 1000000 ]]; then
# Trim to below 1024 kB, and cut off after the last detail group
head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp
mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY
(
echo ''
echo ':x: **WARNING: Summary is too large and has been truncated.**'
echo ''
) >> $GITHUB_STEP_SUMMARY
fi
}

View File

@@ -29,13 +29,13 @@ GTEST_VERSION=1.8.1
JTREG_VERSION=7.3.1+1
LINUX_X64_BOOT_JDK_EXT=tar.gz
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz
LINUX_X64_BOOT_JDK_SHA256=23e47ea7a3015be3240f21185fd902adebdcf76530757c9b482c7eb5bd3417c2
WINDOWS_X64_BOOT_JDK_EXT=zip
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_windows_hotspot_11.0.23_9.zip
WINDOWS_X64_BOOT_JDK_SHA256=d7a9f8ceee9a5785dcbbcbec20a07b1366efec59ba652ef7e03f6f7d10f52b85
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_linux_hotspot_11.0.26_4.tar.gz
LINUX_X64_BOOT_JDK_SHA256=7def4c5807b38ef1a7bb30a86572a795ca604127cc8d1f5b370abf23618104e6
MACOS_X64_BOOT_JDK_EXT=tar.gz
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.23_9.tar.gz
MACOS_X64_BOOT_JDK_SHA256=4dbd21d9a0311d321f5886eda50c3086026ed61d02e1a85f7b8c2e9ad557bf03
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_mac_hotspot_11.0.26_4.tar.gz
MACOS_X64_BOOT_JDK_SHA256=b0142c2c85da43bb3565321164e8129b1166de5d6a43c88e567a92c39128c003
WINDOWS_X64_BOOT_JDK_EXT=zip
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_windows_hotspot_11.0.26_4.zip
WINDOWS_X64_BOOT_JDK_SHA256=a221ae370f609f00e5869c385f4853fecb622a99f8637b95c22ec66c04e15051

View File

@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
tzdata2024b
tzdata2025a

View File

@@ -197,6 +197,8 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13
# France & Italy - year-round base
# Concordia, -750600+1232000, since 2005
# https://en.wikipedia.org/wiki/Concordia_Station
# Can use Asia/Singapore, which it has agreed with since inception.
# Germany - year-round base
# Neumayer III, -704080-0081602, since 2009

View File

@@ -3688,21 +3688,70 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
# be immediately followed by 1845-01-01; see R.H. van Gent's
# History of the International Date Line
# https://webspace.science.uu.nl/~gent0113/idl/idl_philippines.htm
# The rest of the data entries are from Shanks & Pottenger.
# From Jesper Nørgaard Welen (2006-04-26):
# ... claims that Philippines had DST last time in 1990:
# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
# but no details]
# From Paul Eggert (2014-08-14):
# The following source says DST may be instituted November-January and again
# March-June, but this is not definite. It also says DST was last proclaimed
# during the Ramos administration (1992-1998); but again, no details.
# Carcamo D. PNoy urged to declare use of daylight saving time.
# Philippine Star 2014-08-05
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
# From P Chan (2021-05-10):
# Here's a fairly comprehensive article in Japanese:
# https://wiki.suikawiki.org/n/Philippine%20Time
# (2021-05-16):
# According to the references listed in the article,
# the periods that the Philippines (Manila) observed DST or used +9 are:
#
# 1936-10-31 24:00 to 1937-01-15 24:00
# (Proclamation No. 104, Proclamation No. 126)
# 1941-12-15 24:00 to 1945-11-30 24:00
# (Proclamation No. 789, Proclamation No. 20)
# 1954-04-11 24:00 to 1954-06-04 24:00
# (Proclamation No. 13, Proclamation No. 33)
# 1977-03-27 24:00 to 1977-09-21 24:00
# (Proclamation No. 1629, Proclamation No. 1641)
# 1990-05-21 00:00 to 1990-07-28 24:00
# (National Emergency Memorandum Order No. 17, Executive Order No. 415)
#
# Proclamation No. 104 ... October 30, 1936
# https://www.officialgazette.gov.ph/1936/10/30/proclamation-no-104-s-1936/
# Proclamation No. 126 ... January 15, 1937
# https://www.officialgazette.gov.ph/1937/01/15/proclamation-no-126-s-1937/
# Proclamation No. 789 ... December 13, 1941
# https://www.officialgazette.gov.ph/1941/12/13/proclamation-no-789-s-1941/
# Proclamation No. 20 ... November 11, 1945
# https://www.officialgazette.gov.ph/1945/11/11/proclamation-no-20-s-1945/
# Proclamation No. 13 ... April 6, 1954
# https://www.officialgazette.gov.ph/1954/04/06/proclamation-no-13-s-1954/
# Proclamation No. 33 ... June 3, 1954
# https://www.officialgazette.gov.ph/1954/06/03/proclamation-no-33-s-1954/
# Proclamation No. 1629 ... March 25, 1977
# https://www.officialgazette.gov.ph/1977/03/25/proclamation-no-1629-s-1977/
# Proclamation No. 1641 ...May 26, 1977
# https://www.officialgazette.gov.ph/1977/05/26/proclamation-no-1641-s-1977/
# National Emergency Memorandum Order No. 17 ... May 2, 1990
# https://www.officialgazette.gov.ph/1990/05/02/national-emergency-memorandum-order-no-17-s-1990/
# Executive Order No. 415 ... July 20, 1990
# https://www.officialgazette.gov.ph/1990/07/20/executive-order-no-415-s-1990/
#
# During WWII, Proclamation No. 789 fixed two periods of DST. The first period
# was set to continue only until January 31, 1942. But Manila was occupied by
# the Japanese earlier in the month....
#
# For the date of the adoption of standard time, Shank[s] gives 1899-05-11.
# The article is not able to state the basis of that. I guess it was based on
# a US War Department Circular issued on that date.
# https://books.google.com/books?id=JZ1PAAAAYAAJ&pg=RA3-PA8
#
# However, according to other sources, standard time was adopted on
# 1899-09-06. Also, the LMT was GMT+8:03:52
# https://books.google.com/books?id=MOYIAQAAIAAJ&pg=PA521
# https://books.google.com/books?id=lSnqqatpYikC&pg=PA21
#
# From Paul Eggert (2024-09-05):
# The penultimate URL in P Chan's email refers to page 521 of
# Selga M, The Time Service in the Philippines.
# Proc Pan-Pacific Science Congress. Vol. 1 (1923), 519-532.
# It says, "The change from the meridian 120° 58' 04" to the 120th implied a
# change of 3 min. 52s.26 in time; consequently on 6th September, 1899,
# Manila Observatory gave the noon signal 3 min. 52s.26 later than before".
#
# Wikipedia says the US declared Manila liberated on March 4, 1945;
# this doesn't affect clocks, just our time zone abbreviation and DST flag.
# From Paul Goyette (2018-06-15) with URLs updated by Guy Harris (2024-02-15):
# In the Philippines, there is a national law, Republic Act No. 10535
@@ -3720,24 +3769,26 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
# influence of the sources. There is no current abbreviation for DST,
# so use "PDT", the usual American style.
# From P Chan (2021-05-10):
# Here's a fairly comprehensive article in Japanese:
# https://wiki.suikawiki.org/n/Philippine%20Time
# From Paul Eggert (2021-05-10):
# The info in the Japanese table has not been absorbed (yet) below.
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Phil 1936 only - Nov 1 0:00 1:00 D
Rule Phil 1937 only - Feb 1 0:00 0 S
Rule Phil 1954 only - Apr 12 0:00 1:00 D
Rule Phil 1954 only - Jul 1 0:00 0 S
Rule Phil 1978 only - Mar 22 0:00 1:00 D
Rule Phil 1978 only - Sep 21 0:00 0 S
Rule Phil 1936 only - Oct 31 24:00 1:00 D
Rule Phil 1937 only - Jan 15 24:00 0 S
Rule Phil 1941 only - Dec 15 24:00 1:00 D
# The following three rules were canceled by Japan:
#Rule Phil 1942 only - Jan 31 24:00 0 S
#Rule Phil 1942 only - Mar 1 0:00 1:00 D
#Rule Phil 1942 only - Jun 30 24:00 0 S
Rule Phil 1945 only - Nov 30 24:00 0 S
Rule Phil 1954 only - Apr 11 24:00 1:00 D
Rule Phil 1954 only - Jun 4 24:00 0 S
Rule Phil 1977 only - Mar 27 24:00 1:00 D
Rule Phil 1977 only - Sep 21 24:00 0 S
Rule Phil 1990 only - May 21 0:00 1:00 D
Rule Phil 1990 only - Jul 28 24:00 0 S
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
8:04:00 - LMT 1899 May 11
8:00 Phil P%sT 1942 May
9:00 - JST 1944 Nov
Zone Asia/Manila -15:56:08 - LMT 1844 Dec 31
8:03:52 - LMT 1899 Sep 6 4:00u
8:00 Phil P%sT 1942 Feb 11 24:00
9:00 - JST 1945 Mar 4
8:00 Phil P%sT
# Bahrain

View File

@@ -1262,10 +1262,10 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
# The 1992 ending date used in the rules is a best guess;
# it matches what was used in the past.
# The Australian Bureau of Meteorology FAQ
# http://www.bom.gov.au/faq/faqgen.htm
# (1999-09-27) writes that Giles Meteorological Station uses
# South Australian time even though it's located in Western Australia.
# From Christopher Hunt (2006-11-21), after an advance warning
# from Jesper Nørgaard Welen (2006-11-01):
# WA are trialing DST for three years.
# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
# From Paul Eggert (2018-04-01):
# The Guardian Express of Perth, Australia reported today that the
@@ -1277,54 +1277,10 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
# [The article ends with "Today's date is April 1."]
# Queensland
# From Paul Eggert (2018-02-26):
# I lack access to the following source for Queensland DST:
# Pearce C. History of daylight saving time in Queensland.
# Queensland Hist J. 2017 Aug;23(6):389-403
# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS
# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
# # [ Dec 1990 ]
# ...
# Zone Australia/Queensland 10:00 AQ %sST
# ...
# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
# Rule AQ 1972 only - Feb lastSun 3:00 0 E
# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
# From Bradley White (1989-12-24):
# "Australia/Queensland" now observes daylight time (i.e. from
# October 1989).
# From Bradley White (1991-03-04):
# A recent excerpt from an Australian newspaper...
# ...Queensland...[has] agreed to end daylight saving
# at 3am tomorrow (March 3)...
# From John Mackin (1991-03-06):
# I can certainly confirm for my part that Daylight Saving in NSW did in fact
# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
# me.)
# From Bradley White (1992-03-08):
# ...there was recently a referendum in Queensland which resulted
# in the experimental daylight saving system being abandoned. So, ...
# ...
# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
# ...
# From Arthur David Olson (1992-03-08):
# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
# From Christopher Hunt (2006-11-21), after an advance warning
# from Jesper Nørgaard Welen (2006-11-01):
# WA are trialing DST for three years.
# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
# The Australian Bureau of Meteorology FAQ
# http://www.bom.gov.au/faq/faqgen.htm
# (1999-09-27) writes that Giles Meteorological Station uses
# South Australian time even though it's located in Western Australia.
# From Rives McDow (2002-04-09):
# The most interesting region I have found consists of three towns on the
@@ -1382,6 +1338,59 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
# For lack of better info, assume the tradition dates back to the
# introduction of standard time in 1895.
# From Stuart Bishop (2024-11-12):
# An article discussing the in-use but technically unofficial timezones
# in the Western Australian portion of the Nullarbor Plain.
# https://www.abc.net.au/news/2024-11-22/outback-wa-properties-strange-time-zones/104542494
# From Paul Eggert (2024-11-12):
# As the article says, the Eyre Bird Observatory and nearby sheep stations
# can use Tokyo time. Other possibilities include Asia/Chita, Asia/Seoul,
# and Asia/Jayapura.
# Queensland
# From Paul Eggert (2018-02-26):
# I lack access to the following source for Queensland DST:
# Pearce C. History of daylight saving time in Queensland.
# Queensland Hist J. 2017 Aug;23(6):389-403
# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS
# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
# # [ Dec 1990 ]
# ...
# Zone Australia/Queensland 10:00 AQ %sST
# ...
# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
# Rule AQ 1972 only - Feb lastSun 3:00 0 E
# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
# From Bradley White (1989-12-24):
# "Australia/Queensland" now observes daylight time (i.e. from
# October 1989).
# From Bradley White (1991-03-04):
# A recent excerpt from an Australian newspaper...
# ...Queensland...[has] agreed to end daylight saving
# at 3am tomorrow (March 3)...
# From John Mackin (1991-03-06):
# I can certainly confirm for my part that Daylight Saving in NSW did in fact
# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
# me.)
# From Bradley White (1992-03-08):
# ...there was recently a referendum in Queensland which resulted
# in the experimental daylight saving system being abandoned. So, ...
# ...
# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
# ...
# From Arthur David Olson (1992-03-08):
# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
# southeast Australia
#

View File

@@ -74,6 +74,10 @@ Link Etc/GMT GMT
# so we moved the names into the Etc subdirectory.
# Also, the time zone abbreviations are now compatible with %z.
# There is no "Etc/Unknown" entry, as CLDR says that "Etc/Unknown"
# corresponds to an unknown or invalid time zone, and things would get
# confusing if Etc/Unknown were made valid here.
Zone Etc/GMT-14 14 - %z
Zone Etc/GMT-13 13 - %z
Zone Etc/GMT-12 12 - %z

View File

@@ -1170,7 +1170,7 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
# However, Greenland will change to Daylight Saving Time again in 2024
# and onwards.
# From a contributor who wishes to remain anonymous for now (2023-10-29):
# From Jule Dabars (2023-10-29):
# https://www.dr.dk/nyheder/seneste/i-nat-skal-uret-stilles-en-time-tilbage-men-foerste-gang-sker-det-ikke-i-groenland
# with a link to that page:
# https://naalakkersuisut.gl/Nyheder/2023/10/2710_sommertid

View File

@@ -31,5 +31,15 @@
# time zone abbreviation "-00", indicating that the actual time zone
# is unknown.
# TZ="Factory" was added to TZDB in 1989, and in 2016 its abbreviation
# was changed to "-00" from a longish English-language error message.
# Around 2010, CLDR added "Etc/Unknown" for use with TZDB, to stand
# for an unknown or invalid time zone. These two notions differ:
# TZ="Factory" is a valid timezone, so tzalloc("Factory") succeeds, whereas
# TZ="Etc/Unknown" is invalid and tzalloc("Etc/Unknown") fails.
# Also, a downstream distributor could modify Factory to be a
# default timezone suitable for the devices it manufactures,
# whereas that cannot happen for Etc/Unknown.
# Zone NAME STDOFF RULES FORMAT
Zone Factory 0 - -00

View File

@@ -92,11 +92,11 @@ Leap 2016 Dec 31 23:59:60 + S
# Any additional leap seconds will come after this.
# This Expires line is commented out for now,
# so that pre-2020a zic implementations do not reject this file.
#Expires 2025 Jun 28 00:00:00
#Expires 2025 Dec 28 00:00:00
# POSIX timestamps for the data in this file:
#updated 1720104763 (2024-07-04 14:52:43 UTC)
#expires 1751068800 (2025-06-28 00:00:00 UTC)
#updated 1736208000 (2025-01-07 00:00:00 UTC)
#expires 1766880000 (2025-12-28 00:00:00 UTC)
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
# File expires on 28 June 2025
# File expires on 28 December 2025

View File

@@ -50,9 +50,12 @@
# in New York City (1869-10). His 1870 proposal was based on Washington, DC,
# but in 1872-05 he moved the proposed origin to Greenwich.
# From Paul Eggert (2018-03-20):
# From Paul Eggert (2024-11-18):
# Dowd's proposal left many details unresolved, such as where to draw
# lines between time zones. The key individual who made time zones
# lines between time zones. Sandford Fleming of the Canadian Pacific Railway
# argued for Dowd's proposal in 1876, and Cleveland Abbe of the American
# Meteorology Society published a report in 1879 recommending four US time
# zones based on GMT. However, the key individual who made time zones
# work in the US was William Frederick Allen - railway engineer,
# managing editor of the Travelers' Guide, and secretary of the
# General Time Convention, a railway standardization group. Allen
@@ -2654,7 +2657,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
# http://puentelibre.mx/noticia/ciudad_juarez_cambio_horario_noviembre_2022/
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Mexico 1931 only - April 30 0:00 1:00 D
Rule Mexico 1931 only - Apr 30 0:00 1:00 D
Rule Mexico 1931 only - Oct 1 0:00 0 S
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
Rule Mexico 1939 only - Jun 25 0:00 0 S

View File

@@ -1710,7 +1710,7 @@ Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
# and that on the first Sunday of the month of October, it is to be set
# forward 60 minutes, in all the territory of the Paraguayan Republic.
# ...
Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
Rule Para 2010 2024 - Oct Sun>=1 0:00 1:00 -
Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
#
# From Steffen Thorsen (2013-03-07):
@@ -1729,14 +1729,35 @@ Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
# https://www.abc.com.py/politica/2023/07/12/promulgacion-el-cambio-de-hora-sera-por-ley/
# From Carlos Raúl Perasso (2023-07-27):
# http://silpy.congreso.gov.py/descarga/ley-144138
Rule Para 2013 max - Mar Sun>=22 0:00 0 -
Rule Para 2013 2024 - Mar Sun>=22 0:00 0 -
#
# From Heitor David Pinto (2024-09-24):
# Today the Congress of Paraguay passed a bill to observe UTC-3 permanently....
# The text of the bill says that it would enter into force on the first
# Sunday in October 2024, the same date currently scheduled to start DST....
# https://silpy.congreso.gov.py/web/expediente/132531
# (2024-10-14):
# The president approved the law on 11 October 2024,
# and it was officially published on 14 October 2024.
# https://www.gacetaoficial.gov.py/index/detalle_publicacion/89723
# The text of the law says that it enters into force on the first
# Sunday in October 2024 (6 October 2024). But the constitution
# prohibits retroactive effect, and the civil code says that laws
# enter into force on the day after their publication or on the day
# that they specify, and it also says that they don't have retroactive
# effect. So I think that the time change on 6 October 2024 should
# still be considered as DST according to the previous law, and
# permanently UTC-3 from 15 October 2024 according to the new law....
# https://www.constituteproject.org/constitution/Paraguay_2011
# https://www.oas.org/dil/esp/codigo_civil_paraguay.pdf
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone America/Asuncion -3:50:40 - LMT 1890
-3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time
-4:00 - %z 1972 Oct
-3:00 - %z 1974 Apr
-4:00 Para %z
-4:00 Para %z 2024 Oct 15
-3:00 - %z
# Peru
#

View File

@@ -42,8 +42,6 @@ import java.util.Collections;
import java.util.List;
public class ClassLoadUnloadTest {
private static OutputAnalyzer out;
private static ProcessBuilder pb;
private static class ClassUnloadTestMain {
public static void main(String... args) throws Exception {
String className = "test.Empty";
@@ -54,79 +52,78 @@ public class ClassLoadUnloadTest {
}
}
static void checkFor(String... outputStrings) throws Exception {
out = new OutputAnalyzer(pb.start());
static void checkFor(OutputAnalyzer output, String... outputStrings) throws Exception {
for (String s: outputStrings) {
out.shouldContain(s);
output.shouldContain(s);
}
out.shouldHaveExitValue(0);
}
static void checkAbsent(String... outputStrings) throws Exception {
out = new OutputAnalyzer(pb.start());
static void checkAbsent(OutputAnalyzer output, String... outputStrings) throws Exception {
for (String s: outputStrings) {
out.shouldNotContain(s);
output.shouldNotContain(s);
}
out.shouldHaveExitValue(0);
}
// Use the same command-line heap size setting as ../ClassUnload/UnloadTest.java
static ProcessBuilder exec(String... args) throws Exception {
static OutputAnalyzer exec(String... args) throws Exception {
List<String> argsList = new ArrayList<>();
Collections.addAll(argsList, args);
Collections.addAll(argsList, "-Xmn8m");
Collections.addAll(argsList, "-Dtest.class.path=" + System.getProperty("test.class.path", "."));
Collections.addAll(argsList, "-XX:+ClassUnloading");
Collections.addAll(argsList, ClassUnloadTestMain.class.getName());
return ProcessTools.createJavaProcessBuilder(argsList);
Collections.addAll(argsList, "-Xmn8m", "-Dtest.class.path=" + System.getProperty("test.class.path", "."),
"-XX:+ClassUnloading", ClassUnloadTestMain.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(argsList);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldHaveExitValue(0);
return output;
}
public static void main(String... args) throws Exception {
OutputAnalyzer output;
// -Xlog:class+unload=info
pb = exec("-Xlog:class+unload=info");
checkFor("[class,unload]", "unloading class");
output = exec("-Xlog:class+unload=info");
checkFor(output, "[class,unload]", "unloading class");
// -Xlog:class+unload=off
pb = exec("-Xlog:class+unload=off");
checkAbsent("[class,unload]");
output = exec("-Xlog:class+unload=off");
checkAbsent(output,"[class,unload]");
// -XX:+TraceClassUnloading
pb = exec("-XX:+TraceClassUnloading");
checkFor("[class,unload]", "unloading class");
output = exec("-XX:+TraceClassUnloading");
checkFor(output, "[class,unload]", "unloading class");
// -XX:-TraceClassUnloading
pb = exec("-XX:-TraceClassUnloading");
checkAbsent("[class,unload]");
output = exec("-XX:-TraceClassUnloading");
checkAbsent(output, "[class,unload]");
// -Xlog:class+load=info
pb = exec("-Xlog:class+load=info");
checkFor("[class,load]", "java.lang.Object", "source:");
output = exec("-Xlog:class+load=info");
checkFor(output,"[class,load]", "java.lang.Object", "source:");
// -Xlog:class+load=debug
pb = exec("-Xlog:class+load=debug");
checkFor("[class,load]", "java.lang.Object", "source:", "klass:", "super:", "loader:", "bytes:");
output = exec("-Xlog:class+load=debug");
checkFor(output,"[class,load]", "java.lang.Object", "source:", "klass:", "super:", "loader:", "bytes:");
// -Xlog:class+load=off
pb = exec("-Xlog:class+load=off");
checkAbsent("[class,load]");
output = exec("-Xlog:class+load=off");
checkAbsent(output,"[class,load]");
// -XX:+TraceClassLoading
pb = exec("-XX:+TraceClassLoading");
checkFor("[class,load]", "java.lang.Object", "source:");
output = exec("-XX:+TraceClassLoading");
checkFor(output, "[class,load]", "java.lang.Object", "source:");
// -XX:-TraceClassLoading
pb = exec("-XX:-TraceClassLoading");
checkAbsent("[class,load]");
output = exec("-XX:-TraceClassLoading");
checkAbsent(output, "[class,load]");
// -verbose:class
pb = exec("-verbose:class");
checkFor("[class,load]", "java.lang.Object", "source:");
checkFor("[class,unload]", "unloading class");
output = exec("-verbose:class");
checkFor(output,"[class,load]", "java.lang.Object", "source:");
checkFor(output,"[class,unload]", "unloading class");
// -Xlog:class+loader+data=trace
pb = exec("-Xlog:class+loader+data=trace");
checkFor("[class,loader,data]", "create loader data");
output = exec("-Xlog:class+loader+data=trace");
checkFor(output, "[class,loader,data]", "create loader data");
}
}

View File

@@ -53,6 +53,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
@@ -155,6 +156,7 @@ import static javax.swing.SwingUtilities.isEventDispatchThread;
* <li>the title of the instruction UI,</li>
* <li>the timeout of the test,</li>
* <li>the size of the instruction UI via rows and columns, and</li>
* <li>to add a log area</li>,
* <li>to enable screenshots.</li>
* </ul>
*/
@@ -204,6 +206,8 @@ public final class PassFailJFrame {
private static Robot robot;
private static JTextArea logArea;
public enum Position {HORIZONTAL, VERTICAL, TOP_LEFT_CORNER}
public PassFailJFrame(String instructions) throws InterruptedException,
@@ -373,6 +377,20 @@ public final class PassFailJFrame {
}
}
/**
* Does the same as {@link #invokeOnEDT(Runnable)}, but does not throw
* any checked exceptions.
*
* @param doRun an operation to run on EDT
*/
private static void invokeOnEDTUncheckedException(Runnable doRun) {
try {
invokeOnEDT(doRun);
} catch (InterruptedException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
private static void createUI(String title, String instructions,
long testTimeOut, int rows, int columns,
boolean enableScreenCapture) {
@@ -384,7 +402,8 @@ public final class PassFailJFrame {
frame.add(createInstructionUIPanel(instructions,
testTimeOut,
rows, columns,
enableScreenCapture),
enableScreenCapture,
false, 0),
BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
@@ -401,8 +420,9 @@ public final class PassFailJFrame {
createInstructionUIPanel(builder.instructions,
builder.testTimeOut,
builder.rows, builder.columns,
builder.screenCapture);
builder.screenCapture,
builder.addLogArea,
builder.logAreaRows);
if (builder.splitUI) {
JSplitPane splitPane = new JSplitPane(
builder.splitUIOrientation,
@@ -421,7 +441,9 @@ public final class PassFailJFrame {
private static JComponent createInstructionUIPanel(String instructions,
long testTimeOut,
int rows, int columns,
boolean enableScreenCapture) {
boolean enableScreenCapture,
boolean addLogArea,
int logAreaRows) {
JPanel main = new JPanel(new BorderLayout());
JLabel testTimeoutLabel = new JLabel("", JLabel.CENTER);
@@ -455,7 +477,20 @@ public final class PassFailJFrame {
buttonsPanel.add(createCapturePanel());
}
main.add(buttonsPanel, BorderLayout.SOUTH);
if (addLogArea) {
logArea = new JTextArea(logAreaRows, columns);
logArea.setEditable(false);
Box buttonsLogPanel = Box.createVerticalBox();
buttonsLogPanel.add(buttonsPanel);
buttonsLogPanel.add(new JScrollPane(logArea));
main.add(buttonsLogPanel, BorderLayout.SOUTH);
} else {
main.add(buttonsPanel, BorderLayout.SOUTH);
}
main.setMinimumSize(main.getPreferredSize());
return main;
@@ -1039,6 +1074,36 @@ public final class PassFailJFrame {
latch.countDown();
}
/**
* Adds a {@code message} to the log area, if enabled by
* {@link Builder#logArea()} or {@link Builder#logArea(int)}.
*
* @param message to log
*/
public static void log(String message) {
System.out.println("PassFailJFrame: " + message);
invokeOnEDTUncheckedException(() -> logArea.append(message + "\n"));
}
/**
* Clears the log area, if enabled by
* {@link Builder#logArea()} or {@link Builder#logArea(int)}.
*/
public static void logClear() {
System.out.println("\nPassFailJFrame: log cleared\n");
invokeOnEDTUncheckedException(() -> logArea.setText(""));
}
/**
* Replaces the log area content with provided {@code text}, if enabled by
* {@link Builder#logArea()} or {@link Builder#logArea(int)}.
* @param text new text for the log area
*/
public static void logSet(String text) {
System.out.println("\nPassFailJFrame: log set to:\n" + text + "\n");
invokeOnEDTUncheckedException(() -> logArea.setText(text));
}
public static final class Builder {
private String title;
private String instructions;
@@ -1046,6 +1111,8 @@ public final class PassFailJFrame {
private int rows;
private int columns;
private boolean screenCapture;
private boolean addLogArea;
private int logAreaRows = 10;
private List<? extends Window> testWindows;
private WindowListCreator windowListCreator;
@@ -1087,6 +1154,37 @@ public final class PassFailJFrame {
return this;
}
/**
* Adds a log area below the "Pass", "Fail" buttons.
* <p>
* The log area can be controlled by {@link #log(String)},
* {@link #logClear()} and {@link #logSet(String)}.
*
* @return this builder
*/
public Builder logArea() {
this.addLogArea = true;
return this;
}
/**
* Adds a log area below the "Pass", "Fail" buttons.
* <p>
* The log area can be controlled by {@link #log(String)},
* {@link #logClear()} and {@link #logSet(String)}.
* <p>
* The number of columns is taken from the number of
* columns in the instructional JTextArea.
*
* @param rows of the log area
* @return this builder
*/
public Builder logArea(int rows) {
this.addLogArea = true;
this.logAreaRows = rows;
return this;
}
/**
* Adds a {@code WindowCreator} which the framework will use
* to create the test UI window.

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2024, 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
@@ -26,68 +26,111 @@
* @summary Attempt to provoke error 316 on OS X in NativeSignal.signal()
*/
import java.io.*;
import java.net.*;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.StandardSocketOptions;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.util.concurrent.CountDownLatch;
public class StressNativeSignal {
private UDPThread udpThread;
private ServerSocketThread serverSocketThread;
StressNativeSignal() {
try {
serverSocketThread = new ServerSocketThread();
serverSocketThread = initServerSocketThread();
if (serverSocketThread != null) {
serverSocketThread.start();
}
udpThread = new UDPThread();
udpThread = initUDPThread();
if (udpThread != null) {
udpThread.start();
}
}
private UDPThread initUDPThread() {
UDPThread aUDPThread = null;
try {
aUDPThread = new UDPThread();
} catch (Exception z) {
System.err.println("failed to create and start a UDPThread");
z.printStackTrace();
}
return aUDPThread;
}
private ServerSocketThread initServerSocketThread() {
ServerSocketThread aServerSocketThread = null;
try {
aServerSocketThread = new ServerSocketThread();
} catch (Exception z) {
System.err.println("failed to create and start a ServerSocketThread");
z.printStackTrace();
}
return aServerSocketThread;
}
public static void main(String[] args) throws Throwable {
StressNativeSignal test = new StressNativeSignal();
try {
Thread.sleep(3000);
} catch (Exception z) {
z.printStackTrace(System.err);
}
test.waitForTestThreadsToStart();
test.shutdown();
}
public void shutdown() {
udpThread.terminate();
try {
udpThread.join();
} catch (Exception z) {
z.printStackTrace(System.err);
if ((udpThread != null) && udpThread.isAlive()) {
udpThread.terminate();
try {
udpThread.join();
} catch (Exception z) {
z.printStackTrace(System.err);
}
} else {
System.out.println("UDPThread test scenario was not run");
}
serverSocketThread.terminate();
try {
serverSocketThread.join();
} catch (Exception z) {
z.printStackTrace(System.err);
if ((serverSocketThread != null) && (serverSocketThread.isAlive())) {
serverSocketThread.terminate();
try {
serverSocketThread.join();
} catch (Exception z) {
z.printStackTrace(System.err);
}
} else {
System.out.println("ServerSocketThread test scenario was not run");
}
}
public void waitForTestThreadsToStart() {
if ((udpThread != null) && udpThread.isAlive()) {
udpThread.waitTestThreadStart();
}
if ((serverSocketThread != null) && (serverSocketThread.isAlive())) {
serverSocketThread.waitTestThreadStart();
}
}
public class ServerSocketThread extends Thread {
private volatile boolean shouldTerminate;
private ServerSocket socket;
private final CountDownLatch threadStarted = new CountDownLatch(1);
public ServerSocketThread () throws Exception {
socket = new ServerSocket(1122);
}
public void run() {
try {
socket = new ServerSocket(1122);
threadStarted.countDown();
Socket client = socket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
shouldTerminate = false;
while (!shouldTerminate) {
String msg = reader.readLine();
}
client.close();
throw new RuntimeException("Unexpected return from accept call");
} catch (Exception z) {
System.err.println("ServerSocketThread: caught exception " + z.getClass().getName());
if (!shouldTerminate) {
z.printStackTrace(System.err);
}
@@ -103,40 +146,61 @@ public class StressNativeSignal {
// ignore
}
}
public void waitTestThreadStart() {
try {
threadStarted.await();
} catch (Exception z) {
z.printStackTrace(System.err);
// ignore
}
}
}
public class UDPThread extends Thread {
private DatagramChannel channel;
private volatile boolean shouldTerminate;
private final CountDownLatch threadStarted = new CountDownLatch(1);
public UDPThread () throws Exception {
channel = DatagramChannel.open();
channel.setOption(StandardSocketOptions.SO_RCVBUF, 6553600);
channel.bind(new InetSocketAddress(19870));
}
@Override
public void run() {
try {
channel = DatagramChannel.open();
channel.setOption(StandardSocketOptions.SO_RCVBUF, 6553600);
channel.bind(new InetSocketAddress(19870));
} catch (IOException z) {
z.printStackTrace(System.err);
}
ByteBuffer buf = ByteBuffer.allocate(6553600);
shouldTerminate = false;
while (!shouldTerminate) {
threadStarted.countDown();
do {
try {
buf.rewind();
channel.receive(buf);
} catch (IOException z) {
System.err.println("UDPThread: caught exception " + z.getClass().getName());
if (!shouldTerminate) {
z.printStackTrace(System.err);
}
}
}
} while (!shouldTerminate);
}
public void terminate() {
shouldTerminate = true;
try {
channel.close();
} catch (Exception z) {
System.err.println("UDPThread: caught exception " + z.getClass().getName());
z.printStackTrace(System.err);
// ignore
}
}
public void waitTestThreadStart() {
try {
threadStarted.await();
} catch (Exception z) {
z.printStackTrace(System.err);
// ignore

View File

@@ -1 +1 @@
tzdata2024b
tzdata2025a

View File

@@ -1,6 +1,3 @@
Link Asia/Riyadh87 Mideast/Riyadh87
Link Asia/Riyadh88 Mideast/Riyadh88
Link Asia/Riyadh89 Mideast/Riyadh89
Link Australia/Sydney Australia/ACT #= Australia/Canberra
Link Australia/Lord_Howe Australia/LHI
Link Australia/Sydney Australia/NSW

View File

@@ -1,13 +1,43 @@
/*
* Copyright (c) 2015, 2025, 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.
*/
import java.awt.*;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleState;
import javax.accessibility.AccessibleStateSet;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
/*
@@ -22,7 +52,7 @@ public class Bug8134116 {
private static volatile Exception exception = null;
private static JFrame frame;
public static void main(String args[]) throws Exception {
public static void main(String[] args) throws Exception {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());

View File

@@ -81,7 +81,7 @@ class HumongousMemoryAllocator extends MemoryAllocator {
class OldGenMemoryAllocator extends MemoryAllocator {
private List<byte[]> list = new ArrayList<byte[]>();
private int counter = 6000;
private int counter = 5000;
@Override
public void allocate() {
@@ -89,7 +89,7 @@ class OldGenMemoryAllocator extends MemoryAllocator {
list.add(new byte[10 * KB]);
} else {
list = new ArrayList<byte[]>();
counter = 6000;
counter = 5000;
}
garbage = list;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2019, 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
@@ -24,7 +24,9 @@
import java.io.*;
import java.lang.module.ModuleDescriptor;
import java.lang.reflect.Method;
import java.nio.file.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.function.Consumer;
import java.util.jar.JarEntry;
@@ -32,6 +34,7 @@ import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
import java.util.regex.Pattern;
import java.util.spi.ToolProvider;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -59,6 +62,16 @@ import static java.lang.System.out;
*/
public class Basic {
private static final ToolProvider JAR_TOOL = ToolProvider.findFirst("jar")
.orElseThrow(()
-> new RuntimeException("jar tool not found")
);
private static final ToolProvider JAVAC_TOOL = ToolProvider.findFirst("javac")
.orElseThrow(()
-> new RuntimeException("javac tool not found")
);
static final Path TEST_SRC = Paths.get(System.getProperty("test.src", "."));
static final Path TEST_CLASSES = Paths.get(System.getProperty("test.classes", "."));
static final Path MODULE_CLASSES = TEST_CLASSES.resolve("build");
@@ -933,13 +946,14 @@ public class Basic {
}
Stream.of(args).forEach(commands::add);
ProcessBuilder p = new ProcessBuilder(commands);
if (stdinSource != null)
if (stdinSource != null) {
p.redirectInput(stdinSource);
}
return run(p);
}
static Result jar(String... args) {
return jarWithStdin(null, args);
return run(JAR_TOOL, args);
}
static Path compileModule(String mn) throws IOException {
@@ -1027,10 +1041,8 @@ public class Basic {
static void javac(Path dest, Path modulePath, Path... sourceFiles)
throws IOException
{
String javac = getJDKTool("javac");
List<String> commands = new ArrayList<>();
commands.add(javac);
if (!TOOL_VM_OPTIONS.isEmpty()) {
commands.addAll(Arrays.asList(TOOL_VM_OPTIONS.split("\\s+", -1)));
}
@@ -1048,7 +1060,13 @@ public class Basic {
}
Stream.of(sourceFiles).map(Object::toString).forEach(x -> commands.add(x));
quickFail(run(new ProcessBuilder(commands)));
StringWriter sw = new StringWriter();
try (PrintWriter pw = new PrintWriter(sw)) {
int rc = JAVAC_TOOL.run(pw, pw, commands.toArray(new String[0]));
if(rc != 0) {
throw new RuntimeException(sw.toString());
}
}
}
static Result java(Path modulePath, String entryPoint, String... args) {
@@ -1094,9 +1112,13 @@ public class Basic {
return false;
}
static void quickFail(Result r) {
if (r.ec != 0)
throw new RuntimeException(r.output);
static Result run(ToolProvider tp, String[] commands) {
int rc = 0;
StringWriter sw = new StringWriter();
try (PrintWriter pw = new PrintWriter(sw)) {
rc = tp.run(pw, pw, commands);
}
return new Result(rc, sw.toString());
}
static Result run(ProcessBuilder pb) {