Skip to content

openjdk 19#111280

Closed
cho-m wants to merge 1 commit intoHomebrew:masterfrom
cho-m:bump-openjdk-19
Closed

openjdk 19#111280
cho-m wants to merge 1 commit intoHomebrew:masterfrom
cho-m:bump-openjdk-19

Conversation

@cho-m
Copy link
Copy Markdown
Member

@cho-m cho-m commented Sep 20, 2022

Created with brew bump-formula-pr.

resource blocks may require updates.

@cho-m cho-m marked this pull request as draft September 20, 2022 23:10
@BrewTestBot BrewTestBot added automerge-skip `brew pr-automerge` will skip this pull request bump-formula-pr PR was created using `brew bump-formula-pr` labels Sep 20, 2022
Comment on lines 4 to 5
Copy link
Copy Markdown
Member Author

@cho-m cho-m Sep 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May wait a few days to see if upstream creates a jdk-19-ga tag. Looks like OpenJDK/Oracle have already built v19 release off the build version.

https://jdk.java.net/19/release-notes

The full version string for this release is build 19+36 (where "+" means "build"). The version number is 19.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also https://mail.openjdk.org/pipermail/jdk-dev/2022-September/006933.html (emphasis mine):

JDK 19, the reference implementation of Java 19, is now Generally
Available. We shipped build 36 as the first Release Candidate of
JDK 19 on 18 August, and no P1 bugs have been reported since then.
Build 36 is therefore now the GA build, ready for production use.

@cho-m cho-m marked this pull request as ready for review September 20, 2022 23:26
@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 20, 2022

Failing on https://github.com/openjdk/jdk19/blob/jdk-19+36/src/hotspot/share/utilities/compilerWarnings_gcc.hpp#L72-L85 (maybe something with XCode 14? The #if won't be used on older XCode releases)

#if (__GNUC__ >= 10) || (defined(__clang_major__) && (__clang_major__ >= 14))

...

#define FORBID_C_FUNCTION(signature, alternative) \
  extern "C" __attribute__((__warning__(alternative))) signature;
  /private/tmp/openjdk-20220920-99421-1ei2qxf/jdk19u-jdk-19-36/src/hotspot/share/utilities/globalDefinitions.hpp:165:1: error: 'warning' attribute does not appear on the first declaration
  FORBID_C_FUNCTION(void exit(int), "use os::exit");
  ^
  /private/tmp/openjdk-20220920-99421-1ei2qxf/jdk19u-jdk-19-36/src/hotspot/share/utilities/compilerWarnings_gcc.hpp:85:29: note: expanded from macro 'FORBID_C_FUNCTION'
    extern "C" __attribute__((__warning__(alternative))) signature;
                              ^
  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.sdk/usr/include/stdlib.h:145:7: note: previous declaration is here
  void     exit(int) __dead2;
           ^

@cho-m cho-m added the CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. label Sep 20, 2022
@Bo98
Copy link
Copy Markdown
Member

Bo98 commented Sep 21, 2022

Can try apply openjdk/jdk@0599a05.

@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 21, 2022

Big Sur ARM Failures:


Can rebase after these are merged and maybe also #111255.

@carlocab
Copy link
Copy Markdown
Member

