-
Notifications
You must be signed in to change notification settings - Fork 53
Update ICU to 78 - Part 5: patch records and dev report #186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
aoruganti-msft
wants to merge
4
commits into
user/aoruganti/icu78-test-expectations
Choose a base branch
from
user/aoruganti/icu78-patch-records
base: user/aoruganti/icu78-test-expectations
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| # ICU Upgrade Dev Report | ||
|
|
||
| Generated: 2026-05-19 09:01:27 | ||
|
|
||
| ## 1. Version Summary | ||
|
|
||
| | Field | Value | | ||
| |-------|-------| | ||
| | ICU Version | 78.3.0.0 | | ||
| | Upstream Hash | `21d1eb0f30...` | | ||
|
|
||
| ## 2. Source Changes | ||
|
|
||
| Diff from `icu72-pre-swap` to HEAD (icu/ directory only): | ||
|
|
||
| ``` | ||
| 6919 files changed, 693820 insertions(+), 545058 deletions(-) | ||
| ``` | ||
|
|
||
| ### Top file types changed | ||
|
|
||
| | Extension | Count | | ||
| |-----------|-------| | ||
| | .txt | 5117 | | ||
| | .cpp | 799 | | ||
| | .h | 552 | | ||
| | .c | 105 | | ||
| | .vcxproj | 77 | | ||
| | .json | 46 | | ||
| | .filters | 30 | | ||
| | .xml | 29 | | ||
| | .java | 28 | | ||
| | .in | 25 | | ||
|
|
||
| ## 3. Patch Audit Results | ||
|
|
||
| *No audit report found in `icu-patches`. Final patch records are summarized from `icu-patches/patches` instead.* | ||
|
|
||
| - Latest patch-record commit: `70ae0ef8eab Refresh patch record for Saudi Riyal symbol override` | ||
| - Patch files present: 20 | ||
| - Refreshed ICU 78 patch records: `002`, `017`, `018`, `020`, `022`, `023` | ||
| - Validation used for refreshed records: `git apply --cached --check --reverse` against the final ICU index | ||
|
|
||
| ## 4. Build Results | ||
|
|
||
| | Config | Status | Log | | ||
| |--------|--------|-----| | ||
| | Debug-ARM64 | ✅ PASS | build-Debug-ARM64.log | | ||
| | Debug-Win32 | ✅ PASS | build-Debug-Win32.log | | ||
| | Debug-x64 | ✅ PASS | build-Debug-x64.log | | ||
| | Release-ARM64 | ✅ PASS | build-Release-ARM64.log | | ||
| | Release-Win32 | ✅ PASS | build-Release-Win32.log | | ||
| | Release-x64 | ✅ PASS | build-Release-x64.log | | ||
|
|
||
| ## 5. Test Results | ||
|
|
||
| | Suite | Status | Log | | ||
| |-------|--------|-----| | ||
| | cintltst-Release-x64 | ✅ PASS | test-cintltst-Release-x64.log | | ||
| | intlRelease-x64 | ✅ PASS | test-intltest-Release-x64.log | | ||
| | ioRelease-x64 | ✅ PASS | test-iotest-Release-x64.log | | ||
|
|
||
| Post-report targeted validation for patch `023`: `genrb` parsed `icu/icu4c/source/data/curr/ar_SA.txt`, and `currtest.c` passed C syntax checking with the available compiler. | ||
|
|
||
| ## 6. Action Items | ||
|
|
||
| - [x] Patch conflicts resolved and ICU 78 patch records refreshed | ||
| - [x] Saudi Riyal symbol override for `ar_SA` added and recorded as patch `023` | ||
| - [x] CLDR data rebuild consumed by ICU data generation | ||
| - [x] Timezone data check/regeneration completed | ||
| - [x] Full Stage 8 build/test pass completed | ||
| - [x] Refreshed dev report generated | ||
| - [ ] Create PR/PR stack (owner-handled) | ||
|
|
1,146 changes: 1,004 additions & 142 deletions
1,146
icu-patches/patches/002-MSFT-Patch-ICU_test_changes_for_MSFT_changes.patch
Large diffs are not rendered by default.
Oops, something went wrong.
99 changes: 13 additions & 86 deletions
99
icu-patches/patches/017-MSFT-Patch_ICU_test_changes_for_extra_CLDR-MS_locales.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,131 +1,58 @@ | ||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
| From: Jeff Genovy <29107334+jefgen@users.noreply.github.com> | ||
| Date: Wed, 7 Apr 2021 20:47:08 -0700 | ||
| Subject: MSFT-PATCH: Modify ICU tests to pass with extra locales from CLDR-MS. | ||
| From: Arvind Oruganti <aoruganti@microsoft.com> | ||
| Date: Tue, 19 May 2026 06:45:00 +0530 | ||
| Subject: MSFT-PATCH: Refresh ICU tests for extra CLDR-MS locales on ICU 78 | ||
|
|
||
| This changes modifies the ICU tests to pass with extra locales from | ||
| CLDR-MS. | ||
| Refreshes the CLDR-MS extra-locale test expectations for ICU 78. | ||
|
|
||
| The ICU 72-era patch no longer matched the refactored ICU 78 tests, so the applicable 029 locale expectations were re-derived from the final passing Stage 7/8 tree. | ||
|
|
||
| diff --git a/icu/icu4c/source/test/cintltst/cldrtest.c b/icu/icu4c/source/test/cintltst/cldrtest.c | ||
| index 179539d5178b5cfd8b5350043c539e89e8740185..bfb35c35a449f60c61c9a8eb6282c307e41fd161 100644 | ||
| index e014a1e1d59a48fb6ef78923fb7de4160f69779b..8cf8e5dc1ba8f3059e4ce6b0d1bb6369cda51ca7 100644 | ||
| --- a/icu/icu4c/source/test/cintltst/cldrtest.c | ||
| +++ b/icu/icu4c/source/test/cintltst/cldrtest.c | ||
| @@ -970,7 +970,14 @@ static void VerifyTranslation(void) { | ||
| uprv_strncmp(currLoc, "oc", 2) == 0 || uprv_strncmp(currLoc, "oc_FR", 5) == 0 || | ||
| uprv_strncmp(currLoc, "syr", 3) == 0 || uprv_strncmp(currLoc, "syr_SY", 6) == 0 || | ||
| uprv_strncmp(currLoc, "tig", 3) == 0 || uprv_strncmp(currLoc, "tig_ER", 6) == 0 || | ||
| - uprv_strncmp(currLoc, "wal", 3) == 0 || uprv_strncmp(currLoc, "wal_ET", 6) == 0 | ||
| + uprv_strncmp(currLoc, "wal", 3) == 0 || uprv_strncmp(currLoc, "wal_ET", 6) == 0 || | ||
| + uprv_strncmp(currLoc, "bin", 3) == 0 || uprv_strncmp(currLoc, "bin_NG", 6) == 0 || | ||
| + uprv_strncmp(currLoc, "la", 2) == 0 || uprv_strncmp(currLoc, "la_VA", 6) == 0 || | ||
| + uprv_strncmp(currLoc, "jv_Java", 7) == 0 || uprv_strncmp(currLoc, "jv_Java_ID", 10) == 0 || | ||
| + uprv_strncmp(currLoc, "ks_Deva", 7) == 0 || uprv_strncmp(currLoc, "ks_Deva_IN", 10) == 0 || | ||
| + uprv_strncmp(currLoc, "pap", 3) == 0 || uprv_strncmp(currLoc, "pap_029", 7) == 0 || | ||
| + uprv_strncmp(currLoc, "tzm_Arab", 8) == 0 || uprv_strncmp(currLoc, "tzm_Arab_MA", 11) == 0 || | ||
| + uprv_strncmp(currLoc, "tzm_Tfng", 8) == 0 || uprv_strncmp(currLoc, "tzm_Tfng_MA", 11) == 0 | ||
| ) { | ||
| log_knownIssue("0", "MSFT Change: skipping test for %s which has issues due to CLDR Seed data.", currLoc); | ||
| } | ||
| @@ -1110,7 +1117,8 @@ static void VerifyTranslation(void) { | ||
| @@ -1122,7 +1122,7 @@ static void VerifyTranslation(void) { | ||
| if (U_FAILURE(errorCode)) { | ||
| log_err("ulocdata_getMeasurementSystem failed for locale %s with error: %s \n", currLoc, u_errorName(errorCode)); | ||
| } else { | ||
| - if ( strstr(fullLoc, "_US")!=NULL || strstr(fullLoc, "_LR")!=NULL ) { | ||
| + /* MSFT Change: CLDR-MS adds 029 region with US measurement */ | ||
| + if ( strstr(fullLoc, "_US")!=NULL || strstr(fullLoc, "_LR")!=NULL || strstr(fullLoc, "_029")!=NULL ) { | ||
| if(measurementSystem != UMS_US){ | ||
| log_err("ulocdata_getMeasurementSystem did not return expected data for locale %s \n", currLoc); | ||
| } | ||
| @@ -1128,10 +1136,11 @@ static void VerifyTranslation(void) { | ||
| if (U_FAILURE(errorCode)) { | ||
| log_err("ulocdata_getPaperSize failed for locale %s with error: %s \n", currLoc, u_errorName(errorCode)); | ||
| } else { | ||
| + /* MSFT Change: CLDR-MS adds 029 region with US paper size */ | ||
| @@ -1143,7 +1143,7 @@ static void VerifyTranslation(void) { | ||
| if ( strstr(fullLoc, "_US")!=NULL || strstr(fullLoc, "_BZ")!=NULL || strstr(fullLoc, "_CA")!=NULL || strstr(fullLoc, "_CL")!=NULL || | ||
| strstr(fullLoc, "_CO")!=NULL || strstr(fullLoc, "_CR")!=NULL || strstr(fullLoc, "_GT")!=NULL || strstr(fullLoc, "_MX")!=NULL || | ||
| strstr(fullLoc, "_NI")!=NULL || strstr(fullLoc, "_PA")!=NULL || strstr(fullLoc, "_PH")!=NULL || strstr(fullLoc, "_PR")!=NULL || | ||
| - strstr(fullLoc, "_SV")!=NULL || strstr(fullLoc, "_VE")!=NULL ) { | ||
| + strstr(fullLoc, "_SV")!=NULL || strstr(fullLoc, "_VE")!=NULL || strstr(fullLoc, "_029")!=NULL ) { | ||
| + strstr(fullLoc, "_SV")!=NULL || strstr(fullLoc, "_VE")!=NULL || strstr(fullLoc, "_029")!=NULL ) { | ||
| if (height != 279 || width != 216) { | ||
| log_err("ulocdata_getPaperSize did not return expected data for locale %s \n", currLoc); | ||
| } | ||
| @@ -1251,8 +1260,14 @@ static void TestExemplarSet(void){ | ||
|
|
||
| if (existsInScript == FALSE){ | ||
| /* MSFT Change */ | ||
| - if (uprv_strncmp(locale, "oc", 2) == 0 || uprv_strncmp(locale, "oc_FR", 5) == 0) { | ||
| - log_knownIssue("0", "MSFT Change: oc and oc_FR have ExemplarSet issues."); | ||
| + if (uprv_strncmp(locale, "oc", 2) == 0 || uprv_strncmp(locale, "oc_FR", 5) == 0 || | ||
| + uprv_strncmp(locale, "jv_Java", 7) == 0 || uprv_strncmp(locale, "jv_Java_ID", 10) == 0 || | ||
| + uprv_strncmp(locale, "la", 2) == 0 || uprv_strncmp(locale, "la_VA", 6) == 0 || | ||
| + uprv_strncmp(locale, "pap", 3) == 0 || uprv_strncmp(locale, "pap_029", 7) == 0 || | ||
| + uprv_strncmp(locale, "tzm_Arab", 8) == 0 || uprv_strncmp(locale, "tzm_Arab_MA", 11) == 0 || | ||
| + uprv_strncmp(locale, "tzm_Tfng", 8) == 0 || uprv_strncmp(locale, "tzm_Tfng_MA", 11) == 0 | ||
| + ) { | ||
| + log_knownIssue("0", "MSFT Change: skipping test for %s which has issue due to CLDR seed data.", locale); | ||
| continue; | ||
| } else { | ||
| log_err("ExemplarSet containment failed for locale : %s\n", locale); | ||
| diff --git a/icu/icu4c/source/test/cintltst/cnmdptst.c b/icu/icu4c/source/test/cintltst/cnmdptst.c | ||
| index 99a9ce23be7ef93923493b2b8312a254706c3f2d..a319b99e3faf6f6fc749e70852a298ce42268696 100644 | ||
| index 98504e0220ffb26a5f02877e1bbf7343e07e5a64..b7ce012361befc52b1b23e068017ffb71bdc4b4a 100644 | ||
| --- a/icu/icu4c/source/test/cintltst/cnmdptst.c | ||
| +++ b/icu/icu4c/source/test/cintltst/cnmdptst.c | ||
| @@ -811,7 +811,8 @@ static void TestGetKeywordValuesForLocale(void) { | ||
| @@ -813,7 +813,7 @@ static void TestGetKeywordValuesForLocale(void) { | ||
| { "und", "USD", "USN", NULL }, | ||
| /* { "und_ZZ", "USD", NULL, NULL }, -- temporarily remove as this locale now has 15 entries */ | ||
| { "en_US", "USD", "USN", NULL }, | ||
| - { "en_029", "USD", "USN", NULL }, | ||
| + /* MSFT Change: CLDR-MS adds en_029 locale with XCD currency */ | ||
| + { "en_029", "XCD", NULL, NULL }, | ||
| { "en_TH", "THB", NULL, NULL }, | ||
| { "de", "EUR", NULL, NULL }, | ||
| { "de_DE", "EUR", NULL, NULL }, | ||
| @@ -825,11 +826,13 @@ static void TestGetKeywordValuesForLocale(void) { | ||
| @@ -827,11 +827,11 @@ static void TestGetKeywordValuesForLocale(void) { | ||
| { "en_US@currency=CAD;rg=THZZZZ", "THB", NULL, NULL }, | ||
| }; | ||
| const int32_t EXPECTED_SIZE[PREFERRED_SIZE] = { | ||
| - 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1 | ||
| + /* MSFT Change: CLDR-MS adds en_029 locale with XCD currency */ | ||
| + 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1 | ||
| }; | ||
| /* ucurr_forLocale results for same locales; "" if no result expected */ | ||
| const char *FORLOCALE[PREFERRED_SIZE] = { | ||
| - "", "", "USD", "", | ||
| + /* MSFT Change: CLDR-MS adds en_029 locale with XCD currency */ | ||
| + "", "", "USD", "XCD", | ||
| "THB", "", "EUR", "", | ||
| "ILS", "CAD", "ZZZ", "DEM", | ||
| "THB", "USD", "CAD" | ||
| diff --git a/icu/icu4c/source/test/intltest/dtptngts.cpp b/icu/icu4c/source/test/intltest/dtptngts.cpp | ||
| index dc86355f93fa68f509a0023dc95fc17a548170c1..c83e27bb68c212c3e9569c71ed5b417a96b7f9de 100644 | ||
| --- a/icu/icu4c/source/test/intltest/dtptngts.cpp | ||
| +++ b/icu/icu4c/source/test/intltest/dtptngts.cpp | ||
| @@ -1408,7 +1408,8 @@ void IntlTestDateTimePatternGeneratorAPI::testJjMapping() { | ||
| uprv_strncmp(localeID, "ssy_ER", 6) == 0 || uprv_strncmp(localeID, "st_LS", 5) == 0 || | ||
| uprv_strncmp(localeID, "syr", 3) == 0 || uprv_strncmp(localeID, "syr_SY", 6) == 0 || | ||
| uprv_strncmp(localeID, "tig", 3) == 0 || uprv_strncmp(localeID, "tig_ER", 6) == 0 || | ||
| - uprv_strncmp(localeID, "wal", 3) == 0 || uprv_strncmp(localeID, "wal_ET", 6) == 0 | ||
| + uprv_strncmp(localeID, "wal", 3) == 0 || uprv_strncmp(localeID, "wal_ET", 6) == 0 || | ||
| + uprv_strncmp(localeID, "ks_Deva", 7) == 0 || uprv_strncmp(localeID, "ks_Deva_IN", 10) == 0 | ||
| ) { | ||
| logKnownIssue("0", "MSFT Change: skipping test for %s which has issues due to CLDR Seed data.", localeID); | ||
| } | ||
| diff --git a/icu/icu4c/source/test/intltest/numfmtst.cpp b/icu/icu4c/source/test/intltest/numfmtst.cpp | ||
| index bc072bd8e3775554b8a8f96a81baf850b5e8feb7..a63c329c8eabf287512b9c152ac91d862d333264 100644 | ||
| --- a/icu/icu4c/source/test/intltest/numfmtst.cpp | ||
| +++ b/icu/icu4c/source/test/intltest/numfmtst.cpp | ||
| @@ -8094,10 +8094,12 @@ void NumberFormatTest::TestAccountingCurrency() { | ||
| (Formattable)(double)-1000.5, UnicodeString("(\\uFFE51,000)").unescape(), FALSE, status); | ||
| expect(NumberFormat::createInstance("de_DE", style, status), | ||
| (Formattable)(double)-23456.7, UnicodeString("-23.456,70\\u00A0\\u20AC").unescape(), TRUE, status); | ||
| + /* MSFT Change: We add a CLDR-MS locale en_ID */ | ||
| expect(NumberFormat::createInstance("en_ID", style, status), | ||
| - (Formattable)(double)0, UnicodeString("IDR\\u00A00.00").unescape(), TRUE, status); | ||
| + (Formattable)(double)0, UnicodeString("IDR\\u00A00,00").unescape(), TRUE, status); | ||
| expect(NumberFormat::createInstance("en_ID", style, status), | ||
| - (Formattable)(double)-0.2, UnicodeString("(IDR\\u00A00.20)").unescape(), TRUE, status); | ||
| + (Formattable)(double)-0.2, UnicodeString("(IDR\\u00A00,20)").unescape(), TRUE, status); | ||
| + /* MSFT Change: End */ | ||
| expect(NumberFormat::createInstance("sh_ME", style, status), | ||
| (Formattable)(double)0, UnicodeString("0,00\\u00A0\\u20AC").unescape(), TRUE, status); | ||
| expect(NumberFormat::createInstance("sh_ME", style, status), | ||
13 changes: 8 additions & 5 deletions
13
...patches/patches/018-MSFT-Patch_ICU_toolutil_increase_string_store_for_extra_locales.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,19 +1,22 @@ | ||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
| From: Jeff Genovy <29107334+jefgen@users.noreply.github.com> | ||
| Date: Wed, 7 Apr 2021 20:47:31 -0700 | ||
| Subject: MSFT-PATCH: Increase the STRING_STORE_SIZE due to extra locales from CLDR-MS | ||
| From: Arvind Oruganti <aoruganti@microsoft.com> | ||
| Date: Tue, 19 May 2026 06:45:00 +0530 | ||
| Subject: MSFT-PATCH: Increase ICU string store for CLDR 48 extra locales | ||
|
|
||
| Increases STRING_STORE_SIZE for the larger CLDR 48 / CLDR-MS locale set. | ||
|
|
||
| The original 120000 value was carried from the older patch, but this ICU 78 upgrade settled on 200000 before the CLDR data build. | ||
|
|
||
| diff --git a/icu/icu4c/source/tools/toolutil/package.h b/icu/icu4c/source/tools/toolutil/package.h | ||
| index ea60c13a74a57b94057882e39b6aa05314c4ca1f..6c411ae5fd04c8463a089307efc056f4d2f622f9 100644 | ||
| index ea60c13a74a57b94057882e39b6aa05314c4ca1f..3a1d3cd23d9ee75ad2881d52c0f34413dbd554f1 100644 | ||
| --- a/icu/icu4c/source/tools/toolutil/package.h | ||
| +++ b/icu/icu4c/source/tools/toolutil/package.h | ||
| @@ -27,7 +27,7 @@ | ||
|
|
||
| // .dat package file representation ---------------------------------------- *** | ||
|
|
||
| -#define STRING_STORE_SIZE 100000 | ||
| +#define STRING_STORE_SIZE 120000 | ||
| +#define STRING_STORE_SIZE 200000 | ||
| #define MAX_PKG_NAME_LENGTH 64 | ||
|
|
||
| typedef void CheckDependency(void *context, const char *itemName, const char *targetName); |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Older convention was to wrap any MSFT specific change around a comment,
I would still want to follow that