Merge pull request #40 from r2dliu/feature/ci

Unix CI for Slippi Mainline
This commit is contained in:
Nikhil Narayana 2020-07-21 13:07:22 -07:00 committed by GitHub
commit 42950d09ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 548 additions and 17 deletions

411
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,411 @@
name: PR Builds x64
on:
push:
branches: [ master ]
paths-ignore:
- "**.md"
- "**.ini"
pull_request:
branches: [ master ]
paths-ignore:
- "**.md"
- "**.ini"
jobs:
# windows64-netplay:
# env:
# DXSDK_DIR: "C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\"
# name: "Windows Netplay"
# runs-on: windows-2019
# steps:
# - name: "Remove Redistributable"
# shell: cmd
# run: |
# MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
# - name: "Setup MSBuild"
# uses: microsoft/setup-msbuild@v1
# - name: "Install DirectX SDK"
# shell: powershell
# run: |
# choco install directx-sdk
# - name: "Checkout"
# uses: actions/checkout@v2.3.1
# - name: 'Fetch Git Tags'
# if: success()
# shell: bash
# run: |
# git fetch --prune --unshallow
# echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
# echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
# echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
# echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
# - name: "Build Netplay Dolphin"
# shell: cmd
# run: |
# msbuild /p:Configuration=Release /p:Platform=x64 ${{ github.workspace }}\Source\Dolphin.sln
# - name: "Package Netplay"
# working-directory: ${{ github.workspace }}
# run: |
# $env:FILE_NAME="${{ env.CURR_DATE }}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win64-netplay.zip"
# mkdir artifact
# Xcopy /Y /E /I .\Data\Sys .\Binary\x64\Sys
# cd .\Binary\x64\
# fsutil file createnew portable.txt 0
# fsutil file createnew FIX-VCRUNTIME140-ERROR.txt 0
# echo "Download and install this: https://aka.ms/vs/16/release/vc_redist.x64.exe" > .\FIX-VCRUNTIME140-ERROR.txt
# 7z a ${env:FILE_NAME} .\*
# move ${env:FILE_NAME} ..\..\artifact\
# - name: "Publish"
# if: success()
# uses: actions/upload-artifact@v2-preview
# with:
# name: "windows64-netplay"
# path: "./artifact/"
# windows64-playback:
# env:
# DXSDK_DIR: "C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\"
# name: "Windows Playback"
# runs-on: windows-2019
# steps:
# - name: "Remove Redistributable"
# shell: cmd
# run: |
# MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
# - name: "Setup MSBuild"
# uses: microsoft/setup-msbuild@v1
# - name: "Install DirectX SDK"
# shell: powershell
# run: |
# choco install directx-sdk
# - name: "Checkout"
# uses: actions/checkout@v2.3.1
# - name: 'Fetch Git Tags'
# if: success()
# shell: bash
# run: |
# git fetch --prune --unshallow
# echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
# echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
# echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
# echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
# - name: "Build Playback Dolphin"
# shell: cmd
# run: |
# msbuild /p:Configuration=ReleasePlayback /p:Platform=x64 ${{ github.workspace }}\Source\Dolphin.sln
# - name: "Package Playback"
# if: success()
# working-directory: ${{ github.workspace }}
# run: |
# $env:FILE_NAME="${{ env.CURR_DATE }}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win64-playback.zip"
# mkdir artifact
# git clone https://github.com/project-slippi/slippi-desktop-app
# Xcopy /Y /E /I .\Data\Sys .\Binary\x64\Sys
# Xcopy /Y /E /I .\slippi-desktop-app\app\dolphin-dev\overwrite\Sys .\Binary\x64\Sys
# Xcopy /Y /E /I .\slippi-desktop-app\app\dolphin-dev\overwrite\User .\Binary\x64\User
# cd .\Binary\x64\
# fsutil file createnew portable.txt 0
# 7z a ${env:FILE_NAME} .\*
# move ${env:FILE_NAME} ..\..\artifact\
# - name: "Publish"
# if: success()
# uses: actions/upload-artifact@v2-preview
# with:
# name: "windows64-playback"
# path: "./artifact/"
ubuntu64-netplay:
name: "Ubuntu Netplay"
runs-on: ubuntu-18.04
steps:
- name: "Checkout"
uses: actions/checkout@v2
- name: 'Fetch Git Tags'
if: success()
run: |
git fetch --prune --unshallow
echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
- name: "Install prerequisites"
if: success()
shell: bash
run: |
sudo dpkg --add-architecture amd64
sudo apt update
sudo apt install \
cmake \
pkg-config \
git \
wget \
libao-dev \
libasound2-dev \
libavcodec-dev \
libavformat-dev \
libbluetooth-dev \
libenet-dev \
libgtk2.0-dev \
liblzo2-dev \
libminiupnpc-dev \
libopenal-dev \
libpulse-dev \
libreadline-dev \
libsfml-dev \
libsoil-dev \
libsoundtouch-dev \
libswscale-dev \
libusb-1.0-0-dev \
libxext-dev \
libxrandr-dev \
portaudio19-dev \
zlib1g-dev \
libudev-dev \
libevdev-dev \
libmbedtls-dev \
libcurl4-openssl-dev \
libegl1-mesa-dev \
libpng-dev \
qtbase5-private-dev \
libxxf86vm-dev \
x11proto-xinerama-dev
- name: "Build Netplay Dolphin"
if: success()
working-directory: ${{ github.workspace }}
run: |
chmod +x ./build-linux.sh
./build-linux.sh
- name: "Build Netplay AppImage"
if: success()
working-directory: ${{ github.workspace }}
run: |
chmod +x ./build-appimage.sh
./build-appimage.sh
- name: "Package Netplay"
if: success()
working-directory: ${{ github.workspace }}
run: |
mkdir artifact
FILE_NAME=${{ env.CURR_DATE }}-${{ env.GIT_HASH }}-${{ env.GIT_TAG }}-linux-appimage-netplay.zip
zip -r "${FILE_NAME}" ./*.AppImage*
mv "${FILE_NAME}" ./artifact/
- name: "Publish"
if: success()
uses: actions/upload-artifact@v2-preview
with:
name: "linux-netplay"
path: "./artifact/"
ubuntu64-playback:
name: "Ubuntu Playback"
runs-on: ubuntu-18.04
steps:
- name: "Checkout"
uses: actions/checkout@v2
- name: 'Fetch Git Tags'
if: success()
run: |
git fetch --prune --unshallow
echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
- name: "Install prerequisites"
if: success()
shell: bash
run: |
sudo dpkg --add-architecture amd64
sudo apt update
sudo apt install \
cmake \
pkg-config \
git \
wget \
libao-dev \
libasound2-dev \
libavcodec-dev \
libavformat-dev \
libbluetooth-dev \
libenet-dev \
libgtk2.0-dev \
liblzo2-dev \
libminiupnpc-dev \
libopenal-dev \
libpulse-dev \
libreadline-dev \
libsfml-dev \
libsoil-dev \
libsoundtouch-dev \
libswscale-dev \
libusb-1.0-0-dev \
libxext-dev \
libxrandr-dev \
portaudio19-dev \
zlib1g-dev \
libudev-dev \
libevdev-dev \
libmbedtls-dev \
libcurl4-openssl-dev \
libegl1-mesa-dev \
libpng-dev \
qtbase5-private-dev \
libxxf86vm-dev \
x11proto-xinerama-dev
- name: "Build Playback Dolphin"
if: success()
working-directory: ${{ github.workspace }}
run: |
chmod +x ./build-linux.sh
./build-linux.sh playback
- name: "Build Playback AppImage"
if: success()
working-directory: ${{ github.workspace }}
run: |
chmod +x ./build-appimage.sh
./build-appimage.sh playback
- name: "Package Playback"
if: success()
working-directory: ${{ github.workspace }}
run: |
mkdir artifact
FILE_NAME=${{ env.CURR_DATE }}-${{ env.GIT_HASH }}-${{ env.GIT_TAG }}-linux-appimage-playback.zip
zip -r "${FILE_NAME}" ./*.AppImage
mv "${FILE_NAME}" ./artifact/
- name: "Publish"
if: success()
uses: actions/upload-artifact@v2-preview
with:
name: "linux-playback"
path: "./artifact/"
macOS64-netplay:
name: "macOS Netplay"
runs-on: macos-10.15
steps:
- name: "Checkout"
uses: actions/checkout@v2
- name: 'Fetch Git Tags'
if: success()
run: |
git fetch --prune --unshallow
echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
- name: "Install 10.14 SDK"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
wget https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.14.sdk.tar.xz
tar -xf MacOSX10.14.sdk.tar.xz
rm MacOSX10.14.sdk.tar.xz
sudo mv MacOSX10.14.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
- name: "Download and Install prerequisites"
if: success()
shell: bash
run: |
brew update
brew upgrade cmake
brew install \
ffmpeg \
libpng \
libav \
pkgconfig \
libao \
sound-touch \
hidapi \
qt
- name: "Build Netplay"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
cd build
export LIBRARY_PATH=/usr/lib/
cmake -DSLIPPI_PLAYBACK=false -DQt5_DIR=$(brew --prefix qt)/lib/cmake/Qt5 -DENABLE_NOGUI=false ..
make -j7
- name: "Package Netplay"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
FILE_NAME=${{ env.CURR_DATE }}-${{ env.GIT_HASH }}-${{ env.GIT_TAG }}-macOS-netplay.tar.gz
echo "::set-env name=FILE_NAME::${FILE_NAME}"
cp -Rf Data/Sys build/Binaries/Dolphin.app/Contents/Resources/
mkdir artifact
cd ./build/Binaries/
zip -r "${FILE_NAME}" Dolphin.app
mv "${FILE_NAME}" ../../artifact/
- name: "Publish"
if: success()
uses: actions/upload-artifact@v2-preview
with:
name: "macOS-netplay"
path: "./artifact/"
macOS64-playback:
name: "macOS Playback"
runs-on: macos-10.15
steps:
- name: "Checkout"
uses: actions/checkout@v2
- name: 'Fetch Git Tags'
if: success()
run: |
git fetch --prune --unshallow
echo ::set-env name=GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
echo ::set-env name=GIT_HASH::$(git rev-parse --short HEAD)
echo ::set-env name=GIT_TAG::$(git describe --tags --abbrev=0)
echo ::set-env name=CURR_DATE::$(date +%Y-%m-%d)
- name: "Install 10.14 SDK"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
wget https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.14.sdk.tar.xz
tar -xf MacOSX10.14.sdk.tar.xz
rm MacOSX10.14.sdk.tar.xz
sudo mv MacOSX10.14.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
- name: "Download and Install prerequisites"
if: success()
shell: bash
run: |
brew update
brew upgrade cmake
brew install \
ffmpeg \
libpng \
libav \
pkgconfig \
libao \
sound-touch \
hidapi \
qt
- name: "Build Playback"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
export LD_LIBRARY_PATH=/usr/lib/
cd build
cmake -DQt5_DIR=$(brew --prefix qt)/lib/cmake/Qt5 -DENABLE_NOGUI=false ..
make -j7
- name: "Package Playback"
if: success()
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir artifact
git clone https://github.com/project-slippi/slippi-desktop-app
cd ./build/Binaries/
cp -Rf ../../Data/Sys ./Dolphin.app/Contents/Resources
cp -Rf ../../slippi-desktop-app/app/dolphin-dev/overwrite/Sys ./Dolphin.app/Contents/Resources
cp -Rf ../../slippi-desktop-app/app/dolphin-dev/overwrite/User ./Dolphin.app/Contents/Resources
FILE_NAME=${{ env.CURR_DATE }}-${{ env.GIT_HASH }}-${{ env.GIT_TAG }}-macOS-playback.zip
zip -r "${FILE_NAME}" Dolphin.app
mv "${FILE_NAME}" ../../artifact/
- name: "Publish"
if: success()
uses: actions/upload-artifact@v2-preview
with:
name: "macOS-playback"
path: "./artifact/"

View file

@ -626,7 +626,7 @@ else()
endif()
pkg_search_module(ZSTD QUIET libzstd)
if(ZSTD_FOUND)
if(ZSTD_FOUND AND NOT APPLE)
message(STATUS "Using shared zstd")
else()
check_vendoring_approved(zstd)

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Icon=dolphin-emu
Exec=dolphin-emu
Terminal=false
Type=Application
Categories=Game;Emulator;
Name=Slippi Online
GenericName=Wii/GameCube Emulator
Comment=A Wii/GameCube Emulator

View file

@ -2208,6 +2208,8 @@ float ImGui::SliderCalcRatioFromValueT(ImGuiDataType data_type, TYPE v, TYPE v_m
return (float)((FLOATTYPE)(v_clamped - v_min) / (FLOATTYPE)(v_max - v_min));
}
template float ImGui::SliderCalcRatioFromValueT<int, float>(ImGuiDataType, int, int, int, float, float);
// FIXME: Move some of the code into SliderBehavior(). Current responsability is larger than what the equivalent DragBehaviorT<> does, we also do some rendering, etc.
template<typename TYPE, typename SIGNEDTYPE, typename FLOATTYPE>
bool ImGui::SliderBehaviorT(const ImRect& bb, ImGuiID id, ImGuiDataType data_type, TYPE* v, const TYPE v_min, const TYPE v_max, const char* format, float power, ImGuiSliderFlags flags, ImRect* out_grab_bb)

81
build-appimage.sh Normal file
View file

@ -0,0 +1,81 @@
#!/bin/bash -e
# build-online-appimage.sh
ZSYNC_STRING="gh-releases-zsync|project-slippi|Ishiiruka|latest|Slippi_Online-x86_64.AppImage.zsync"
PLAYBACK_APPIMAGE_STRING="Slippi_Playback-x86_64.AppImage"
LINUXDEPLOY_PATH="https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous"
LINUXDEPLOY_FILE="linuxdeploy-x86_64.AppImage"
LINUXDEPLOY_URL="${LINUXDEPLOY_PATH}/${LINUXDEPLOY_FILE}"
UPDATEPLUG_PATH="https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous"
UPDATEPLUG_FILE="linuxdeploy-plugin-appimage-x86_64.AppImage"
UPDATEPLUG_URL="${UPDATEPLUG_PATH}/${UPDATEPLUG_FILE}"
UPDATETOOL_PATH="https://github.com/AppImage/AppImageUpdate/releases/download/continuous"
UPDATETOOL_FILE="appimageupdatetool-x86_64.AppImage"
UPDATETOOL_URL="${UPDATETOOL_PATH}/${UPDATETOOL_FILE}"
DESKTOP_APP_URL="https://github.com/project-slippi/slippi-desktop-app"
DESKTOP_APP_SYS_PATH="./slippi-desktop-app/app/dolphin-dev/overwrite/Sys"
APPDIR_BIN="./AppDir/usr/bin"
# Grab various appimage binaries from GitHub if we don't have them
if [ ! -e ./Tools/linuxdeploy ]; then
wget ${LINUXDEPLOY_URL} -O ./Tools/linuxdeploy
chmod +x ./Tools/linuxdeploy
fi
if [ ! -e ./Tools/linuxdeploy-update-plugin ]; then
wget ${UPDATEPLUG_URL} -O ./Tools/linuxdeploy-update-plugin
chmod +x ./Tools/linuxdeploy-update-plugin
fi
if [ ! -e ./Tools/appimageupdatetool ]; then
wget ${UPDATEPLUG_URL} -O ./Tools/appimageupdatetool
chmod +x ./Tools/appimageupdatetool
fi
# Delete the AppDir folder to prevent build issues
rm -rf ./AppDir/
# Build the AppDir directory for this image
mkdir -p AppDir
./Tools/linuxdeploy \
--appdir=./AppDir \
-e ./build/Binaries/dolphin-emu \
-d ./Data/slippi-online.desktop \
-i ./Data/dolphin-emu.png
# Add the Sys dir to the AppDir for packaging
cp -r Data/Sys ${APPDIR_BIN}
# Build type
if [ -z "$1" ] # Netplay
then
echo "Using Netplay build config"
# Package up the update tool within the AppImage
cp ./Tools/appimageupdatetool ./AppDir/usr/bin/
# Bake an AppImage with the update metadata
UPDATE_INFORMATION="${ZSYNC_STRING}" \
./Tools/linuxdeploy-update-plugin --appdir=./AppDir/
elif [ "$1" == "playback" ] # Playback
then
echo "Using Playback build config"
if [ -d "slippi-desktop-app" ]
then
pushd slippi-desktop-app
git checkout master
git pull --ff-only
popd
else
git clone ${DESKTOP_APP_URL}
fi
# Update Sys dir with playback codes
rm -rf "${APPDIR_BIN}/GameSettings" # Delete netplay codes
cp -r ${DESKTOP_APP_SYS_PATH} ${APPDIR_BIN}
OUTPUT="${PLAYBACK_APPIMAGE_STRING}" \
./Tools/linuxdeploy-update-plugin --appdir=./AppDir/
fi

27
build-linux.sh Normal file
View file

@ -0,0 +1,27 @@
#!/bin/bash -e
# build-linux.sh
CMAKE_FLAGS='-DLINUX_LOCAL_DEV=true'
# Build type
if [ -z "$1" ]
then
# TODO: move this around, playback should be the secondary build
CMAKE_FLAGS+=" -DSLIPPI_PLAYBACK=false"
echo "Using Netplay build config"
elif [ "$1" == "playback" ]
then
echo "Using Playback build config"
fi
# Move into the build directory, run CMake, and compile the project
mkdir -p build
pushd build
cmake ${CMAKE_FLAGS} ../
make -j$(nproc)
popd
# Copy the Sys folder in
cp -r -n Data/Sys/ build/Binaries/
touch ./build/Binaries/portable.txt