It would be good to see if we can stop using some bundled libraries:

  --with-freetype         specify whether to use 'system' or 'bundled'
                          freetype. The selected option applies to both build
                          time and run time. The default behaviour can be
                          platform dependent. If using 'system' and either the
                          include files or libraries cannot be located
                          automatically, then additionally specify both using
                          --with-freetype-include and --with-freetype-lib.
  --with-freetype-include specify directory for the freetype include files
  --with-freetype-lib     specify directory for the freetype library
  --with-alsa             specify prefix directory for the alsa package
                          (expecting the libraries under PATH/lib and the
                          headers under PATH/include)
  --with-alsa-include     specify directory for the alsa include files
  --with-alsa-lib         specify directory for the alsa library
  --with-libffi           specify prefix directory for the libffi package
                          (expecting the libraries under PATH/lib and the
                          headers under PATH/include)
  --with-libffi-include   specify directory for the libffi include files
  --with-libffi-lib       specify directory for the libffi library
  --with-libjpeg          use libjpeg from build system or OpenJDK source
                          (system, bundled) [bundled]
  --with-giflib           use giflib from build system or OpenJDK source
                          (system, bundled) [bundled]
  --with-libpng           use libpng from build system or OpenJDK source
                          (system, bundled) [bundled]
  --with-zlib             use zlib from build system or OpenJDK source
                          (system, bundled) [bundled]
  --with-lcms             use lcms2 from build system or OpenJDK source
                          (system, bundled) [bundled]
  --with-harfbuzz         use harfbuzz from build system or OpenJDK source
                          (system, bundled) [bundled]

@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 21, 2022

We did build openj9 with system/Homebrew libraries so probably good idea to do so for openjdk too.

  • fontconfig/freetype can only be bundled on macOS.

@cho-m cho-m added the long build Set a long timeout for formula testing label Sep 21, 2022
@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 21, 2022

Bit annoying OpenSSL dependency tree. I'll probably just add to allowlist:

  couchdb-lucene:
    * couchdb-lucene contains conflicting version recursive dependencies:
        openssl@3, openssl@1.1
      View these with `brew deps --tree couchdb-lucene`.
  tomcat-native:
    * tomcat-native contains conflicting version recursive dependencies:
        openssl@1.1, openssl@3
      View these with `brew deps --tree tomcat-native`.

@cho-m cho-m force-pushed the bump-openjdk-19 branch 2 times, most recently from 0fddb94 to 06e13e0 Compare September 21, 2022 06:55
@cho-m cho-m added CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. long build Set a long timeout for formula testing and removed long build Set a long timeout for formula testing labels Sep 21, 2022
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be bundled on macOS too. Does using the system version not work?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openjdk only allows bundled copy on macOS https://github.com/openjdk/jdk19u/blob/jdk-19+36/make/autoconf/lib-freetype.m4#L128-L132

  if test "x$FREETYPE_TO_USE" = "xsystem" && \
     (test "x$OPENJDK_TARGET_OS" = "xwindows" || \
     test "x$OPENJDK_TARGET_OS" = "xmacosx"); then
    AC_MSG_ERROR([Only bundled freetype can be specified on Mac and Windows])
  fi

@carlocab carlocab removed the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Sep 21, 2022
@Bo98
Copy link
Copy Markdown
Member

Bo98 commented Sep 21, 2022

Bit annoying OpenSSL dependency tree. I'll probably just add to allowlist:

  couchdb-lucene:
    * couchdb-lucene contains conflicting version recursive dependencies:
        openssl@3, openssl@1.1
      View these with `brew deps --tree couchdb-lucene`.
  tomcat-native:
    * tomcat-native contains conflicting version recursive dependencies:
        openssl@1.1, openssl@3
      View these with `brew deps --tree tomcat-native`.

OpenSSL 1.1 and OpenSSL 3 cannot be installed at the same time on Linux yet and OpenSSL 3 cannot currently build on older macOS. I swear I'll get round to fixing OpenSSL 3 soon. 😅

@cho-m cho-m mentioned this pull request Sep 21, 2022
6 tasks
@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 21, 2022

OpenSSL 1.1 and OpenSSL 3 cannot be installed at the same time on Linux yet and OpenSSL 3 cannot currently build on older macOS. I swear I'll get round to fixing OpenSSL 3 soon. 😅

Some formulae already try to install both like swtpm and we have migrated 33 formulae to openssl@3 along with 1 via openssl alias (get-flash-videos).

Can we make one of them keg-only on Linux?


For new failures, pig doesn't seem to like JDK 19 so trying to downgrade in #111338. mercury Linux failure is from gcc-5 usage somewhere that fails with GCC migration.


