mirror of
https://github.com/uowuo/abaddon.git
synced 2024-11-10 14:10:10 +00:00
232 lines
9.1 KiB
YAML
232 lines
9.1 KiB
YAML
name: Abaddon CI
|
|
|
|
on: [ push, pull_request ]
|
|
|
|
jobs:
|
|
msys2:
|
|
name: msys2-mingw64
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
buildtype: [ Debug, RelWithDebInfo, MinSizeRel ]
|
|
mindeps: [ false ]
|
|
include:
|
|
- buildtype: RelWithDebInfo
|
|
mindeps: true
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup MSYS2 (1)
|
|
uses: haya14busa/action-cond@v1
|
|
id: setupmsys
|
|
with:
|
|
cond: ${{ matrix.mindeps == true }}
|
|
if_true: >-
|
|
git
|
|
make
|
|
unzip
|
|
mingw-w64-x86_64-toolchain
|
|
mingw-w64-x86_64-cmake
|
|
mingw-w64-x86_64-ninja
|
|
mingw-w64-x86_64-sqlite3
|
|
mingw-w64-x86_64-nlohmann-json
|
|
mingw-w64-x86_64-curl
|
|
mingw-w64-x86_64-zlib
|
|
mingw-w64-x86_64-gtkmm3
|
|
mingw-w64-x86_64-spdlog
|
|
if_false: >-
|
|
git
|
|
make
|
|
unzip
|
|
mingw-w64-x86_64-toolchain
|
|
mingw-w64-x86_64-cmake
|
|
mingw-w64-x86_64-ninja
|
|
mingw-w64-x86_64-sqlite3
|
|
mingw-w64-x86_64-nlohmann-json
|
|
mingw-w64-x86_64-curl
|
|
mingw-w64-x86_64-zlib
|
|
mingw-w64-x86_64-gtkmm3
|
|
mingw-w64-x86_64-libhandy
|
|
mingw-w64-x86_64-opus
|
|
mingw-w64-x86_64-libsodium
|
|
mingw-w64-x86_64-spdlog
|
|
|
|
- name: Setup MSYS2 (2)
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: mingw64
|
|
update: true
|
|
install: ${{ steps.setupmsys.outputs.value }}
|
|
|
|
- name: Build (1)
|
|
uses: haya14busa/action-cond@v1
|
|
id: build
|
|
with:
|
|
cond: ${{ matrix.mindeps == true }}
|
|
if_true: |
|
|
cmake -GNinja -Bbuild -DCMAKE_BUILD_TYPE=${{ matrix.buildtype }} -DUSE_LIBHANDY=OFF -DENABLE_VOICE=OFF -DENABLE_NOTIFICATION_SOUNDS=OFF -DENABLE_QRCODE_LOGIN=OFF -DENABLE_RNNOISE=OFF
|
|
cmake --build build
|
|
if_false: |
|
|
cmake -GNinja -Bbuild -DCMAKE_BUILD_TYPE=${{ matrix.buildtype }} -DCMAKE_CXX_FLAGS="-Wl,--default-image-base-low"
|
|
cmake --build build
|
|
|
|
- name: Build (2)
|
|
run: ${{ steps.build.outputs.value }}
|
|
|
|
- name: Setup Artifact
|
|
run: |
|
|
artifact_dir=build/artifactdir/abaddon-${{ matrix.buildtype }}-${GITHUB_SHA::7}
|
|
mkdir -p ${artifact_dir}/bin ${artifact_dir}/etc/ssl/certs ${artifact_dir}/lib ${artifact_dir}/share/glib-2.0/schemas
|
|
cd build
|
|
cp *.exe ../${artifact_dir}/bin
|
|
cd ..
|
|
cp /mingw64/etc/ssl/certs/ca-bundle.crt ${artifact_dir}/etc/ssl/certs
|
|
cp -r /mingw64/lib/gdk-pixbuf-2.0 ${artifact_dir}/lib
|
|
cp -r res/css res/res res/fonts ${artifact_dir}/bin
|
|
cp /mingw64/share/glib-2.0/schemas/gschemas.compiled ${artifact_dir}/share/glib-2.0/schemas
|
|
cat "ci/msys-deps.txt" | sed 's/\r$//' | xargs -I % cp /mingw64% ${artifact_dir}/bin || :
|
|
cp /usr/bin/msys-ffi-8.dll ${artifact_dir}/bin/libffi-8.dll
|
|
mkdir -p ${artifact_dir}/share/icons/Adwaita
|
|
cd ${artifact_dir}/share/icons/Adwaita
|
|
mkdir -p 16x16/actions 24x24/actions 32x32/actions 48x48/actions 64x64/actions 96x96/actions scalable/actions
|
|
mkdir -p 16x16/devices 24x24/devices 32x32/devices 48x48/devices 64x64/devices 96x96/devices scalable/devices
|
|
mkdir -p 16x16/status 24x24/status 32x32/status 48x48/status 64x64/status 96x96/status scalable/status
|
|
cd ${GITHUB_WORKSPACE}
|
|
wget https://github.com/rtlewis1/GTK/archive/refs/heads/Material-Black-Colors-Desktop.zip
|
|
unzip Material-Black-Colors-Desktop.zip 'GTK-Material-Black-Colors-Desktop/Material-Black-Cherry/**/*'
|
|
mkdir -p ${artifact_dir}/share/themes
|
|
mv ./GTK-Material-Black-Colors-Desktop/Material-Black-Cherry ${artifact_dir}/share/themes/Material-Black-Cherry
|
|
cp -r ci/tree/. ${artifact_dir}
|
|
cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/index.theme ${artifact_dir}/share/icons/Adwaita/index.theme
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/16x16/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/16x16/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/24x24/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/24x24/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/32x32/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/32x32/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/48x48/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/48x48/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/64x64/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/64x64/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/96x96/%.symbolic.png ${artifact_dir}/share/icons/Adwaita/96x96/%.symbolic.png || :
|
|
cat "ci/used-icons.txt" | sed 's/\r$//' | xargs -I % cp ci/gtk-for-windows/gtk-nsis-pack/share/icons/Adwaita/scalable/%.svg ${artifact_dir}/share/icons/Adwaita/scalable/%.svg || :
|
|
cd ${artifact_dir}/share/icons/Adwaita
|
|
gtk-update-icon-cache .
|
|
|
|
- name: Upload build (1)
|
|
uses: haya14busa/action-cond@v1
|
|
id: buildname
|
|
with:
|
|
cond: ${{ matrix.mindeps == true }}
|
|
if_true: "${{ matrix.buildtype }}-mindeps"
|
|
if_false: "${{ matrix.buildtype }}"
|
|
|
|
- name: Upload build (2)
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: build-windows-msys2-${{ steps.buildname.outputs.value }}
|
|
path: build/artifactdir
|
|
|
|
mac:
|
|
name: macos-${{ matrix.buildtype }}
|
|
runs-on: macos-latest
|
|
strategy:
|
|
matrix:
|
|
buildtype: [ Debug, RelWithDebInfo ]
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Fetch CMake
|
|
uses: lukka/get-cmake@v3.21.2
|
|
|
|
- name: Fetch dependencies
|
|
run: |
|
|
brew install pkg-config
|
|
brew install gtkmm3
|
|
brew install nlohmann-json
|
|
brew install jpeg
|
|
brew install opus
|
|
brew install libsodium
|
|
brew install spdlog
|
|
brew install libhandy
|
|
|
|
- name: Build
|
|
uses: lukka/run-cmake@v3
|
|
with:
|
|
buildDirectory: ${{ runner.workspace }}/build
|
|
cmakeBuildType: ${{ matrix.buildtype }}
|
|
|
|
- name: Setup artifact files
|
|
run: |
|
|
artifact_dir=build/artifactdir/abaddon-${{ matrix.buildtype }}-${GITHUB_SHA::7}
|
|
mkdir -p "${artifact_dir}"
|
|
cp "${{runner.workspace}}/build/abaddon" "${artifact_dir}/abaddon"
|
|
cp -r "${{ github.workspace }}/res/css" "${artifact_dir}/css"
|
|
cp -r "${{ github.workspace }}/res/res" "${artifact_dir}/res"
|
|
|
|
- name: Upload build
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: build-macos-${{ matrix.buildtype }}
|
|
path: build/artifactdir
|
|
|
|
linux:
|
|
name: linux-${{ matrix.buildtype }}
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
matrix:
|
|
buildtype: [ Debug, RelWithDebInfo, MinSizeRel ]
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Fetch CMake
|
|
uses: lukka/get-cmake@v3.21.2
|
|
|
|
- name: Fetch dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
mkdir deps
|
|
cd deps
|
|
git clone https://github.com/nlohmann/json
|
|
cd json
|
|
git checkout bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
make
|
|
sudo make install
|
|
sudo apt-get install libgtkmm-3.0-dev
|
|
sudo apt-get install libcurl4-gnutls-dev
|
|
sudo apt-get install libopus-dev
|
|
sudo apt-get install libsodium-dev
|
|
sudo apt-get install libspdlog-dev
|
|
sudo apt-get install libhandy-1-dev
|
|
|
|
- name: Build
|
|
uses: lukka/run-cmake@v3
|
|
env:
|
|
CC: gcc-9
|
|
CXX: g++-9
|
|
with:
|
|
cmakeAppendedArgs: -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9
|
|
buildDirectory: ${{ runner.workspace }}/build
|
|
cmakeBuildType: ${{ matrix.buildtype }}
|
|
|
|
- name: Setup artifact files
|
|
run: |
|
|
artifact_dir=${{ runner.workspace }}/artifactdir/abaddon-${{ matrix.buildtype }}-${GITHUB_SHA::7}
|
|
mkdir -p "${artifact_dir}"
|
|
cp "${{runner.workspace}}/build/abaddon" "${artifact_dir}/abaddon"
|
|
cp -r "${{ github.workspace }}/res/css" "${artifact_dir}/css"
|
|
cp -r "${{ github.workspace }}/res/res" "${artifact_dir}/res"
|
|
|
|
- name: Upload build
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: build-linux-${{ matrix.buildtype }}
|
|
path: ${{ runner.workspace }}/artifactdir
|