workflows for linux too + rename scripts

This commit is contained in:
otavepto 2024-05-11 15:18:05 +03:00
parent 67dd084448
commit 470003f926
11 changed files with 365 additions and 238 deletions

View File

@ -1,208 +0,0 @@
name: Emu build (Linux)
on:
push:
branches: [
"ci-build-emu-linux*",
"ci-build-all"
]
tags:
- release*
# pull_request:
# branches: [ "dev" ]
# paths-ignore:
# - '**/*.md'
# - 'dev.notes/**'
# - 'post_build/**'
# - 'z_original_repo_files/**'
# - 'sdk/*.txt'
# - 'LICENSE'
# # tools
# - 'tools/generate_emu_config/**'
# - 'tools/migrate_gse/**'
# - 'tools/steamclient_loader/linux/**' # these are just shell scripts, not compiled
workflow_dispatch:
# allows manual trigger
permissions:
contents: write
env:
DEPS_CACHE_KEY: emu-deps-linux
DEPS_CACHE_DIR: build/deps/linux
PACKAGE_BASE_DIR: "build/package/linux"
THIRD_PARTY_BASE_DIR: 'third-party'
jobs:
# this helps in manual runs, if build fails, then deps are saved
dependencies:
runs-on: ubuntu-22.04
# cache but not for tags or PRs
# !tag && !pull_request
# also you could use this: github.event_name != 'pull_request'
if: |
!startsWith(github.ref, 'refs/tags/') &&
!startsWith(github.ref, 'refs/pull/')
steps:
# we need branch because it has build scripts
- name: Checkout branch
uses: actions/checkout@v4
### fix folder permissions! not sure why this fails
# nested subdirs "build/linux/release" cause permission problems
- name: Give all permissions for repo folder
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod -R 777 "${{ github.workspace }}"
- name: Lookup cache for deps
id: emu-deps-cache-step
uses: actions/cache@v4
with:
key: ${{ env.DEPS_CACHE_KEY }}
path: ${{ env.DEPS_CACHE_DIR }}
lookup-only: true # don't restore cache if found
- name: Clone third-party deps (deps/linux)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/linux'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/linux"
- name: Clone third-party deps (deps/common)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/common'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/common"
- name: Build deps
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
shell: bash
run: sudo chmod 777 build_linux_deps.sh && sudo ./build_linux_deps.sh -verbose
build:
runs-on: ubuntu-22.04
needs: [ dependencies ]
if: ${{ !cancelled() }}
steps:
- name: Checkout branch
uses: actions/checkout@v4
### deps
- name: Lookup cache for deps
id: emu-deps-cache-step
# !tag && !pull_request
# also you could use this: github.event_name != 'pull_request'
if: |
!startsWith(github.ref, 'refs/tags/') &&
!startsWith(github.ref, 'refs/pull/')
uses: actions/cache@v4
with:
key: ${{ env.DEPS_CACHE_KEY }}
path: ${{ env.DEPS_CACHE_DIR }}
# attempt to download again because in tags/PRs no cache is created
- name: Clone third-party deps (deps/linux)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/linux'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/linux"
- name: Clone third-party deps (deps/common)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/common'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/common"
### fix folder permissions! not sure why this fails
# nested subdirs "build/linux/release" cause permission problems
- name: Give all permissions for repo folder
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod -R 777 "${{ github.workspace }}"
- name: Build deps
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
shell: bash
run: sudo chmod 777 build_linux_deps.sh && sudo ./build_linux_deps.sh -verbose
## mandatory Linux packages, installed via sudo apt install ...
- name: Install required packages
shell: bash
run: sudo chmod 777 build_linux_deps.sh && sudo ./build_linux_deps.sh -verbose -packages_only
## extra helpers/tools, these are not built inside the deps build dir
- name: Clone third-party build helpers (build/linux)
uses: actions/checkout@v4
with:
ref: 'third-party/build/linux'
path: "${{env.THIRD_PARTY_BASE_DIR}}/build/linux"
### fix folder permissions! not sure why this fails
# nested subdirs "build/linux/release" cause permission problems
- name: Give all permissions for repo folder
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod -R 777 "${{ github.workspace }}"
### build (release mode)
- name: Build release mode
shell: bash
working-directory: ${{ github.workspace }}
run: "sudo chmod 777 build_linux.sh && ./build_linux.sh -verbose release +build_str ${{ github.sha }}"
### package (release mode)
- name: Package build (release)
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod 77 package_linux.sh && sudo ./package_linux.sh release
### upload artifact/package to github Actions (release mode)
- name: Upload build package (release)
uses: actions/upload-artifact@v4
with:
name: "build-linux-release-${{ github.sha }}"
path: "${{ env.PACKAGE_BASE_DIR }}/release/"
if-no-files-found: 'error'
compression-level: 9
retention-days: 1
### build (debug mode)
- name: Build debug mode
shell: bash
working-directory: ${{ github.workspace }}
run: "sudo chmod 777 build_linux.sh && ./build_linux.sh -verbose debug +build_str ${{ github.sha }}"
### package (debug mode)
- name: Package build (debug)
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod 77 package_linux.sh && sudo ./package_linux.sh debug
### upload artifact/package to github Actions (debug mode)
- name: Upload build package (debug)
uses: actions/upload-artifact@v4
with:
name: "build-linux-debug-${{ github.sha }}"
path: "${{ env.PACKAGE_BASE_DIR }}/debug/"
if-no-files-found: 'error'
compression-level: 9
retention-days: 1
### release (debug + release modes) if this is a tag push
- name: Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: "${{ env.PACKAGE_BASE_DIR }}/**/*"

