Skip to content
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

icu4c@75 75.1 (new formula) #169239

Merged
merged 91 commits into from
Oct 7, 2024
Merged

icu4c@75 75.1 (new formula) #169239

merged 91 commits into from
Oct 7, 2024

Conversation

cho-m
Copy link
Member

@cho-m cho-m commented Apr 16, 2024

Created with brew bump-formula-pr.


Major changes

This release introduces C++17 minimum which impacts various dependents.

Versioning attempt

As reference:

May try versioning approach and test largest dep group to see if it improves anything.

EDIT: The largest connected deps group means at least 42 formulae need to be migrated on macOS (more if including Linux due to libxml2 and other common dependencies).

@cho-m cho-m marked this pull request as draft April 16, 2024 22:14
@github-actions github-actions bot added bump-formula-pr PR was created using `brew bump-formula-pr` CI-linux-self-hosted Build on Linux self-hosted runner long build Set a long timeout for formula testing labels Apr 16, 2024
@cho-m cho-m added pre-release Artifact is pre-release CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. labels Apr 16, 2024
@cho-m cho-m force-pushed the bump-icu4c-75.1 branch from b0ce297 to 5defd3d Compare April 17, 2024 00:16
@github-actions github-actions bot added automerge-skip `brew pr-automerge` will skip this pull request new formula PR adds a new formula to Homebrew/homebrew-core labels Apr 17, 2024
Copy link
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. To keep this pull request open, add a help wanted or in progress label.

@github-actions github-actions bot added the stale No recent activity label Apr 20, 2024
@cho-m cho-m added in progress Stale bot should stay away and removed stale No recent activity pre-release Artifact is pre-release labels Apr 20, 2024
@cho-m cho-m force-pushed the bump-icu4c-75.1 branch from 5defd3d to d0de0f6 Compare April 26, 2024 04:49
@cho-m cho-m added the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 26, 2024
@fxcoudert
Copy link
Member

fxcoudert commented Apr 26, 2024

harfbuzz not happy:

  In file included from ../src/hb-icu.cc:39:
  In file included from /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/unorm2.h:35:
  In file included from /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uset.h:36:
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/localpointer.h:561:26: error: 'auto' not allowed in template parameter until C++17
  template <typename Type, auto closeFunction>
                           ^~~~
  In file included from ../src/hb-icu.cc:39:
  In file included from /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/unorm2.h:35:
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uset.h:358:53: error: value of type 'void (USet *)' is not implicitly convertible to 'int'
  U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
                                                      ^~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/urename.h:1753:20: note: expanded from macro 'uset_close'
  #define uset_close U_ICU_ENTRY_POINT_RENAME(uset_close)
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:123:47: note: expanded from macro 'U_ICU_ENTRY_POINT_RENAME'
  #       define U_ICU_ENTRY_POINT_RENAME(x)    U_DEF2_ICU_ENTRY_POINT_RENAME(x,U_ICU_VERSION_SUFFIX)
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:122:51: note: expanded from macro 'U_DEF2_ICU_ENTRY_POINT_RENAME'
  #       define U_DEF2_ICU_ENTRY_POINT_RENAME(x,y) U_DEF_ICU_ENTRY_POINT_RENAME(x,y)
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:121:50: note: expanded from macro 'U_DEF_ICU_ENTRY_POINT_RENAME'
  #       define U_DEF_ICU_ENTRY_POINT_RENAME(x,y) x ## y
                                                   ^~~~~~
  <scratch space>:71:1: note: expanded from here
  uset_close_75
  ^~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/localpointer.h:551:68: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
      using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                     ^~~~~~~~~~~~~
  In file included from ../src/hb-icu.cc:39:
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/unorm2.h:286:69: error: value of type 'void (UNormalizer2 *)' is not implicitly convertible to 'int'
  U_DEFINE_LOCAL_OPEN_POINTER(LocalUNormalizer2Pointer, UNormalizer2, unorm2_close);
                                                                      ^~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/urename.h:1257:22: note: expanded from macro 'unorm2_close'
  #define unorm2_close U_ICU_ENTRY_POINT_RENAME(unorm2_close)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:123:47: note: expanded from macro 'U_ICU_ENTRY_POINT_RENAME'
  #       define U_ICU_ENTRY_POINT_RENAME(x)    U_DEF2_ICU_ENTRY_POINT_RENAME(x,U_ICU_VERSION_SUFFIX)
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:122:51: note: expanded from macro 'U_DEF2_ICU_ENTRY_POINT_RENAME'
  #       define U_DEF2_ICU_ENTRY_POINT_RENAME(x,y) U_DEF_ICU_ENTRY_POINT_RENAME(x,y)
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/uvernum.h:121:50: note: expanded from macro 'U_DEF_ICU_ENTRY_POINT_RENAME'
  #       define U_DEF_ICU_ENTRY_POINT_RENAME(x,y) x ## y
                                                   ^~~~~~
  <scratch space>:141:1: note: expanded from here
  unorm2_close_75
  ^~~~~~~~~~~~~~~
  /opt/homebrew/Cellar/icu4c@75/75.1/include/unicode/localpointer.h:551:68: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
      using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                     ^~~~~~~~~~~~~
  3 errors generated.

