chore(deps): bump third-party/nxdk from f133d5c
to 3a29e28
#100
This file contains 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
--- | |
name: CI | |
on: | |
pull_request: | |
branches: | |
- master | |
types: | |
- opened | |
- synchronize | |
- reopened | |
push: | |
branches: | |
- master | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
jobs: | |
setup_release: | |
name: Setup Release | |
outputs: | |
publish_release: ${{ steps.setup_release.outputs.publish_release }} | |
release_body: ${{ steps.setup_release.outputs.release_body }} | |
release_commit: ${{ steps.setup_release.outputs.release_commit }} | |
release_generate_release_notes: ${{ steps.setup_release.outputs.release_generate_release_notes }} | |
release_tag: ${{ steps.setup_release.outputs.release_tag }} | |
release_version: ${{ steps.setup_release.outputs.release_version }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Release | |
id: setup_release | |
uses: LizardByte/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-latest | |
shell: "bash" | |
- os: ubuntu-latest | |
shell: "bash" | |
- os: windows-latest | |
shell: "msys2 {0}" | |
name: Build (${{ matrix.os }}) | |
needs: setup_release | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Dependencies Linux | |
if: runner.os == 'Linux' | |
run: | | |
dependencies=( | |
"bison" | |
"build-essential" | |
"clang" | |
"cmake" | |
"flex" | |
"git" | |
"lld" | |
"llvm" | |
) | |
sudo apt-get update | |
sudo apt-get install --no-install-recommends -y "${dependencies[@]}" | |
- name: Setup Dependencies macOS | |
if: runner.os == 'macOS' | |
run: | | |
dependencies=( | |
"cmake" | |
"coreutils" | |
"lld" | |
"llvm" | |
) | |
brew install "${dependencies[@]}" | |
- name: Setup Dependencies Windows | |
if: runner.os == 'Windows' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
update: true | |
install: >- | |
make | |
cmake | |
git | |
bison | |
flex | |
mingw-w64-x86_64-gcc | |
mingw-w64-x86_64-llvm | |
mingw-w64-x86_64-clang | |
mingw-w64-x86_64-lld | |
- name: Setup python | |
id: setup-python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Python Path | |
id: python-path | |
run: | | |
if [ "${{ runner.os }}" = "Windows" ]; then | |
# replace backslashes with double backslashes | |
python_path=$(echo "${{ steps.setup-python.outputs.python-path }}" | sed 's/\\/\\\\/g') | |
else | |
python_path=${{ steps.setup-python.outputs.python-path }} | |
fi | |
# step output | |
echo "python-path=${python_path}" | |
echo "python-path=${python_path}" >> $GITHUB_OUTPUT | |
- name: Build | |
run: | | |
export NXDK_DIR="$(pwd)/third-party/nxdk" | |
eval "$(${NXDK_DIR}/bin/activate -s)" | |
cd "${NXDK_DIR}" | |
make NXDK_ONLY=y | |
make tools | |
cd "${GITHUB_WORKSPACE}" | |
mkdir -p build | |
# the main target needs to be cross compiled | |
echo "--- Building ALL ---" | |
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${NXDK_DIR}/share/toolchain-nxdk.cmake" | |
cmake --build build | |
# TODO: Tests are not building properly... | |
# the tests target should not be cross compiled, so we can run it on the runner | |
# https://stackoverflow.com/a/64335131/11214013 | |
# echo "--- Building tests ---" | |
# cmake \ | |
# -B build/tests \ | |
# -S . \ | |
# -DBUILD_TESTS=ON | |
# cmake --build build/tests --target test_moonlight | |
# recursively list all files in build directory | |
ls -R build | |
# move artifacts | |
mkdir -p artifacts | |
tar -czf ./artifacts/Moonlight.tar.gz ./build/xbe | |
mv ./Moonlight.iso ./artifacts | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: moonlight-${{ runner.os }} | |
path: artifacts/ | |
- name: Run tests | |
id: test | |
if: false | |
working-directory: build/tests | |
run: | | |
./test_moonlight --gtest_color=yes | |
- name: Generate gcov report | |
# any except canceled or skipped | |
if: always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure') | |
id: test_report | |
working-directory: build | |
run: | | |
${{ steps.python-path.outputs.python-path }} -m pip install gcovr | |
${{ steps.python-path.outputs.python-path }} -m gcovr . -r ../src \ | |
--exclude-noncode-lines \ | |
--exclude-throw-branches \ | |
--exclude-unreachable-branches \ | |
--verbose \ | |
--xml-pretty \ | |
-o coverage.xml | |
- name: Debug coverage file | |
if: >- | |
always() && | |
steps.test_report.outcome == 'success' | |
run: | | |
cat build/coverage.xml | |
# todo: upload coverage in separate job similar to LizardByte/libdisplaydevice | |
- name: Upload coverage | |
# any except canceled or skipped | |
if: >- | |
always() && | |
steps.test_report.outcome == 'success' && | |
startsWith(github.repository, 'LizardByte/') | |
uses: codecov/codecov-action@v5 | |
with: | |
disable_search: true | |
fail_ci_if_error: true | |
files: ./build/coverage.xml | |
flags: "${{ runner.os }}" | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true | |
- name: Create/Update GitHub Release | |
# only publish release on ubuntu-latest, is there any difference between the different builds? | |
if: ${{ needs.setup_release.outputs.publish_release == 'true' && matrix.os == 'ubuntu-latest' }} | |
uses: LizardByte/[email protected] | |
with: | |
allowUpdates: true | |
body: ${{ needs.setup_release.outputs.release_body }} | |
generateReleaseNotes: ${{ needs.setup_release.outputs.release_generate_release_notes }} | |
name: ${{ needs.setup_release.outputs.release_tag }} | |
prerelease: true | |
tag: ${{ needs.setup_release.outputs.release_tag }} | |
token: ${{ secrets.GH_BOT_TOKEN }} |