View File

@ -0,0 +1,138 @@
name: Build all emu variants (Linux)
on:
workflow_call:
# needed since it allows this to become a reusable workflow
workflow_dispatch:
# allows manual trigger
permissions:
contents: write
jobs:
deps:
name: Restore or build deps
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-deps-linux.yml
emu-regular-x32-release:
name: Regular x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: regular
x32: true
debug: false
emu-regular-x32-debug:
name: Regular x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: regular
x32: true
debug: true
emu-exp-x32-release:
name: Experimental x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: exp
x32: true
debug: false
emu-exp-x32-debug:
name: Experimental x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: exp
x32: true
debug: true
tools-x32-release:
name: Tools x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: tools
x32: true
debug: false
tools-x32-debug:
name: Tools x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: tools
x32: true
debug: true
emu-regular-x64-release:
name: Regular x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: regular
x32: false
debug: false
emu-regular-x64-debug:
name: Regular x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: regular
x32: false
debug: true
emu-exp-x64-release:
name: Experimental x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: exp
x32: false
debug: false
emu-exp-x64-debug:
name: Experimental x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: exp
x32: false
debug: true
tools-x64-release:
name: Tools x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: tools
x32: false
debug: false
tools-x64-debug:
name: Tools x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-variant-linux.yml
with:
emu-variant: tools
x32: false
debug: true

View File

