From 4ec5eb1806f3cdcf233d561509cdd71c0a2ee3a6 Mon Sep 17 00:00:00 2001 From: reggie Date: Wed, 2 Oct 2024 03:08:57 -0500 Subject: [PATCH] We should be fine to remove .github-orig/ --- .github-orig/ISSUE_TEMPLATE/bug_report.yml | 86 ------- .github-orig/ISSUE_TEMPLATE/config.yml | 5 - .../ISSUE_TEMPLATE/feature_request.yml | 31 --- .../missing_cpu_instruction.yml | 26 --- .../ISSUE_TEMPLATE/missing_service_call.yml | 25 -- .../missing_shader_instruction.yml | 19 -- .github-orig/csc.json | 18 -- .github-orig/dependabot.yml | 40 ---- .github-orig/labeler.yml | 35 --- .github-orig/reviewers.yml | 25 -- .github-orig/workflows/build.yml | 163 ------------- .github-orig/workflows/checks.yml | 74 ------ .github-orig/workflows/flatpak.yml | 212 ----------------- .github-orig/workflows/mako.yml | 41 ---- .github-orig/workflows/nightly_pr_comment.yml | 71 ------ .github-orig/workflows/pr_triage.yml | 28 --- .github-orig/workflows/release.yml | 218 ------------------ 17 files changed, 1117 deletions(-) delete mode 100644 .github-orig/ISSUE_TEMPLATE/bug_report.yml delete mode 100644 .github-orig/ISSUE_TEMPLATE/config.yml delete mode 100644 .github-orig/ISSUE_TEMPLATE/feature_request.yml delete mode 100644 .github-orig/ISSUE_TEMPLATE/missing_cpu_instruction.yml delete mode 100644 .github-orig/ISSUE_TEMPLATE/missing_service_call.yml delete mode 100644 .github-orig/ISSUE_TEMPLATE/missing_shader_instruction.yml delete mode 100644 .github-orig/csc.json delete mode 100644 .github-orig/dependabot.yml delete mode 100644 .github-orig/labeler.yml delete mode 100644 .github-orig/reviewers.yml delete mode 100644 .github-orig/workflows/build.yml delete mode 100644 .github-orig/workflows/checks.yml delete mode 100644 .github-orig/workflows/flatpak.yml delete mode 100644 .github-orig/workflows/mako.yml delete mode 100644 .github-orig/workflows/nightly_pr_comment.yml delete mode 100644 .github-orig/workflows/pr_triage.yml delete mode 100644 .github-orig/workflows/release.yml diff --git a/.github-orig/ISSUE_TEMPLATE/bug_report.yml b/.github-orig/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index ffb5d5f8..00000000 --- a/.github-orig/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Bug Report -description: File a bug report -title: "[Bug]" -labels: bug -body: - - type: textarea - id: issue - attributes: - label: Description of the issue - description: What's the issue you encountered? - validations: - required: true - - type: textarea - id: repro - attributes: - label: Reproduction steps - description: How can the issue be reproduced? - placeholder: Describe each step as precisely as possible - validations: - required: true - - type: textarea - id: log - attributes: - label: Log file - description: A log file will help our developers to better diagnose and fix the issue. - placeholder: Logs files can be found under "Logs" folder in Ryujinx program folder. They can also be accessed by opening Ryujinx, then going to File > Open Logs Folder. You can drag and drop the log on to the text area (do not copy paste). - validations: - required: true - - type: input - id: os - attributes: - label: OS - placeholder: "e.g. Windows 10" - validations: - required: true - - type: input - id: ryujinx-version - attributes: - label: Ryujinx version - placeholder: "e.g. 1.0.470" - validations: - required: true - - type: input - id: game-version - attributes: - label: Game version - placeholder: "e.g. 1.1.1" - validations: - required: false - - type: input - id: cpu - attributes: - label: CPU - placeholder: "e.g. i7-6700" - validations: - required: false - - type: input - id: gpu - attributes: - label: GPU - placeholder: "e.g. NVIDIA RTX 2070" - validations: - required: false - - type: input - id: ram - attributes: - label: RAM - placeholder: "e.g. 16GB" - validations: - required: false - - type: textarea - id: mods - attributes: - label: List of applied mods - placeholder: You can list applied mods here. - validations: - required: false - - type: textarea - id: additional-context - attributes: - label: Additional context? - description: | - - Additional info about your environment: - - Any other information relevant to your issue. - validations: - required: false diff --git a/.github-orig/ISSUE_TEMPLATE/config.yml b/.github-orig/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index abad80a3..00000000 --- a/.github-orig/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ryujinx Discord - url: https://discord.gg/N2FmfVc - about: This is for development related issues. For support and technical issues, please come to our Discord server. diff --git a/.github-orig/ISSUE_TEMPLATE/feature_request.yml b/.github-orig/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 399aa039..00000000 --- a/.github-orig/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Feature Request -description: Suggest a new feature for Ryujinx. -title: "[Feature Request]" -labels: enhancement -body: - - type: textarea - id: overview - attributes: - label: Overview - description: Include the basic, high-level concepts for this feature here. - validations: - required: true - - type: textarea - id: details - attributes: - label: Smaller details - description: These may include specific methods of implementation etc. - validations: - required: true - - type: textarea - id: request - attributes: - label: Nature of request - validations: - required: true - - type: textarea - id: feature - attributes: - label: Why would this feature be useful? - validations: - required: true diff --git a/.github-orig/ISSUE_TEMPLATE/missing_cpu_instruction.yml b/.github-orig/ISSUE_TEMPLATE/missing_cpu_instruction.yml deleted file mode 100644 index d815ddfd..00000000 --- a/.github-orig/ISSUE_TEMPLATE/missing_cpu_instruction.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Missing CPU Instruction -description: CPU Instruction is missing in Ryujinx. -title: "[CPU]" -labels: [cpu, not-implemented] -body: - - type: textarea - id: instruction - attributes: - label: CPU instruction - description: What CPU instruction is missing? - validations: - required: true - - type: textarea - id: name - attributes: - label: Instruction name - description: Include the name from [armconverter.com](https://armconverter.com/?disasm) or [shell-storm.org](http://shell-storm.org/online/Online-Assembler-and-Disassembler/?arch=arm64&endianness=big&dis_with_raw=True&dis_with_ins=True) in the above code block - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this instruction. - validations: - required: true diff --git a/.github-orig/ISSUE_TEMPLATE/missing_service_call.yml b/.github-orig/ISSUE_TEMPLATE/missing_service_call.yml deleted file mode 100644 index 80aae533..00000000 --- a/.github-orig/ISSUE_TEMPLATE/missing_service_call.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Missing Service Call -description: Service call is missing in Ryujinx. -labels: not-implemented -body: - - type: textarea - id: instruction - attributes: - label: Service call - description: What service call is missing? - validations: - required: true - - type: textarea - id: name - attributes: - label: Service description - description: Include the description/explanation from [Switchbrew](https://switchbrew.org/w/index.php?title=Services_API) and/or [SwIPC](https://reswitched.github.io/SwIPC/) in the above code block - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this service. - validations: - required: true \ No newline at end of file diff --git a/.github-orig/ISSUE_TEMPLATE/missing_shader_instruction.yml b/.github-orig/ISSUE_TEMPLATE/missing_shader_instruction.yml deleted file mode 100644 index df37859a..00000000 --- a/.github-orig/ISSUE_TEMPLATE/missing_shader_instruction.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Missing Shader Instruction -description: Shader Instruction is missing in Ryujinx. -title: "[GPU]" -labels: [gpu, not-implemented] -body: - - type: textarea - id: instruction - attributes: - label: Shader instruction - description: What shader instruction is missing? - validations: - required: true - - type: textarea - id: required - attributes: - label: Required by - description: Add links to the [compatibility list page(s)](https://github.com/Ryujinx/Ryujinx-Games-List/issues) of the game(s) that require this instruction. - validations: - required: true diff --git a/.github-orig/csc.json b/.github-orig/csc.json deleted file mode 100644 index 2b960edd..00000000 --- a/.github-orig/csc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "problemMatcher": [ - { - "owner": "csc", - "pattern": [ - { - "regexp": "^((?:\\\\|/)(?:[^\\\\/:]+(?:\\\\|/))+[^\\\\/]+)\\((\\d+),(\\d+)\\):\\s+([a-zA-Z]+)\\s+([^:]+):\\s+([^[]+)\\s+\\[", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "code": 5, - "message": 6 - } - ] - } - ] -} diff --git a/.github-orig/dependabot.yml b/.github-orig/dependabot.yml deleted file mode 100644 index 20bdc19d..00000000 --- a/.github-orig/dependabot.yml +++ /dev/null @@ -1,40 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: weekly - labels: - - "infra" - reviewers: - - TSRBerry - commit-message: - prefix: "ci" - - - package-ecosystem: nuget - directory: / - open-pull-requests-limit: 10 - schedule: - interval: daily - labels: - - "infra" - reviewers: - - TSRBerry - commit-message: - prefix: nuget - groups: - Avalonia: - patterns: - - "*Avalonia*" - Silk.NET: - patterns: - - "Silk.NET*" - OpenTK: - patterns: - - "OpenTK*" - SixLabors: - patterns: - - "SixLabors*" - NUnit: - patterns: - - "NUnit*" diff --git a/.github-orig/labeler.yml b/.github-orig/labeler.yml deleted file mode 100644 index cd7650a9..00000000 --- a/.github-orig/labeler.yml +++ /dev/null @@ -1,35 +0,0 @@ -audio: -- changed-files: - - any-glob-to-any-file: 'src/Ryujinx.Audio*/**' - -cpu: -- changed-files: - - any-glob-to-any-file: ['src/ARMeilleure/**', 'src/Ryujinx.Cpu/**', 'src/Ryujinx.Memory/**'] - -gpu: -- changed-files: - - any-glob-to-any-file: ['src/Ryujinx.Graphics.*/**', 'src/Spv.Generator/**', 'src/Ryujinx.ShaderTools/**'] - -'graphics-backend:opengl': -- changed-files: - - any-glob-to-any-file: 'src/Ryujinx.Graphics.OpenGL/**' - -'graphics-backend:vulkan': -- changed-files: - - any-glob-to-any-file: ['src/Ryujinx.Graphics.Vulkan/**', 'src/Spv.Generator/**'] - -gui: -- changed-files: - - any-glob-to-any-file: ['src/Ryujinx/**', 'src/Ryujinx.UI.Common/**', 'src/Ryujinx.UI.LocaleGenerator/**', 'src/Ryujinx.Gtk3/**'] - -horizon: -- changed-files: - - any-glob-to-any-file: ['src/Ryujinx.HLE/**', 'src/Ryujinx.Horizon/**'] - -kernel: -- changed-files: - - any-glob-to-any-file: 'src/Ryujinx.HLE/HOS/Kernel/**' - -infra: -- changed-files: - - any-glob-to-any-file: ['.github/**', 'distribution/**', 'Directory.Packages.props'] diff --git a/.github-orig/reviewers.yml b/.github-orig/reviewers.yml deleted file mode 100644 index 46c0d5c1..00000000 --- a/.github-orig/reviewers.yml +++ /dev/null @@ -1,25 +0,0 @@ - -cpu: - - gdkchan - - riperiperi - - LDj3SNuD - -gpu: - - gdkchan - - riperiperi - -gui: - - Ack77 - - emmauss - - TSRBerry - -horizon: - - gdkchan - - Ack77 - - TSRBerry - -infra: - - TSRBerry - -default: - - '@developers' diff --git a/.github-orig/workflows/build.yml b/.github-orig/workflows/build.yml deleted file mode 100644 index 221c7732..00000000 --- a/.github-orig/workflows/build.yml +++ /dev/null @@ -1,163 +0,0 @@ -name: Build job - -on: - workflow_call: - -env: - POWERSHELL_TELEMETRY_OPTOUT: 1 - DOTNET_CLI_TELEMETRY_OPTOUT: 1 - RYUJINX_BASE_VERSION: "1.1.0" - -jobs: - build: - name: ${{ matrix.platform.name }} (${{ matrix.configuration }}) - runs-on: ${{ matrix.platform.os }} - timeout-minutes: 45 - strategy: - matrix: - configuration: [Debug, Release] - platform: - - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } - - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } - - { name: osx-x64, os: macos-13, zip_os_name: osx_x64 } - - fail-fast: false - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: global.json - - - name: Overwrite csc problem matcher - run: echo "::add-matcher::.github/csc.json" - - - name: Get git short hash - id: git_short_hash - run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - shell: bash - - - name: Change config filename - run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Change config filename for macOS - run: sed -r -i '' 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' && matrix.platform.os == 'macos-13' - - - name: Build - run: dotnet build -c "${{ matrix.configuration }}" -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER - - - name: Test - uses: TSRBerry/unstable-commands@v1 - with: - commands: dotnet test --no-build -c "${{ matrix.configuration }}" - timeout-minutes: 10 - retry-codes: 139 - if: matrix.platform.name != 'linux-arm64' - - - name: Publish Ryujinx - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained true - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Publish Ryujinx.Headless.SDL2 - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx.Headless.SDL2 --self-contained true - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Publish Ryujinx.Gtk3 - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish_gtk -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx.Gtk3 --self-contained true - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Set executable bit - run: | - chmod +x ./publish/Ryujinx ./publish/Ryujinx.sh - chmod +x ./publish_sdl2_headless/Ryujinx.Headless.SDL2 ./publish_sdl2_headless/Ryujinx.sh - chmod +x ./publish_gtk/Ryujinx.Gtk3 ./publish_gtk/Ryujinx.sh - if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' - - - name: Upload Ryujinx artifact - uses: actions/upload-artifact@v4 - with: - name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }} - path: publish - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Upload Ryujinx.Headless.SDL2 artifact - uses: actions/upload-artifact@v4 - with: - name: sdl2-ryujinx-headless-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }} - path: publish_sdl2_headless - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - - name: Upload Ryujinx.Gtk3 artifact - uses: actions/upload-artifact@v4 - with: - name: gtk-ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }} - path: publish_gtk - if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - - build_macos: - name: macOS Universal (${{ matrix.configuration }}) - runs-on: ubuntu-latest - timeout-minutes: 45 - strategy: - matrix: - configuration: [ Debug, Release ] - - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: global.json - - - name: Setup LLVM 14 - run: | - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 14 - - - name: Install rcodesign - run: | - mkdir -p $HOME/.bin - gh release download -R indygreg/apple-platform-rs -O apple-codesign.tar.gz -p 'apple-codesign-*-x86_64-unknown-linux-musl.tar.gz' - tar -xzvf apple-codesign.tar.gz --wildcards '*/rcodesign' --strip-components=1 - rm apple-codesign.tar.gz - mv rcodesign $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Get git short hash - id: git_short_hash - run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - - - name: Change config filename - run: sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/PRConfig\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - if: github.event_name == 'pull_request' - - - name: Publish macOS Ryujinx - run: | - ./distribution/macos/create_macos_build_ava.sh . publish_tmp publish ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER" - - - name: Publish macOS Ryujinx.Headless.SDL2 - run: | - ./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER" - - - name: Upload Ryujinx artifact - uses: actions/upload-artifact@v4 - with: - name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal - path: "publish/*.tar.gz" - if: github.event_name == 'pull_request' - - - name: Upload Ryujinx.Headless.SDL2 artifact - uses: actions/upload-artifact@v4 - with: - name: sdl2-ryujinx-headless-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal - path: "publish_headless/*.tar.gz" - if: github.event_name == 'pull_request' diff --git a/.github-orig/workflows/checks.yml b/.github-orig/workflows/checks.yml deleted file mode 100644 index 2bef2d8e..00000000 --- a/.github-orig/workflows/checks.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Perform checks - -on: - pull_request: - branches: [ master ] - paths: - - '**' - - '!.github/**' - - '!*.yml' - - '!*.config' - - '!*.md' - - '.github/workflows/*.yml' - -permissions: - pull-requests: write - checks: write - -concurrency: - group: pr-checks-${{ github.event.number }} - cancel-in-progress: true - -jobs: - format: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: global.json - - - name: Overwrite csc problem matcher - run: echo "::add-matcher::.github/csc.json" - - - run: dotnet restore - - - name: Print dotnet format version - run: dotnet format --version - - - name: Run dotnet format whitespace - run: | - dotnet format whitespace --verify-no-changes --report ./whitespace-report.json -v d - - # For some unknown reason this step sometimes fails with exit code 139 (segfault?), - # so in that case we'll try again (3 tries max). - - name: Run dotnet format style - uses: TSRBerry/unstable-commands@v1 - with: - commands: dotnet format style --severity info --verify-no-changes --report ./style-report.json -v d - timeout-minutes: 5 - retry-codes: 139 - - # For some unknown reason this step sometimes fails with exit code 139 (segfault?), - # so in that case we'll try again (3 tries max). - - name: Run dotnet format analyzers - uses: TSRBerry/unstable-commands@v1 - with: - commands: dotnet format analyzers --severity info --verify-no-changes --report ./analyzers-report.json -v d - timeout-minutes: 5 - retry-codes: 139 - - - name: Upload report - if: failure() - uses: actions/upload-artifact@v4 - with: - name: dotnet-format - path: ./*-report.json - - pr_build: - uses: ./.github/workflows/build.yml - needs: format - secrets: inherit diff --git a/.github-orig/workflows/flatpak.yml b/.github-orig/workflows/flatpak.yml deleted file mode 100644 index bfed328c..00000000 --- a/.github-orig/workflows/flatpak.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: Flatpak release job - -on: - workflow_call: - inputs: - ryujinx_version: - required: true - type: string - - -concurrency: flatpak-release - -jobs: - release: - timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }} - runs-on: ubuntu-latest - - env: - NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages - GIT_COMMITTER_NAME: "RyujinxBot" - GIT_COMMITTER_EMAIL: "61127645+RyujinxBot@users.noreply.github.com" - RYUJINX_PROJECT_FILE: "src/Ryujinx/Ryujinx.csproj" - NUGET_SOURCES_DESTDIR: "nuget-sources" - RYUJINX_VERSION: "${{ inputs.ryujinx_version }}" - - steps: - - uses: actions/checkout@v4 - with: - path: Ryujinx - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: Ryujinx/global.json - - - name: Get version info - id: version_info - working-directory: Ryujinx - run: | - echo "git_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - - - uses: actions/checkout@v4 - with: - repository: flathub/org.ryujinx.Ryujinx - token: ${{ secrets.RYUJINX_BOT_PAT }} - submodules: recursive - path: flathub - - - name: Install dependencies - run: python -m pip install PyYAML lxml - - - name: Restore Nuget packages - # With .NET 8.0.100, Microsoft.NET.ILLink.Tasks isn't restored by default and only seems to appears when publishing. - # So we just publish to grab the dependencies - run: | - dotnet publish -c Release -r linux-x64 Ryujinx/${{ env.RYUJINX_PROJECT_FILE }} --self-contained - dotnet publish -c Release -r linux-arm64 Ryujinx/${{ env.RYUJINX_PROJECT_FILE }} --self-contained - - - name: Generate nuget_sources.json - shell: python - run: | - import hashlib - from pathlib import Path - import base64 - import binascii - import json - import os - import urllib.request - - sources = [] - - - def create_source_from_external(name, version): - full_dir_path = Path(os.environ["NUGET_PACKAGES"]).joinpath(name).joinpath(version) - os.makedirs(full_dir_path, exist_ok=True) - - filename = "{}.{}.nupkg".format(name, version) - url = "https://api.nuget.org/v3-flatcontainer/{}/{}/{}".format( - name, version, filename - ) - - print(f"Processing {url}...") - response = urllib.request.urlopen(url) - sha512 = hashlib.sha512(response.read()).hexdigest() - - return { - "type": "file", - "url": url, - "sha512": sha512, - "dest": os.environ["NUGET_SOURCES_DESTDIR"], - "dest-filename": filename, - } - - - has_added_x64_apphost = False - - for path in Path(os.environ["NUGET_PACKAGES"]).glob("**/*.nupkg.sha512"): - name = path.parent.parent.name - version = path.parent.name - filename = "{}.{}.nupkg".format(name, version) - url = "https://api.nuget.org/v3-flatcontainer/{}/{}/{}".format( - name, version, filename - ) - - with path.open() as fp: - sha512 = binascii.hexlify(base64.b64decode(fp.read())).decode("ascii") - - sources.append( - { - "type": "file", - "url": url, - "sha512": sha512, - "dest": os.environ["NUGET_SOURCES_DESTDIR"], - "dest-filename": filename, - } - ) - - # .NET will not add current installed application host to the list, force inject it here. - if not has_added_x64_apphost and name.startswith('microsoft.netcore.app.host'): - sources.append(create_source_from_external("microsoft.netcore.app.host.linux-x64", version)) - has_added_x64_apphost = True - - with open("flathub/nuget_sources.json", "w") as fp: - json.dump(sources, fp, indent=4) - - - name: Update flatpak metadata - id: metadata - env: - RYUJINX_GIT_HASH: ${{ steps.version_info.outputs.git_hash }} - shell: python - run: | - import hashlib - import hmac - import json - import os - import yaml - from datetime import datetime - from lxml import etree - - - # Ensure we don't destroy multiline strings - def str_presenter(dumper, data): - if len(data.splitlines()) > 1: - return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|") - return dumper.represent_scalar("tag:yaml.org,2002:str", data) - - - yaml.representer.SafeRepresenter.add_representer(str, str_presenter) - - yaml_file = "flathub/org.ryujinx.Ryujinx.yml" - xml_file = "flathub/org.ryujinx.Ryujinx.appdata.xml" - - with open(yaml_file, "r") as f: - data = yaml.safe_load(f) - - for source in data["modules"][0]["sources"]: - if type(source) is str: - continue - if ( - source["type"] == "git" - and source["url"] == "https://github.com/Ryujinx/Ryujinx.git" - ): - source["commit"] = os.environ['RYUJINX_GIT_HASH'] - - is_same_version = data["modules"][0]["build-options"]["env"]["RYUJINX_VERSION"] == os.environ['RYUJINX_VERSION'] - - with open(os.environ['GITHUB_OUTPUT'], "a") as gh_out: - if is_same_version: - gh_out.write(f"commit_message=Retry update to {os.environ['RYUJINX_VERSION']}") - else: - gh_out.write(f"commit_message=Update to {os.environ['RYUJINX_VERSION']}") - - if not is_same_version: - data["modules"][0]["build-options"]["env"]["RYUJINX_VERSION"] = os.environ['RYUJINX_VERSION'] - - with open(yaml_file, "w") as f: - yaml.safe_dump(data, f, sort_keys=False) - - parser = etree.XMLParser(remove_blank_text=True) - tree = etree.parse(xml_file, parser) - - root = tree.getroot() - - releases = root.find("releases") - - element = etree.Element("release") - element.set("version", os.environ['RYUJINX_VERSION']) - element.set("date", datetime.now().date().isoformat()) - releases.insert(0, element) - - # Ensure 4 spaces - etree.indent(root, space=" ") - - with open(xml_file, "wb") as f: - f.write( - etree.tostring( - tree, - pretty_print=True, - encoding="UTF-8", - doctype='', - ) - ) - - - name: Push flatpak update - working-directory: flathub - env: - COMMIT_MESSAGE: ${{ steps.metadata.outputs.commit_message }} - run: | - git config user.name "${{ env.GIT_COMMITTER_NAME }}" - git config user.email "${{ env.GIT_COMMITTER_EMAIL }}" - git add . - git commit -m "$COMMIT_MESSAGE" - git push origin master \ No newline at end of file diff --git a/.github-orig/workflows/mako.yml b/.github-orig/workflows/mako.yml deleted file mode 100644 index 19165fb0..00000000 --- a/.github-orig/workflows/mako.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Mako -on: - discussion: - types: [created, edited, answered, unanswered, category_changed] - discussion_comment: - types: [created, edited] - gollum: - issue_comment: - types: [created, edited] - issues: - types: [opened, edited, reopened, pinned, milestoned, demilestoned, assigned, unassigned, labeled, unlabeled] - pull_request_target: - types: [opened, edited, reopened, synchronize, ready_for_review, assigned, unassigned] - -jobs: - tasks: - name: Run Ryujinx tasks - permissions: - actions: read - contents: read - discussions: write - issues: write - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - if: github.event_name == 'pull_request_target' - with: - # Ensure we pin the source origin as pull_request_target run under forks. - fetch-depth: 0 - repository: Ryujinx/Ryujinx - ref: master - - - name: Run Mako command - uses: Ryujinx/Ryujinx-Mako@master - with: - command: exec-ryujinx-tasks - args: --event-name "${{ github.event_name }}" --event-path "${{ github.event_path }}" -w "${{ github.workspace }}" "${{ github.repository }}" "${{ github.run_id }}" - app_id: ${{ secrets.MAKO_APP_ID }} - private_key: ${{ secrets.MAKO_PRIVATE_KEY }} - installation_id: ${{ secrets.MAKO_INSTALLATION_ID }} diff --git a/.github-orig/workflows/nightly_pr_comment.yml b/.github-orig/workflows/nightly_pr_comment.yml deleted file mode 100644 index 38850df0..00000000 --- a/.github-orig/workflows/nightly_pr_comment.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Comment PR artifacts links - -on: - workflow_run: - workflows: ['Perform checks'] - types: [completed] - -jobs: - pr_comment: - if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' - runs-on: ubuntu-latest - timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }} - steps: - - uses: actions/github-script@v6 - with: - script: | - const {owner, repo} = context.repo; - const run_id = ${{github.event.workflow_run.id}}; - const pull_head_sha = '${{github.event.workflow_run.head_sha}}'; - - const issue_number = await (async () => { - const pulls = await github.rest.pulls.list({owner, repo}); - for await (const {data} of github.paginate.iterator(pulls)) { - for (const pull of data) { - if (pull.head.sha === pull_head_sha) { - return pull.number; - } - } - } - })(); - if (issue_number) { - core.info(`Using pull request ${issue_number}`); - } else { - return core.error(`No matching pull request found`); - } - - const {data: {artifacts}} = await github.rest.actions.listWorkflowRunArtifacts({owner, repo, run_id}); - if (!artifacts.length) { - return core.error(`No artifacts found`); - } - let body = `Download the artifacts for this pull request:\n`; - let hidden_gtk_artifacts = `\n\n
Old GUI (GTK3)\n`; - let hidden_headless_artifacts = `\n\n
GUI-less (SDL2)\n`; - let hidden_debug_artifacts = `\n\n
Only for Developers\n`; - for (const art of artifacts) { - if(art.name.includes('Debug')) { - hidden_debug_artifacts += `\n* [${art.name}](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; - } else if(art.name.includes('gtk-ryujinx')) { - hidden_gtk_artifacts += `\n* [${art.name}](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; - } else if(art.name.includes('sdl2-ryujinx-headless')) { - hidden_headless_artifacts += `\n* [${art.name}](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; - } else { - body += `\n* [${art.name}](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; - } - } - hidden_gtk_artifacts += `\n
`; - hidden_headless_artifacts += `\n
`; - hidden_debug_artifacts += `\n
`; - body += hidden_gtk_artifacts; - body += hidden_headless_artifacts; - body += hidden_debug_artifacts; - - const {data: comments} = await github.rest.issues.listComments({repo, owner, issue_number}); - const existing_comment = comments.find((c) => c.user.login === 'github-actions[bot]'); - if (existing_comment) { - core.info(`Updating comment ${existing_comment.id}`); - await github.rest.issues.updateComment({repo, owner, comment_id: existing_comment.id, body}); - } else { - core.info(`Creating a comment`); - await github.rest.issues.createComment({repo, owner, issue_number, body}); - } \ No newline at end of file diff --git a/.github-orig/workflows/pr_triage.yml b/.github-orig/workflows/pr_triage.yml deleted file mode 100644 index d8d66b70..00000000 --- a/.github-orig/workflows/pr_triage.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: "Pull Request Triage" -on: - pull_request_target: - types: [opened, ready_for_review] - -jobs: - triage: - permissions: - contents: read - pull-requests: write - - runs-on: ubuntu-latest - - steps: - # Grab sources to get latest labeler.yml - - name: Fetch sources - uses: actions/checkout@v4 - with: - # Ensure we pin the source origin as pull_request_target run under forks. - fetch-depth: 0 - repository: Ryujinx/Ryujinx - ref: master - - - name: Update labels based on changes - uses: actions/labeler@v5 - with: - sync-labels: true - dot: true diff --git a/.github-orig/workflows/release.yml b/.github-orig/workflows/release.yml deleted file mode 100644 index f2bebc77..00000000 --- a/.github-orig/workflows/release.yml +++ /dev/null @@ -1,218 +0,0 @@ -name: Release job - -on: - workflow_dispatch: - inputs: {} - push: - branches: [ master ] - paths-ignore: - - '.github/**' - - '*.yml' - - '*.json' - - '*.config' - - '*.md' - -concurrency: release - -env: - POWERSHELL_TELEMETRY_OPTOUT: 1 - DOTNET_CLI_TELEMETRY_OPTOUT: 1 - RYUJINX_BASE_VERSION: "1.1" - RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "master" - RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "Ryujinx" - RYUJINX_TARGET_RELEASE_CHANNEL_REPO: "release-channel-master" - -jobs: - tag: - name: Create tag - runs-on: ubuntu-20.04 - steps: - - name: Get version info - id: version_info - run: | - echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT - shell: bash - - - name: Create tag - uses: actions/github-script@v6 - with: - script: | - github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: 'refs/tags/${{ steps.version_info.outputs.build_version }}', - sha: context.sha - }) - - - name: Create release - uses: ncipollo/release-action@v1 - with: - name: ${{ steps.version_info.outputs.build_version }} - tag: ${{ steps.version_info.outputs.build_version }} - body: "For more information about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)." - omitBodyDuringUpdate: true - owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} - repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} - token: ${{ secrets.RELEASE_TOKEN }} - - release: - name: Release for ${{ matrix.platform.name }} - runs-on: ${{ matrix.platform.os }} - timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }} - strategy: - matrix: - platform: - - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } - - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: global.json - - - name: Overwrite csc problem matcher - run: echo "::add-matcher::.github/csc.json" - - - name: Get version info - id: version_info - run: | - echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT - echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - shell: bash - - - name: Configure for release - run: | - sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - - - name: Create output dir - run: "mkdir release_output" - - - name: Publish - run: | - dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained true - dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained true - - - name: Packing Windows builds - if: matrix.platform.os == 'windows-latest' - run: | - pushd publish_ava - cp publish/Ryujinx.exe publish/Ryujinx.Ava.exe - 7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish - 7z a ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish - popd - - pushd publish_sdl2_headless - 7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish - popd - shell: bash - - - name: Packing Linux builds - if: matrix.platform.os == 'ubuntu-latest' - run: | - pushd publish_ava - cp publish/Ryujinx publish/Ryujinx.Ava - chmod +x publish/Ryujinx.sh publish/Ryujinx.Ava publish/Ryujinx - tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish - tar -czvf ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish - popd - - pushd publish_sdl2_headless - chmod +x publish/Ryujinx.sh publish/Ryujinx.Headless.SDL2 - tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish - popd - shell: bash - - - name: Pushing new release - uses: ncipollo/release-action@v1 - with: - name: ${{ steps.version_info.outputs.build_version }} - artifacts: "release_output/*.tar.gz,release_output/*.zip" - tag: ${{ steps.version_info.outputs.build_version }} - body: "For more information about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)." - omitBodyDuringUpdate: true - allowUpdates: true - replacesArtifacts: true - owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} - repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} - token: ${{ secrets.RELEASE_TOKEN }} - - macos_release: - name: Release MacOS universal - runs-on: ubuntu-latest - timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }} - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-dotnet@v4 - with: - global-json-file: global.json - - - name: Setup LLVM 15 - run: | - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 15 - - - name: Install rcodesign - run: | - mkdir -p $HOME/.bin - gh release download -R indygreg/apple-platform-rs -O apple-codesign.tar.gz -p 'apple-codesign-*-x86_64-unknown-linux-musl.tar.gz' - tar -xzvf apple-codesign.tar.gz --wildcards '*/rcodesign' --strip-components=1 - rm apple-codesign.tar.gz - mv rcodesign $HOME/.bin/ - echo "$HOME/.bin" >> $GITHUB_PATH - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Get version info - id: version_info - run: | - echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT - echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT - - - name: Configure for release - run: | - sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs - sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs - shell: bash - - - name: Publish macOS Ryujinx - run: | - ./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish_ava ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release - - - name: Publish macOS Ryujinx.Headless.SDL2 - run: | - ./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release - - - name: Pushing new release - uses: ncipollo/release-action@v1 - with: - name: ${{ steps.version_info.outputs.build_version }} - artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz" - tag: ${{ steps.version_info.outputs.build_version }} - body: "For more information about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)." - omitBodyDuringUpdate: true - allowUpdates: true - replacesArtifacts: true - owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} - repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} - token: ${{ secrets.RELEASE_TOKEN }} - - flatpak_release: - uses: ./.github/workflows/flatpak.yml - needs: release - with: - ryujinx_version: "1.1.${{ github.run_number }}" - secrets: inherit