mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00

The UCI protocol is rather technical and has little value in our README. Instead it should be explained in our wiki. "Contributing" is moved above "Compiling Stockfish" to make it more prominent. Also move the CONTRIBUTING.md into the root directory and include it in the distributed artifacts/releases. closes https://github.com/official-stockfish/Stockfish/pull/4766 No functional change
224 lines
7.3 KiB
YAML
224 lines
7.3 KiB
YAML
name: Stockfish
|
|
on:
|
|
workflow_call:
|
|
jobs:
|
|
Stockfish:
|
|
name: ${{ matrix.config.name }} ${{ matrix.binaries }}
|
|
runs-on: ${{ matrix.config.os }}
|
|
env:
|
|
COMPILER: ${{ matrix.config.compiler }}
|
|
COMP: ${{ matrix.config.comp }}
|
|
EXT: ${{ matrix.config.ext }}
|
|
SDE: ${{ matrix.config.sde }}
|
|
NAME: ${{ matrix.config.simple_name }}
|
|
BINARY: ${{ matrix.binaries }}
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- name: Ubuntu 20.04 GCC
|
|
os: ubuntu-20.04
|
|
simple_name: ubuntu
|
|
compiler: g++
|
|
comp: gcc
|
|
shell: bash
|
|
archive_ext: tar
|
|
sde: /home/runner/work/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.14.0-2022-10-25-lin/sde -future --
|
|
- name: MacOS 13 Apple Clang
|
|
os: macos-13
|
|
simple_name: macos
|
|
compiler: clang++
|
|
comp: clang
|
|
shell: bash
|
|
archive_ext: tar
|
|
- name: Windows 2022 Mingw-w64 GCC x86_64
|
|
os: windows-2022
|
|
simple_name: windows
|
|
compiler: g++
|
|
comp: mingw
|
|
msys_sys: mingw64
|
|
msys_env: x86_64-gcc
|
|
shell: msys2 {0}
|
|
ext: .exe
|
|
sde: /d/a/Stockfish/Stockfish/.output/sde-temp-files/sde-external-9.14.0-2022-10-25-win/sde.exe -future --
|
|
archive_ext: zip
|
|
binaries:
|
|
- x86-32
|
|
- x86-64
|
|
- x86-64-sse41-popcnt
|
|
- x86-64-avx2
|
|
- x86-64-bmi2
|
|
- x86-64-avxvnni
|
|
- x86-64-avx512
|
|
- x86-64-vnni256
|
|
- x86-64-vnni512
|
|
exclude:
|
|
- binaries: x86-64-avxvnni
|
|
config: { ubuntu-20.04 }
|
|
- binaries: x86-32
|
|
config: { os: windows-2022}
|
|
- binaries: x86-32
|
|
config: { os: macos-13 }
|
|
- binaries: x86-64-avxvnni
|
|
config: { os: macos-13 }
|
|
- binaries: x86-64-avx512
|
|
config: { os: macos-13 }
|
|
- binaries: x86-64-vnni256
|
|
config: { os: macos-13 }
|
|
- binaries: x86-64-vnni512
|
|
config: { os: macos-13 }
|
|
defaults:
|
|
run:
|
|
working-directory: src
|
|
shell: ${{ matrix.config.shell }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Download required Linux packages
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install g++-multilib g++-11-multilib
|
|
|
|
- name: Download required macOS packages
|
|
if: runner.os == 'macOS'
|
|
run: brew install coreutils
|
|
|
|
- name: Install fixed GCC on Linux
|
|
if: runner.os == 'Linux'
|
|
uses: egor-tensin/setup-gcc@v1
|
|
with:
|
|
version: 11
|
|
|
|
- name: Setup msys and install required packages
|
|
if: runner.os == 'Windows'
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.config.msys_sys }}
|
|
install: mingw-w64-${{ matrix.config.msys_env }} make git zip
|
|
|
|
- name: Download SDE package
|
|
if: runner.os == 'Linux' || runner.os == 'Windows'
|
|
uses: petarpetrovt/setup-sde@v2.1
|
|
with:
|
|
environmentVariableName: SDE_DIR
|
|
sdeVersion: 9.14.0
|
|
|
|
- name: Download the used network from the fishtest framework
|
|
run: make net
|
|
|
|
- name: Extract the bench number from the commit history
|
|
run: |
|
|
for hash in $(git rev-list -100 HEAD); do
|
|
benchref=$(git show -s $hash | tac | grep -m 1 -o -x '[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*' | sed 's/[^0-9]//g') && break || true
|
|
done
|
|
[[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $hash" && echo "Reference bench: $benchref" || echo "No bench found"
|
|
|
|
- name: Check compiler
|
|
run: $COMPILER -v
|
|
|
|
- name: Show g++ cpu info
|
|
if: runner.os != 'macOS'
|
|
run: g++ -Q -march=native --help=target
|
|
|
|
- name: Show clang++ cpu info
|
|
if: runner.os == 'macOS'
|
|
run: clang++ -E - -march=native -###
|
|
|
|
- name: Test help target
|
|
run: make help
|
|
|
|
- name: Check git
|
|
run: git --version
|
|
|
|
# Compile profile guided builds
|
|
|
|
- name: Compile ${{ matrix.binaries }} build
|
|
run: |
|
|
make -j2 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH="$SDE"
|
|
make strip ARCH=$BINARY COMP=$COMP
|
|
WINE_PATH="$SDE" ../tests/signature.sh $benchref
|
|
mv ./stockfish$EXT ../stockfish-$NAME-$BINARY$EXT
|
|
|
|
- name: Remove non src files
|
|
run: git clean -fx
|
|
|
|
- name: Download wiki
|
|
run: |
|
|
git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki
|
|
rm -rf ../wiki/.git
|
|
|
|
- name: Create directory.
|
|
run: |
|
|
cd ..
|
|
mkdir stockfish
|
|
cp -r wiki stockfish/
|
|
cp -r src stockfish/
|
|
cp stockfish-$NAME-$BINARY$EXT stockfish/
|
|
cp "Top CPU Contributors.txt" stockfish/
|
|
cp Copying.txt stockfish/
|
|
cp AUTHORS stockfish/
|
|
cp CITATION.cff stockfish/
|
|
cp README.md stockfish/
|
|
cp CONTRIBUTING.md stockfish/
|
|
|
|
- name: Create tar
|
|
if: runner.os != 'Windows'
|
|
run: |
|
|
cd ..
|
|
tar -cvf stockfish-$NAME-$BINARY.tar stockfish
|
|
|
|
- name: Create zip
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
cd ..
|
|
zip -r stockfish-$NAME-$BINARY.zip stockfish
|
|
|
|
- name: Upload binaries
|
|
if: runner.os != 'Windows'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
|
|
path: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.tar
|
|
|
|
# Artifacts automatically get zipped
|
|
# to avoid double zipping, we use the unzipped directory
|
|
- name: Upload binaries
|
|
if: runner.os == 'Windows'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }}
|
|
path: stockfish
|
|
|
|
- name: Release
|
|
if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag'
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|
|
|
|
- name: Get last commit sha
|
|
id: last_commit
|
|
run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
|
|
|
|
- name: Get commit date
|
|
id: commit_date
|
|
run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
|
|
|
|
# Make sure that an old ci which still runs on master doesn't recreate a prerelease
|
|
- name: Check Pullable Commits
|
|
id: check_commits
|
|
run: |
|
|
git fetch
|
|
CHANGES=$(git rev-list HEAD..origin/master --count)
|
|
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
|
|
|
|
- name: Prerelease
|
|
if: github.ref_name == 'master' && env.CHANGES == '0'
|
|
continue-on-error: true
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
|
tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }}
|
|
prerelease: true
|
|
files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }}
|