@ -13,13 +13,13 @@ jobs:
deps:
name: Restore or build deps
if: ${{ !cancelled() }}
uses: ./.github/workflows/deps-win.yml
uses: ./.github/workflows/emu-deps-win.yml
emu-regular-x32-release:
name: Regular x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: regular
x32: true
@ -29,7 +29,7 @@ jobs:
name: Regular x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: regular
x32: true
@ -39,7 +39,7 @@ jobs:
name: Experimental x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: exp
x32: true
@ -49,7 +49,7 @@ jobs:
name: Experimental x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: exp
x32: true
@ -59,7 +59,7 @@ jobs:
name: Client x32 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: client
x32: true
@ -69,7 +69,7 @@ jobs:
name: Client x32 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: client
x32: true
@ -81,7 +81,7 @@ jobs:
name: Regular x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: regular
x32: false
@ -91,7 +91,7 @@ jobs:
name: Regular x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: regular
x32: false
@ -101,7 +101,7 @@ jobs:
name: Experimental x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: exp
x32: false
@ -111,7 +111,7 @@ jobs:
name: Experimental x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: exp
x32: false
@ -121,7 +121,7 @@ jobs:
name: Client x64 (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: client
x32: false
@ -131,7 +131,7 @@ jobs:
name: Client x64 (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: client
x32: false
@ -143,7 +143,7 @@ jobs:
name: Tools (release)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: tools
debug: false
@ -152,7 +152,7 @@ jobs:
name: Tools (debug)
needs: [ deps ]
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-variant-win.yml
uses: ./.github/workflows/emu-build-variant-win.yml
with:
emu-variant: tools
debug: true

View File

@ -0,0 +1,127 @@
name: Build emu variant (Linux)
on:
workflow_call:
inputs:
emu-variant:
description: |
Which variant of the emu to build:
regular: build the regular version of the emu
exp: build the experimental version of the emu
tools: build the tools only
required: true
type: string
x32:
description: |
build architecture
true: x32
false: x64
required: true
type: boolean
debug:
description: |
build mode
true: build in debug mode
false: build in release mode
required: true
type: boolean
permissions:
contents: write
env:
DEPS_CACHE_KEY: emu-deps-linux
DEPS_CACHE_DIR: build/deps/linux
PACKAGE_BASE_DIR: "build/package/linux"
THIRD_PARTY_BASE_DIR: 'third-party'
jobs:
build:
runs-on: ubuntu-22.04
if: ${{ !cancelled() }}
steps:
### setup build vars
- name: Setup build vars
shell: bash
run: |
echo "env file = '$GITHUB_ENV'"
echo "workspace = '${{ github.workspace }}'"
arch=""
if [[ "${{ inputs.x32 }}" = "true" ]]; then
arch="32"
else
arch="64"
fi
echo "build_arch=$arch" >>"$GITHUB_ENV"
build_switches=""
if [[ "${{ inputs.emu-variant }}" = "regular" ]]; then
build_switches="+lib-$arch +client-$arch"
elif [[ "${{ inputs.emu-variant }}" = "exp" ]]; then
build_switches="+exp-lib-$arch +exp-client-$arch"
elif [[ "${{ inputs.emu-variant }}" = "tools" ]]; then
build_switches="+tool-clientldr +tool-itf-$arch +tool-lobby-$arch"
else
echo "[X] invalid emu variant '${{ inputs.emu-variant }}'" >&2
exit 1
fi
echo "build_switches=$build_switches" >>"$GITHUB_ENV"
build_mode=""
if [[ "${{ inputs.debug }}" = "true" ]]; then
build_mode="debug"
else
build_mode="release"
fi
echo "build_mode=$build_mode" >>"$GITHUB_ENV"
- name: Checkout branch
uses: actions/checkout@v4
### deps
- name: Restore deps
id: emu-deps-cache-step
uses: actions/cache@v4
with:
key: ${{ env.DEPS_CACHE_KEY }}
path: ${{ env.DEPS_CACHE_DIR }}
## mandatory Linux packages, installed via sudo apt install ...
- name: Install required packages
shell: bash
run: sudo chmod 777 build_linux_deps.sh && sudo ./build_linux_deps.sh -verbose -packages_only
## extra helpers/tools, these are not built inside the deps build dir
- name: Clone third-party build helpers (build/linux)
uses: actions/checkout@v4
with:
ref: 'third-party/build/linux'
path: "${{env.THIRD_PARTY_BASE_DIR}}/build/linux"
### fix folder permissions! not sure why this fails
# nested subdirs "build/linux/release" cause permission problems
- name: Give all permissions for repo folder
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod -R 777 "${{ github.workspace }}"
### build target(s)
- name: Build target(s)
shell: bash
working-directory: ${{ github.workspace }}
run: "sudo chmod 777 build_linux.sh && ./build_linux.sh -verbose ${{ env.build_mode }} clean +build_str ${{ github.sha }} ${{ env.build_switches }}"
### upload artifact/package to github Actions (for targets)
- name: Upload build package (for targets)
uses: actions/upload-artifact@v4
with:
name: "emu-linux-${{ inputs.emu-variant }}-${{ env.build_arch }}-${{ env.build_mode }}-${{ github.sha }}"
path: "build/linux/"
if-no-files-found: 'error'
compression-level: 9
retention-days: 1

View File

@ -43,6 +43,7 @@ jobs:
build:
runs-on: windows-2022
if: ${{ !cancelled() }}
steps:
### setup build vars
- name: Setup build vars

62
.github/workflows/emu-deps-linux.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: Emu third-party dependencies (Linux)
on:
workflow_call:
# needed since it allows this to become a reusable workflow
workflow_dispatch:
# allows manual trigger
permissions:
contents: write
env:
DEPS_CACHE_KEY: emu-deps-linux
DEPS_CACHE_DIR: build/deps/linux
PACKAGE_BASE_DIR: "build/package/linux"
THIRD_PARTY_BASE_DIR: 'third-party'
jobs:
deps-build:
runs-on: ubuntu-22.04
if: ${{ !cancelled() }}
steps:
- name: Lookup cache for deps
id: emu-deps-cache-step
uses: actions/cache@v4
with:
key: ${{ env.DEPS_CACHE_KEY }}
path: ${{ env.DEPS_CACHE_DIR }}
# we need branch because it has build scripts
- name: Checkout branch
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
- name: Clone third-party deps (deps/linux)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/linux'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/linux"
- name: Clone third-party deps (deps/common)
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
ref: 'third-party/deps/common'
path: "${{env.THIRD_PARTY_BASE_DIR}}/deps/common"
### fix folder permissions! not sure why this fails
# nested subdirs "build/linux/release" cause permission problems
- name: Give all permissions for repo folder
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
shell: bash
working-directory: ${{ github.workspace }}
run: sudo chmod -R 777 "${{ github.workspace }}"
- name: Build deps
if: steps.emu-deps-cache-step.outputs.cache-hit != 'true'
shell: bash
run: sudo chmod 777 build_linux_deps.sh && sudo ./build_linux_deps.sh -verbose

View File

@ -1,4 +1,4 @@
name: Third-party dependencies (Windows)
name: Emu third-party dependencies (Windows)
on:
workflow_call:
@ -17,7 +17,6 @@ env:
THIRD_PARTY_BASE_DIR: 'third-party'
jobs:
# this helps in manual runs, if build fails, then deps are saved
deps-build:
runs-on: windows-2022
if: ${{ !cancelled() }}

View File

@ -1,4 +1,4 @@
name: Emu pull request (Windows)
name: Emu pull request
on:
pull_request:
@ -13,7 +13,7 @@ on:
# tools
- 'tools/generate_emu_config/**'
- 'tools/migrate_gse/**'
- 'tools/steamclient_loader/linux/**'
- 'tools/steamclient_loader/linux/**' # these are just scripts, not built
permissions:
contents: write
@ -22,4 +22,9 @@ jobs:
emu-win-all:
name: Emu win all
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-all-win.yml
uses: ./.github/workflows/emu-build-all-win.yml
emu-linux-all:
name: Emu linux all
if: ${{ !cancelled() }}
uses: ./.github/workflows/emu-build-all-linux.yml

View File

@ -1,4 +1,4 @@
name: Emu final release (Windows)
name: Prepare release
on:
push:
@ -19,10 +19,10 @@ jobs:
emu-win-all:
name: Emu win all
if: ${{ !cancelled() }}
uses: ./.github/workflows/build-emu-all-win.yml
uses: ./.github/workflows/emu-build-all-win.yml
emu-win-dl:
emu-win-prep:
needs: [ emu-win-all ]
runs-on: windows-2022
steps:

View File

@ -223,15 +223,15 @@ Arguments you can pass to this script:
>>>>>>>>> ___
* `+exp-lib-32`: build experimental 32-bit `libsteam_api.so`
* `+exp-lib-64`: build experimental 64-bit `libsteam_api.so`
* `+exp-client-32`: build experimental steam client 64-bit `steamclient.so`
* `+exp-client-64`: build experimental steam client 64-bit `steamclient.so`
* `+client-32`: build steam client 32-bit `steamclient.so`
* `+client-64`: build steam client 64-bit `steamclient.so`
>>>>>>>>> ___
* `+client-32`: build steam client 32-bit `steamclient.so`
* `+client-64`: build steam client 64-bit `steamclient.so`
* `+exp-lib-32`: build experimental 32-bit `libsteam_api.so`
* `+exp-lib-64`: build experimental 64-bit `libsteam_api.so`
* `+exp-client-32`: build experimental steam client 32-bit `steamclient.so`
* `+exp-client-64`: build experimental steam client 64-bit `steamclient.so`
>>>>>>>>> ___

View File

@ -87,7 +87,7 @@ for (( i=1; i<=$#; i++ )); do
BUILD_TOOL_FIND_ITFS64=1
elif [[ "$var" = "+tool-lobby-32" ]]; then
BUILD_TOOL_LOBBY32=1
elif [[ "$var" = "vtool-lobby-64" ]]; then
elif [[ "$var" = "+tool-lobby-64" ]]; then
BUILD_TOOL_LOBBY64=1
elif [[ "$var" = "+lib-netsockets-32" ]]; then
BUILD_LIB_NET_SOCKETS_32=1
@ -664,6 +664,7 @@ cleanup
# copy configs + examples
if [[ $last_code = 0 ]]; then
echo "// copying readmes + files examples"
mkdir -p "$build_root_dir/"
cp -f -r "post_build/steam_settings.EXAMPLE/" "$build_root_dir/"
cp -f "post_build/README.release.md" "$build_root_dir/"
cp -f "CHANGELOG.md" "$build_root_dir/"
@ -671,9 +672,11 @@ if [[ $last_code = 0 ]]; then
cp -f "post_build/README.debug.md" "$build_root_dir/"
fi
if [[ -d "$build_root_tools/find_interfaces" ]]; then
mkdir -p "$build_root_tools/find_interfaces/"
cp -f "post_build/README.find_interfaces.md" "$build_root_tools/find_interfaces/"
fi
if [[ -d "$build_root_tools/lobby_connect" ]]; then
mkdir -p "$build_root_tools/lobby_connect/"
cp -f "post_build/README.lobby_connect.md" "$build_root_tools/lobby_connect/"
fi
else