See harfbuzz/harfbuzz#4671 and https://cgit.freebsd.org/ports/commit/?id=4816cd49210c3c1413219b8884a17655cf4be340

@cho-m
Copy link
Member Author

cho-m commented Apr 26, 2024

Sounds like the ICU's minimum C++ standard is now C++17. Can try to force it, but may cause problems with dependents.

@github-actions github-actions bot removed the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 26, 2024
@cho-m cho-m force-pushed the bump-icu4c-75.1 branch from d0de0f6 to ef6a4c2 Compare April 27, 2024 03:26
@cho-m cho-m added the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 27, 2024
@github-actions github-actions bot removed the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 27, 2024
@cho-m cho-m force-pushed the bump-icu4c-75.1 branch from ef6a4c2 to 8cfb1a1 Compare April 27, 2024 03:33
@cho-m cho-m added the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 27, 2024
@cho-m cho-m force-pushed the bump-icu4c-75.1 branch from 8cfb1a1 to 7a5c7e1 Compare April 28, 2024 00:53
@github-actions github-actions bot removed the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Apr 29, 2024
@SMillerDev SMillerDev force-pushed the bump-icu4c-75.1 branch 2 times, most recently from 2b86906 to 0f40fb6 Compare May 13, 2024 16:15
@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Oct 7, 2024
@BrewTestBot BrewTestBot enabled auto-merge October 7, 2024 13:00
@BrewTestBot BrewTestBot added this pull request to the merge queue Oct 7, 2024
Merged via the queue into master with commit 3bfae86 Oct 7, 2024
15 checks passed
@BrewTestBot BrewTestBot deleted the bump-icu4c-75.1 branch October 7, 2024 13:21
@charlievieth
Copy link

charlievieth commented Oct 30, 2024

This might be the wrong PR/commit to comment on but Homebrew's recent renaming of "icu4c" to "icu4c@75" breaks libraries like github.com/mattn/go-sqlite3 (repro with: go build -tags sqlite_icu) that rely on the previous icu4c library location /usr/local/opt/icu4c or /opt/homebrew/opt/icu4c.

Are there any plans to reintroduce an icu4c formula that has the name "icu4c" (the same as it used to be) or are there suggestions for how non-brew managed libs/programs that depend on icu4c should handle this change?

Another issue here is that the pkg-config for icu4c is in a non-standard location which makes switching to pkg-config a big difficult (since uses would need to update the PKG_CONFIG_PATH env var for it to work).

Also, thank you for all of your work on Homebrew!

@cho-m
Copy link
Member Author

cho-m commented Oct 30, 2024

This might be the wrong PR/commit to comment on but Homebrew's recent renaming of "icu4c" to "icu4c@75" breaks libraries like github.com/mattn/go-sqlite3 (repro with: go build -tags sqlite_icu) that rely on the previous icu4c library location /usr/local/opt/icu4c or /opt/homebrew/opt/icu4c.

It should be available, but may not have gotten auto-upgraded since there wasn't a revision bump.

A workaround for now is brew reinstall icu4c.

Given ICU 76 is almost ready, can add a revision bump when migrating icu4c alias to icu4c@76.

@charlievieth
Copy link

Thank you for the very quick response and brew reinstall icu4 works!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-linux-self-hosted Build on Linux self-hosted runner CI-linux-self-hosted-deps Test dependents on Linux self-hosted runner CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. CI-no-fail-fast-deps Continue dependent tests despite failing GitHub Actions matrix tests. CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. in progress Stale bot should stay away long build Set a long timeout for formula testing long dependent tests Set a long timeout for dependent testing new formula PR adds a new formula to Homebrew/homebrew-core no long build conflict Do not allow merging other pull requests when files conflict with this one
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants