WIP: Moving to cpack in order to unify installers across all platforms#139
WIP: Moving to cpack in order to unify installers across all platforms#139ABeltramo wants to merge 13 commits intoLizardByte:nightlyfrom
Conversation
|
I'll modify the docs to reflect the change, if someone wants to try this out it's as simple as: mkdir build # I like to put all the generated files inside here, so that we don't clutter the root
cd build
cmake ../
cpack -G DEB # you can also try RPM |
There was a problem hiding this comment.
Thanks for working on this! Once you're happy with everything, CI will also need to be updated. Also, once the CI is updated, we can run it when you push new changes, and have downloadable artifacts from the workflow run.
Linux builds: https://github.com/SunshineStream/Sunshine/blob/c4054c75a7fdd0c336db326af5a77171db072e49/.github/workflows/CI.yml#L146
Windows build: https://github.com/SunshineStream/Sunshine/blob/c4054c75a7fdd0c336db326af5a77171db072e49/.github/workflows/CI.yml#L197
The final action in each job expects the release asset to be in the artifacts directory.
| set(CMAKE_INSTALL_PREFIX "/etc/sunshine") | ||
| endif() | ||
|
|
||
| include(CPack) No newline at end of file |
There was a problem hiding this comment.
add new line at end of files
.github/workflows/CI.yml
Outdated
| cp Sunshine__.rpm ../artifacts/ | ||
| cp Sunshine__.deb ../artifacts/ |
There was a problem hiding this comment.
Same comment as windows regarding move.
Let's use these filenames:
sunshine.deb
sunshine.rpm
Also, while changes are being made, let's order them alphabetically. deb first, then rpm.
.github/workflows/CI.yml
Outdated
| mkdir artifacts | ||
|
|
.github/workflows/CI.yml
Outdated
| - name: Package Windows | ||
| run: | | ||
| cd sunshine-windows-build | ||
| del ..\assets\apps_linux.json | ||
| 7z a sunshine-windows.zip ..\assets | ||
| 7z a sunshine-windows.zip sunshine.exe | ||
| 7z a sunshine-windows.zip tools\dxgi-info.exe | ||
| 7z a sunshine-windows.zip tools\audio-info.exe | ||
| 7z a sunshine-windows.zip tools\sunshinesvc.exe | ||
| 7z a sunshine-windows.zip ..\tools\install-service.bat | ||
| 7z a sunshine-windows.zip ..\tools\uninstall-service.bat | ||
| cd .. | ||
| mkdir artifacts | ||
| move "sunshine-windows-build\sunshine-windows.zip" "artifacts" | ||
| cpack | ||
|
|
||
| cp Sunshine__.exe ../artifacts |
There was a problem hiding this comment.
Let's keep the package step as we discussed. Would be good to have a portable version as well.
Probably doesn't make much difference, but I think it would be better (slightly faster) to use move... also let's rename the file to sunshine-windows-installer.exe
Probably makes most sense to have both cpack and the move in the package step.
- name: Package Windows
run: |
cd sunshine-windows-build
cpack
del ..\assets\apps_linux.json
7z a sunshine-windows.zip ..\assets
7z a sunshine-windows.zip sunshine.exe
7z a sunshine-windows.zip tools\dxgi-info.exe
7z a sunshine-windows.zip tools\audio-info.exe
7z a sunshine-windows.zip tools\sunshinesvc.exe
7z a sunshine-windows.zip ..\tools\install-service.bat
7z a sunshine-windows.zip ..\tools\uninstall-service.bat
mkdir artifacts
move "sunshine-windows.zip" "../artifacts"
move "Sunshine__.exe" "../artifacts/sunshine-windows-installer.exe"| set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/SunshineStream/Sunshine") | ||
| set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE) | ||
| set(CPACK_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/sunshine.png) | ||
| set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") |
CMakeLists.txt
Outdated
| set(CPACK_PACKAGE_CONTACT "https://github.com/SunshineStream/Sunshine") | ||
| set(CPACK_DEBIAN_PACKAGE_MAINTAINER "https://github.com/SunshineStream/Sunshine") | ||
| set(CPACK_PACKAGE_DESCRIPTION "Gamestream host for Moonlight") | ||
| set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/SunshineStream/Sunshine") |
There was a problem hiding this comment.
https://sunshinestream.github.io
ReenigneArcher
left a comment
There was a problem hiding this comment.
There might be more, but this is what I found so far.
.github/workflows/CI.yml
Outdated
| del ..\assets\apps_linux.json | ||
| 7z a sunshine-windows.zip ..\assets | ||
| 7z a sunshine-windows.zip sunshine.exe | ||
| 7z a sunshine-windows.zip tools\dxgi-info.exe | ||
| 7z a sunshine-windows.zip tools\audio-info.exe | ||
| 7z a sunshine-windows.zip tools\sunshinesvc.exe | ||
| 7z a sunshine-windows.zip ..\tools\install-service.bat | ||
| 7z a sunshine-windows.zip ..\tools\uninstall-service.bat | ||
| cd .. | ||
| mkdir artifacts | ||
| move "sunshine-windows-build\sunshine-windows.zip" "artifacts" | ||
| - name: Upload Artifacts | ||
| cpack | ||
|
|
||
| mkdir -p artifacts/standalone | ||
| mkdir -p artifacts/web | ||
| mkdir -p artifacts/shaders/directx | ||
|
|
||
| # Installers | ||
| mv Sunshine__.exe artifacts/sunshine-windows-installer.exe | ||
|
|
||
| # Standalone | ||
| mv ../assets/web artifacts/web | ||
| mv tools artifacts/tools | ||
| mv ../assets/shaders/directx artifacts/shaders/directx | ||
| mv ../assets/apps_windows.json artifacts/apps_windows.json | ||
| mv ../assets/sunshine.conf artifacts/sunshine.conf | ||
| mv sunshine.exe artifacts/sunshine.exe |
There was a problem hiding this comment.
This won't work like this. We need only 2 files in the artifacts folders.
- installer exe
- zip (portable version as before)
This is because every file single in the assets directory will be uploaded as a release asset.
My code snip before should work (except the mkdir artifacts needed to be moved)
.github/workflows/CI.yml
Outdated
| - name: Upload Sunshine Installer | ||
| if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} | ||
| uses: actions/upload-artifact@v3 | ||
| with: | ||
| name: sunshine-windows-installer | ||
| path: artifacts/sunshine-windows-installer.exe |
There was a problem hiding this comment.
This won't be necessary because just using path: artifacts will upload all the files that exist in that folder (this will be the same behavior for the create release action)
There was a problem hiding this comment.
The problem with this is that Github will make one .zip file that contains both the .exe installer and the .zip with the sunshine standalone package resulting in a 20MB zip to be donwloaded that basically contains everything twice just packaged in two different formats (see: https://github.com/ABeltramo/Sunshine/actions/runs/2249492914).
I think it's better to split them in two separate 10MB artifacts so that users can download only the one needed.
There was a problem hiding this comment.
It only does it for artifacts though, not releases. Users are rarely downloading artifacts.
Just trying to keep the CI more simple as it's already overly complex.
.github/workflows/CI.yml
Outdated
| - name: Upload Sunshine executable | ||
| if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} | ||
| uses: actions/upload-artifact@v3 | ||
| with: | ||
| name: sunshine-windows | ||
| path: artifacts/ | ||
| name: sunshine-windows-standalone | ||
| path: artifacts/standalone |
| check_versions: | ||
| name: Check Versions | ||
| runs-on: ubuntu-latest | ||
| needs: check_changelog |
There was a problem hiding this comment.
Why was this changed? It's required here.
Check changelog runs first (doesn't run except on PRs or Pulls into master branch). Makes sure that the version in the changelog was updated and is not equal to the latest released version.
Then check versions runs... makes sure that the version number in the CMakeLists.txt was updated.
added default brew link libraries path
…release action at the end
|
Current status:
This could be reviewed and merged if you are in a rush to release this, but I would like to cleanup There's also probably some documentation to be updated, I haven't looked into it yet. |
Revert workflow logic

Description
I'm moving package distribution to
cpackwhich will unify the current.deband.rpmgeneration and it'll enable creation of Windows Installers and Mac OSX bundles.This should reduce considerably duplication of code.
Currently work in progress, needs testing on real deployments.
Issues Fixed or Closed
Type of Change
Please delete options that are not relevant.
Checklist