mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-21 18:22:33 +01:00
Cirrus build
This commit is contained in:
parent
7a105333dc
commit
024b184008
@ -5,7 +5,9 @@ export QT_BASE_DIR=/opt/qt${QTVERMIN}
|
|||||||
export PATH=$QT_BASE_DIR/bin:$PATH
|
export PATH=$QT_BASE_DIR/bin:$PATH
|
||||||
export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib
|
export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib
|
||||||
|
|
||||||
cd rpcs3 || exit 1
|
if [ -z "$CIRRUS_CI" ]; then
|
||||||
|
cd rpcs3 || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Pull all the submodules except llvm, since it is built separately and we just download that build
|
# Pull all the submodules except llvm, since it is built separately and we just download that build
|
||||||
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
||||||
@ -57,9 +59,9 @@ cd ..
|
|||||||
|
|
||||||
shellcheck .ci/*.sh
|
shellcheck .ci/*.sh
|
||||||
|
|
||||||
# If it compiled succesfully let's deploy depending on the build pipeline (Azure Pipelines).
|
# If it compiled succesfully let's deploy.
|
||||||
# Azure publishes PRs as artifacts only.
|
# Azure and Cirrus publish PRs as artifacts only.
|
||||||
{ [ "$IS_AZURE" = "true" ];
|
{ [ "$CI_HAS_ARTIFACTS" = "true" ];
|
||||||
} && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
|
} && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
|
||||||
|
|
||||||
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
|
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
|
||||||
|
@ -33,7 +33,8 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
|||||||
printf "#include <bits/stdc++.h>\nint main(){std::make_exception_ptr(0);std::pmr::get_default_resource();}" | $CXX -x c++ -std=c++2a -o ./appdir/usr/optional/checker -
|
printf "#include <bits/stdc++.h>\nint main(){std::make_exception_ptr(0);std::pmr::get_default_resource();}" | $CXX -x c++ -std=c++2a -o ./appdir/usr/optional/checker -
|
||||||
|
|
||||||
# Package it up and send it off
|
# Package it up and send it off
|
||||||
./squashfs-root/usr/bin/appimagetool /rpcs3/build/appdir
|
./squashfs-root/usr/bin/appimagetool "$APPDIR"
|
||||||
|
|
||||||
ls
|
ls
|
||||||
|
|
||||||
COMM_TAG="$(grep 'version{.*}' ../rpcs3/rpcs3_version.cpp | awk -F[\{,] '{printf "%d.%d.%d", $2, $3, $4}')"
|
COMM_TAG="$(grep 'version{.*}' ../rpcs3/rpcs3_version.cpp | awk -F[\{,] '{printf "%d.%d.%d", $2, $3, $4}')"
|
||||||
@ -43,14 +44,14 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
|||||||
|
|
||||||
mv ./RPCS3*.AppImage "$RPCS3_APPIMAGE"
|
mv ./RPCS3*.AppImage "$RPCS3_APPIMAGE"
|
||||||
|
|
||||||
# If we're building using Azure Pipelines, let's copy over the AppImage artifact
|
# If we're building using a CI, let's copy over the AppImage artifact
|
||||||
if [ -n "$BUILD_ARTIFACTSTAGINGDIRECTORY" ]; then
|
if [ -n "$BUILD_ARTIFACTSTAGINGDIRECTORY" ]; then
|
||||||
cp "$RPCS3_APPIMAGE" ~/artifacts
|
cp "$RPCS3_APPIMAGE" "$ARTDIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FILESIZE=$(stat -c %s ./rpcs3*.AppImage)
|
FILESIZE=$(stat -c %s ./rpcs3*.AppImage)
|
||||||
SHA256SUM=$(sha256sum ./rpcs3*.AppImage | awk '{ print $1 }')
|
SHA256SUM=$(sha256sum ./rpcs3*.AppImage | awk '{ print $1 }')
|
||||||
echo "${SHA256SUM};${FILESIZE}B" > /rpcs3/GitHubReleaseMessage.txt
|
echo "${SHA256SUM};${FILESIZE}B" > "$RELEASE_MESSAGE"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
|
ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||||
|
|
||||||
# Remove unecessary files
|
# Remove unecessary files
|
||||||
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb
|
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb ./bin/vc_redist.x64.exe
|
||||||
|
|
||||||
# Prepare compatibility database for packaging, as well as
|
# Prepare compatibility database for packaging, as well as
|
||||||
# certificate for ssl (auto-updater)
|
# certificate for ssl (auto-updater)
|
||||||
@ -20,5 +20,5 @@ sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
|
|||||||
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
|
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
|
||||||
|
|
||||||
# Move files to publishing directory
|
# Move files to publishing directory
|
||||||
mv -- "$BUILD" "$ARTIFACT_DIR"
|
cp -- "$BUILD" "$ARTIFACT_DIR"
|
||||||
mv -- "$BUILD.sha256" "$ARTIFACT_DIR"
|
cp -- "$BUILD.sha256" "$ARTIFACT_DIR"
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
# Variables set by Azure Pipelines
|
# Variables set by Azure Pipelines
|
||||||
IS_AZURE
|
CI_HAS_ARTIFACTS
|
||||||
BUILD_REASON
|
BUILD_REASON
|
||||||
BUILD_SOURCEVERSION
|
BUILD_SOURCEVERSION
|
||||||
BUILD_ARTIFACTSTAGINGDIRECTORY
|
BUILD_ARTIFACTSTAGINGDIRECTORY
|
||||||
BUILD_REPOSITORY_NAME
|
BUILD_REPOSITORY_NAME
|
||||||
BUILD_SOURCEBRANCHNAME
|
BUILD_SOURCEBRANCHNAME
|
||||||
|
APPDIR
|
||||||
|
ARTDIR
|
||||||
|
RELEASE_MESSAGE
|
||||||
# Variables for build matrix
|
# Variables for build matrix
|
||||||
COMPILER
|
COMPILER
|
||||||
DEPLOY_APPIMAGE
|
DEPLOY_APPIMAGE
|
||||||
|
13
.ci/export-cirrus-vars.sh
Normal file
13
.ci/export-cirrus-vars.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# Export variables for later stages of the Azure pipeline
|
||||||
|
# Values done in this manner will appear as environment variables
|
||||||
|
# in later stages.
|
||||||
|
|
||||||
|
# From pure-sh-bible
|
||||||
|
# Setting 'IFS' tells 'read' where to split the string.
|
||||||
|
while IFS='=' read -r key val; do
|
||||||
|
# Skip over lines containing comments.
|
||||||
|
[ "${key##\#*}" ] || continue
|
||||||
|
export "$key"="$val"
|
||||||
|
done < ".ci/azure-vars.env"
|
@ -36,7 +36,7 @@ DEP_URLS=" \
|
|||||||
# Pull all the submodules except llvm, since it is built separately and we just download that build
|
# Pull all the submodules except llvm, since it is built separately and we just download that build
|
||||||
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
git submodule -q update --init --depth 1 $(awk '/path/ && !/llvm/ { print $3 }' .gitmodules)
|
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/llvm/ { print $3 }' .gitmodules)
|
||||||
|
|
||||||
# Git bash doesn't have rev, so here it is
|
# Git bash doesn't have rev, so here it is
|
||||||
rev()
|
rev()
|
||||||
|
96
.cirrus.yml
96
.cirrus.yml
@ -1,5 +1,101 @@
|
|||||||
env:
|
env:
|
||||||
CIRRUS_CLONE_DEPTH: 0 # Unshallow clone to obtain proper GIT_VERSION
|
CIRRUS_CLONE_DEPTH: 0 # Unshallow clone to obtain proper GIT_VERSION
|
||||||
|
BUILD_REPOSITORY_NAME: $CIRRUS_REPO_FULL_NAME
|
||||||
|
SYSTEM_PULLREQUEST_SOURCEBRANCH: $CIRRUS_BRANCH
|
||||||
|
SYSTEM_PULLREQUEST_PULLREQUESTID: $CIRRUS_PR
|
||||||
|
BUILD_SOURCEVERSION: $CIRRUS_CHANGE_IN_REPO
|
||||||
|
RPCS3_TOKEN: ENCRYPTED[13a0f18de9285e6c880e3aecbb54258245a74872af7d0fcb92447fa1200ceb6a4dc8acc880ddbf5e653d46336563ca72] # Replace this when we're using Cirrus for master releases!!
|
||||||
|
|
||||||
|
windows_task:
|
||||||
|
matrix:
|
||||||
|
- name: Cirrus Windows
|
||||||
|
windows_container:
|
||||||
|
image: cirrusci/windowsservercore:visualstudio2019
|
||||||
|
cpu: 8
|
||||||
|
memory: 16G
|
||||||
|
env:
|
||||||
|
CIRRUS_SHELL: "bash"
|
||||||
|
COMPILER: msvc
|
||||||
|
QT_VER_MAIN: '5'
|
||||||
|
BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}\artifacts\
|
||||||
|
QT_VER: '5.15.2'
|
||||||
|
QT_VER_MSVC: 'msvc2019'
|
||||||
|
QT_DATE: '202011130602'
|
||||||
|
QTDIR: C:\Qt\${QT_VER}\${QT_VER_MSVC}_64
|
||||||
|
VULKAN_VER: '1.2.154.1'
|
||||||
|
VULKAN_SDK_SHA: 'b64471f3a720e649c1fae6535ea83b8c642655ebed1485bfdf15bf4d88f746d9'
|
||||||
|
VULKAN_SDK: C:\VulkanSDK\${VULKAN_VER}
|
||||||
|
CACHE_DIR: "./cache"
|
||||||
|
UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
|
||||||
|
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-win"
|
||||||
|
deps_cache:
|
||||||
|
folder: "./cache"
|
||||||
|
#obj_cache:
|
||||||
|
# folder: "./tmp"
|
||||||
|
#obj2_cache:
|
||||||
|
# folder: "./rpcs3/x64"
|
||||||
|
setup_script:
|
||||||
|
- './.ci/get_keys-windows.sh'
|
||||||
|
- './.ci/setup-windows.sh'
|
||||||
|
# - choco install -y python # Needed for SPIRV, use either this or make a new Docker image
|
||||||
|
# spirv_script:
|
||||||
|
# - export PATH=${PATH}:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
|
||||||
|
# - cd "${CIRRUS_WORKING_DIR}/Vulkan/spirv-tools-build"
|
||||||
|
# - msbuild.exe spirv-tools-build.vcxproj //p:Configuration=Release //m
|
||||||
|
rpcs3_script:
|
||||||
|
- export PATH=${PATH}:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
|
||||||
|
- msbuild.exe rpcs3.sln //p:Configuration=Release //m
|
||||||
|
deploy_script:
|
||||||
|
- mkdir artifacts
|
||||||
|
- source './.ci/export-cirrus-vars.sh'
|
||||||
|
- './.ci/deploy-windows.sh'
|
||||||
|
artifacts:
|
||||||
|
name: Artifact
|
||||||
|
path: "*.7z*"
|
||||||
|
# push_script: |
|
||||||
|
# if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ]; then
|
||||||
|
# source './.ci/export-cirrus-vars.sh'
|
||||||
|
# './.ci/github-upload.sh'
|
||||||
|
# fi;
|
||||||
|
|
||||||
|
linux_task:
|
||||||
|
container:
|
||||||
|
image: rpcs3/rpcs3-travis-xenial:1.7
|
||||||
|
cpu: 4
|
||||||
|
memory: 16G
|
||||||
|
env:
|
||||||
|
BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts
|
||||||
|
CCACHE_DIR: "/tmp/ccache_dir"
|
||||||
|
CCACHE_MAXSIZE: 300M
|
||||||
|
CI_HAS_ARTIFACTS: true
|
||||||
|
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
|
||||||
|
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
|
||||||
|
DEPLOY_APPIMAGE: true
|
||||||
|
APPDIR: "./appdir"
|
||||||
|
ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/
|
||||||
|
RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
|
||||||
|
ccache_cache:
|
||||||
|
folder: "/tmp/ccache_dir"
|
||||||
|
matrix:
|
||||||
|
- name: Cirrus Linux GCC
|
||||||
|
env:
|
||||||
|
COMPILER: gcc
|
||||||
|
gcc_script:
|
||||||
|
- mkdir artifacts
|
||||||
|
- ".ci/build-linux.sh"
|
||||||
|
- name: Cirrus Linux Clang
|
||||||
|
env:
|
||||||
|
COMPILER: clang
|
||||||
|
clang_script:
|
||||||
|
- mkdir artifacts
|
||||||
|
- ".ci/build-linux.sh"
|
||||||
|
artifacts:
|
||||||
|
name: Artifact
|
||||||
|
path: "artifacts/*"
|
||||||
|
# push_script: |
|
||||||
|
# if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ] && [ "$COMPILER" = "gcc" ]; then
|
||||||
|
# '.ci/github-upload.sh'
|
||||||
|
# fi;
|
||||||
|
|
||||||
freebsd_task:
|
freebsd_task:
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -5,10 +5,7 @@ trigger:
|
|||||||
tags:
|
tags:
|
||||||
exclude:
|
exclude:
|
||||||
- '*'
|
- '*'
|
||||||
pr:
|
pr: none
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
jobs:
|
jobs:
|
||||||
- job: Linux_Build
|
- job: Linux_Build
|
||||||
strategy:
|
strategy:
|
||||||
@ -19,12 +16,17 @@ jobs:
|
|||||||
COMPILER: gcc
|
COMPILER: gcc
|
||||||
variables:
|
variables:
|
||||||
CCACHE_DIR: $(Pipeline.Workspace)/ccache
|
CCACHE_DIR: $(Pipeline.Workspace)/ccache
|
||||||
IS_AZURE: true
|
CI_HAS_ARTIFACTS: true
|
||||||
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
|
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
|
||||||
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux"
|
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux"
|
||||||
DEPLOY_APPIMAGE: true
|
DEPLOY_APPIMAGE: true
|
||||||
|
APPDIR: "/rpcs3/build/appdir"
|
||||||
|
ARTDIR: "/root/artifacts"
|
||||||
|
RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt"
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-latest'
|
vmImage: 'ubuntu-latest'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: Cache@2
|
- task: Cache@2
|
||||||
inputs:
|
inputs:
|
||||||
|
Loading…
Reference in New Issue
Block a user