-
Notifications
You must be signed in to change notification settings - Fork 460
Fix #10952 #10953 - Fixup tcl-tk issue on mac + add ubuntu arm64 runners #10954
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
Conversation
…dds linux arm64 packages
I kept the "any_missing" stuff in there though. Not sure if that was wise.
…lain if something is missing when it isn't a `@path` and should be an actual file
Shenanigans!??? Don't you mean incredibly brave and clever workarounds? |
| inputs: | ||
| BUILD_DOCS: | ||
| description: 'Whether to build docs or not as it takes 15 minutes to install MacTex' | ||
| required: true | ||
| type: boolean | ||
| default: false |
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.
Bonus: on workflow_dispatch, ask if BUILD_DOCS should be enabled or not. Avoids having to tweak the workflow file to turn it off.
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.
Beautiful. Should we do this on all of them? I could imagine setting up a very generic build workflow where you provide a bunch of switches or CMake args to configure basically the whole build like a normal local setup. That way we could quickly set a specific configuration with caching/python linking/etc. Anyway, this is great.
| macos_dev_target: [12.1, 13.0] | ||
| include: | ||
| # - macos_dev_target: 12.1 | ||
| # os: macos-12 | ||
| # allow_failure: false | ||
| # arch: x86_64 | ||
| # python-arch: x64 | ||
| # pretty: "Mac x64" | ||
| - macos_dev_target: 12.1 | ||
| os: macos-13 | ||
| allow_failure: false | ||
| arch: x86_64 | ||
| python-arch: x64 | ||
| pretty: "Mac x64" |
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.
Revert the commenting out from @Myoldmopar . hopefully I caught everything that needed reverting...
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.
I'm sure it's fine.
| - name: Set up Python ${{ env.Python_REQUIRED_VERSION }} | ||
| id: setup-python | ||
| uses: jmarrec/setup-python@v5 | ||
| uses: jmarrec/setup-python@v5.4.0 |
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.
Using my new python binaries
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.
You are a great hero in properly building out the Python versions we need. It's annoying that we do need them, but I appreciate you handling that.
| if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | ||
| BUILD_DOCS="${{ inputs.BUILD_DOCS }}" | ||
| echo "BUILD_DOCS=$BUILD_DOCS" >> $GITHUB_ENV | ||
| fi |
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.
Overwrite env.BUILD_DOCS when workflow_dispatch
| push: | ||
| tags: | ||
| - '*' | ||
| workflow_dispatch: |
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.
Added workflow_dispatch events for linux and windows too. Useful when testing instead of having to tag a release.
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.
That's really great, but how does that work with the upload-release-action? That's why I hadn't done this in the past, I assumed it would require some logic down in the workflow to handle whether it was a release or just an artifact.
| with: | ||
| name: energyplus-${{ matrix.os }} | ||
| path: build/EnergyPlus-*-x86_64.tar.gz | ||
| path: build/EnergyPlus-*-${{ matrix.arch }}.tar.gz |
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.
same
| - os: ubuntu-22.04-arm | ||
| test_key: ubuntu2204-arm64 | ||
| - os: ubuntu-24.04-arm | ||
| test_key: ubuntu2404-arm64 |
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.
Test the arm ones too
| # python-arch: x64 | ||
| # pretty: "Mac x64" | ||
| - macos_dev_target: 12.1 | ||
| os: macos-13 |
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.
macos-12 is bye bye. macos-13 is the last x86_64 machine available for macOS
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.
👍 And what's the EOL for macos-13 I wonder. Will they keep it around a while to support an x86_64 Mac?
Anyway, good stuff.
| # as a very quick test, I wonder what happens if we just let it continue without this dep...I'll force fail the workflow as a reminder | ||
| sys.exit(0) | ||
|
|
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.
remove
| 'ubuntu2204-arm64': { | ||
| 'os': OS.Linux, 'bitness': 'arm64', 'asset_pattern': 'Linux-Ubuntu22.04-arm64.tar.gz', 'os_version': '22.04' | ||
| }, | ||
| 'ubuntu2404-arm64': { | ||
| 'os': OS.Linux, 'bitness': 'arm64', 'asset_pattern': 'Linux-Ubuntu24.04-arm64.tar.gz', 'os_version': '24.04' | ||
| }, |
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.
New test keys.
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.
👍
Myoldmopar
left a comment
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.
This is awesome. Thank you @jmarrec!
| push: | ||
| tags: | ||
| - '*' | ||
| workflow_dispatch: |
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.
That's really great, but how does that work with the upload-release-action? That's why I hadn't done this in the past, I assumed it would require some logic down in the workflow to handle whether it was a release or just an artifact.
| - os: ubuntu-22.04 | ||
| pretty: "Ubuntu 22.04" | ||
| arch: x86_64 | ||
| python-arch: x64 | ||
| - os: ubuntu-24.04 | ||
| pretty: "Ubuntu 24.04" | ||
| arch: x86_64 | ||
| python-arch: x64 | ||
| - os: ubuntu-22.04-arm | ||
| pretty: "Ubuntu 22.04 arm64" | ||
| arch: arm64 | ||
| python-arch: arm64 | ||
| - os: ubuntu-24.04-arm | ||
| pretty: "Ubuntu 24.04 arm64" | ||
| arch: arm64 | ||
| python-arch: arm64 |
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.
Got it. This is good stuff. I was kinda surprised to see 22.04 added in here, but hey it's fine for a while.
| - name: Set up Python ${{ env.Python_REQUIRED_VERSION }} | ||
| id: setup-python | ||
| uses: jmarrec/setup-python@v5 | ||
| uses: jmarrec/setup-python@v5.4.0 |
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.
Yes, very good. Very good.
| uses: jmarrec/setup-qtifw@v1 | ||
| with: | ||
| qtifw-version: '4.6.1' | ||
| qtifw-version: '4.8.1' |
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.
Got it. And we are using your fork because they didn't take your PR to pass arguments down into binarycreator, right? Or something like that? Over time it would be really great to get back to mainline actions so we don't have to rely on custom built ones, but I do appreciate your patches to them.
| inputs: | ||
| BUILD_DOCS: | ||
| description: 'Whether to build docs or not as it takes 15 minutes to install MacTex' | ||
| required: true | ||
| type: boolean | ||
| default: false |
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.
Beautiful. Should we do this on all of them? I could imagine setting up a very generic build workflow where you provide a bunch of switches or CMake args to configure basically the whole build like a normal local setup. That way we could quickly set a specific configuration with caching/python linking/etc. Anyway, this is great.
| macos_dev_target: [12.1, 13.0] | ||
| include: | ||
| # - macos_dev_target: 12.1 | ||
| # os: macos-12 | ||
| # allow_failure: false | ||
| # arch: x86_64 | ||
| # python-arch: x64 | ||
| # pretty: "Mac x64" | ||
| - macos_dev_target: 12.1 | ||
| os: macos-13 | ||
| allow_failure: false | ||
| arch: x86_64 | ||
| python-arch: x64 | ||
| pretty: "Mac x64" |
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.
I'm sure it's fine.
| - name: Set up Python ${{ env.Python_REQUIRED_VERSION }} | ||
| id: setup-python | ||
| uses: jmarrec/setup-python@v5 | ||
| uses: jmarrec/setup-python@v5.4.0 |
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.
You are a great hero in properly building out the Python versions we need. It's annoying that we do need them, but I appreciate you handling that.
| uses: jmarrec/setup-qtifw@v1 | ||
| with: | ||
| qtifw-version: '4.6.1' | ||
| qtifw-version: '4.8.1' |
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.
Interesting. Looks like it's in the April-June roadmap on GitHub Action's public roadmap. (github/roadmap#1098). So we shouldn't be waiting long.
| sos = list(_python_dir.glob("lib-dynload/_tkinter*.so")) | ||
| def locate_tk_so(python_dir: Path) -> Path: | ||
| print(f"Searching for _tkinter so in {python_dir}") | ||
| sos = list(python_dir.glob("lib-dynload/_tkinter*.so")) |
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.
My renaming here was just to avoid variable shadowing from the outer scope. But that's fine, it can go back to shadowing.
| 'ubuntu2204-arm64': { | ||
| 'os': OS.Linux, 'bitness': 'arm64', 'asset_pattern': 'Linux-Ubuntu22.04-arm64.tar.gz', 'os_version': '22.04' | ||
| }, | ||
| 'ubuntu2404-arm64': { | ||
| 'os': OS.Linux, 'bitness': 'arm64', 'asset_pattern': 'Linux-Ubuntu24.04-arm64.tar.gz', 'os_version': '24.04' | ||
| }, |
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.
👍
|
No reason to wait on this, thanks for fixing this all up @jmarrec. Merging. |

Pull request overview
Description of the purpose of this PR
brew --prefix tcl-tk@8(important the@8here),brew --prefix tcl-tk, which used to be tcl tk 8.6, but now is 9. So it goes awfully.Test release on my fork at https://github.com/jmarrec/EnergyPlus/releases/tag/v25.1.0-IOFreeze-Ubuntu-arm64-macfixup
Pull Request Author
Reviewer