Otherwise, just need to decide if we keep waiting for a GA tag. The code itself should be identical as the tag should be set to same commit as jdk-19+36.

@Bo98
Copy link
Copy Markdown
Member

Bo98 commented Sep 21, 2022

Can we make one of them keg-only on Linux?

We should make OpenSSL 1.1 keg only, but will require a long PR run which has been hard to fit in recently.

Some formulae already try to install both like swtpm and we have migrated 33 formulae to openssl@3 along with 1 via openssl alias (get-flash-videos).

I think they're all low install count. We've not migrated anything major, nor should have yet. It's quite a large operation to pull off and I should create a tracking issue for it.

@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 21, 2022

We should make OpenSSL 1.1 keg only, but will require a long PR run which has been hard to fit in recently.

Actually, openssl@3 was made keg-only in #87023 so should be possible to have both openssl@1.1 and openssl@3 installed on Linux.


For this PR, the only question/blocker is if we want to wait for jdk-19-ga tag. Not sure why there isn't one already.

Based on livecheck failure from my oracle-jdk Cask PR (Homebrew/homebrew-cask#132008), upstream may be planning a quick 19.0.1 release

@Bo98
Copy link
Copy Markdown
Member

Bo98 commented Sep 21, 2022

Actually, openssl@3 was made keg-only in #87023 so should be possible to have both openssl@1.1 and openssl@3 installed on Linux.

Ah whoops forgot we did that and the second keg-only made it easy to miss. Not sure what the long-term keg-only plan is.

@cho-m cho-m added the CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. label Sep 22, 2022
@carlocab
Copy link
Copy Markdown
Member

Ah whoops forgot we did that and the second keg-only made it easy to miss. Not sure what the long-term keg-only plan is.

I think we want to link openssl@3 and make openssl@1.1 keg only on Linux too.

* versioned_dependencies_conflicts_allowlist: add `couchdb-lucene`
  and `tomcat-native` due to unbundling `openjdk` dependencies.
@cho-m cho-m added maintainer feedback Additional maintainers' opinions may be needed and removed CI-long-timeout [DEPRECATED] Use longer GitHub Actions CI timeout. labels Sep 22, 2022
@cho-m
Copy link
Copy Markdown
Member Author

cho-m commented Sep 22, 2022

Not sure why selenium-server failed on Monterey but it is an all bottle that passed everywhere else.

Should be ready if we decide to merge now or wait for another tag. I checked the repos but still no new v19 tag in https://github.com/openjdk/jdk19u, https://github.com/openjdk/jdk19, or https://github.com/openjdk/jdk

depends_on "alsa-lib"
depends_on "cups"
depends_on "fontconfig"
depends_on "gcc"
Copy link
Copy Markdown
Member

@carlocab carlocab Sep 22, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was not picked up by the audit in the last openjdk PR. Weird.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On side note, this had indirectly linked zstd for emscripten. Should check on opportunistic linkage and whether it is worth adding as direct dependency:

Full linkage --cached --test --strict emscripten output
  Undeclared dependencies with linkage:
    zstd

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's from the LLVM build, picked up via gcc. We should pass -DLLVM_ENABLE_ZSTD=OFF to the LLVM build. We also probably want to disable libxml2, and perhaps ncurses.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Audit fixed in Homebrew/brew#13918.

@carlocab
Copy link
Copy Markdown
Member

emscripten linkage with zstd fixed in #111582.

@BrewTestBot
Copy link
Copy Markdown
Contributor

:shipit: @carlocab has triggered a merge.

@cho-m cho-m deleted the bump-openjdk-19 branch September 25, 2022 11:58
@github-actions github-actions bot added the outdated PR was locked due to age label Oct 26, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 26, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

automerge-skip `brew pr-automerge` will skip this pull request bump-formula-pr PR was created using `brew bump-formula-pr` CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. long build Set a long timeout for formula testing maintainer feedback Additional maintainers' opinions may be needed outdated PR was locked due to age ready to merge PR can be merged once CI is green

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants