You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
* Close down ZMQ context to stop the zmq threads (related to sentry bug: OPENSHOT-3X) * Add Support for Windows 7/8.1 (#881) Adding protection around getting current sample rate for win 7, if audio device not found. Also added mutex for Singleton method. Also, making whitespace consistent on AudioPlaybackThread.cpp * Big refactor of audio device opening - with multiple sample rates attempted, for better recovery from a missing or unsupported sample rate. Debug logs added for testing. * Additional failure logging for windows audio device init * Refactor of Audio Device Initialization (#882) * Huge refactor of audio device initialization: - Attempt requested audio device first, and then iterate through all known audio types and devices, and common sample rates. The idea is to ignore an invalid default or invalid requested device, and keep looking until we find a valid one - New public method to return active, open audio device - Added methods for AudioDeviceInfo struct, to make it callable from Python - Some code clean-up and whitespace fixes - New unit tests for AudioDeviceManagerSingleton * Ignore audio device unit tests on systems with "No Driver" returned in the audio error message * Ignore audio device unit tests if any error is found during initialization (i.e. build servers don't have audio cards) * Trying to update GitHub libomp errors during build checks * Remove zmq context shutdown call, due to the method missing on newer versions of zmq.hpp * Downgrading GitHub Ubuntu latest image to Ubuntu 20.04, for compatibility with Catchv2 * Initialize all audio device manager variables correctly, and ignore unit test on low or missing sample rate systems (i.e. GitHub build servers)
215 lines
7.7 KiB
YAML
215 lines
7.7 KiB
YAML
# © OpenShot Studios, LLC
|
|
#
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
name: libopenshot CI Build
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.sys.os }}
|
|
strategy:
|
|
matrix:
|
|
sys:
|
|
- { os: ubuntu-18.04, shell: bash }
|
|
- { os: ubuntu-20.04, shell: bash }
|
|
- { os: windows-2022, shell: 'msys2 {0}' }
|
|
compiler:
|
|
- { cc: gcc, cxx: g++ }
|
|
- { cc: clang, cxx: clang++ }
|
|
exclude:
|
|
# Windows clang isn't being our friend,
|
|
# JUCE seems to think it can use _get_tzname there
|
|
# (it can't)
|
|
- sys: { os: windows-2022, shell: 'msys2 {0}' }
|
|
compiler: { cc: clang, cxx: clang++ }
|
|
defaults:
|
|
run:
|
|
shell: "${{ matrix.sys.shell }}"
|
|
env:
|
|
CC: ${{ matrix.compiler.cc }}
|
|
CXX: ${{ matrix.compiler.cxx }}
|
|
CODECOV_TOKEN: 'dc94d508-39d3-4369-b1c6-321749f96f7c'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
# Work around a codecov issue detecting commit SHAs
|
|
# see: https://community.codecov.io/t/issue-detecting-commit-sha-please-run-actions-checkout-with-fetch-depth-1-or-set-to-0/2571
|
|
fetch-depth: 0
|
|
|
|
- name: Checkout OpenShotAudio
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: OpenShot/libopenshot-audio
|
|
path: audio
|
|
|
|
- name: Checkout Resvg
|
|
if: ${{ matrix.compiler.cc == 'clang' && runner.os == 'linux' }}
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: RazrFalcon/resvg
|
|
path: resvg
|
|
ref: v0.19.0
|
|
|
|
- uses: haya14busa/action-cond@v1
|
|
id: generator
|
|
with:
|
|
cond: ${{ runner.os == 'Windows' }}
|
|
if_true: "MinGW Makefiles"
|
|
if_false: "Unix Makefiles"
|
|
|
|
- uses: haya14busa/action-cond@v1
|
|
id: coverage
|
|
with:
|
|
cond: ${{ (matrix.compiler.cc == 'gcc' && runner.os == 'linux') || (matrix.compiler.cc == 'clang' && runner.os == 'macos') }}
|
|
if_true: "-DENABLE_COVERAGE:BOOL=1"
|
|
|
|
- uses: haya14busa/action-cond@v1
|
|
id: use-resvg
|
|
with:
|
|
cond: ${{ matrix.compiler.cc == 'clang' && runner.os == 'linux' }}
|
|
if_true: "-DResvg_ROOT:PATH=./resvg"
|
|
|
|
- name: Install Linux dependencies
|
|
if: ${{ runner.os == 'linux' }}
|
|
run: |
|
|
sudo apt update
|
|
sudo apt remove libzmq5 # See actions/virtual-environments#3317
|
|
sudo apt install \
|
|
cmake swig doxygen graphviz curl lcov \
|
|
libasound2-dev \
|
|
qtbase5-dev qtbase5-dev-tools libqt5svg5-dev \
|
|
libfdk-aac-dev libavcodec-dev libavformat-dev \
|
|
libavutil-dev libswscale-dev libswresample-dev \
|
|
libzmq3-dev libmagick++-dev libbabl-dev \
|
|
libopencv-dev libprotobuf-dev protobuf-compiler \
|
|
cargo libomp5 libomp-dev
|
|
# Install catch2 package from Ubuntu 20.10, since for some reason
|
|
# even 20.04 only has Catch 1.12.1 available.
|
|
wget https://launchpad.net/ubuntu/+archive/primary/+files/catch2_2.13.0-1_all.deb
|
|
sudo dpkg -i catch2_2.13.0-1_all.deb
|
|
|
|
- name: Install macOS dependencies
|
|
if: ${{ runner.os == 'macos' }}
|
|
run: |
|
|
brew install \
|
|
qt5 ffmpeg zeromq cppzmq libomp opencv protobuf babl \
|
|
python3 swig catch2 doxygen graphviz lcov
|
|
|
|
- name: Set up MSYS and install Windows dependencies
|
|
if: ${{ runner.os == 'Windows' }}
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
release: true
|
|
update: true
|
|
install: >-
|
|
mingw-w64-x86_64-gcc
|
|
mingw-w64-x86_64-lld
|
|
mingw-w64-x86_64-make
|
|
mingw-w64-x86_64-cmake
|
|
mingw-w64-x86_64-pkgconf
|
|
mingw-w64-x86_64-qt5-base
|
|
mingw-w64-x86_64-qt5-svg
|
|
mingw-w64-x86_64-qt5-winextras
|
|
mingw-w64-x86_64-qt5-tools
|
|
mingw-w64-x86_64-libvpx
|
|
mingw-w64-x86_64-ffmpeg
|
|
mingw-w64-x86_64-zeromq
|
|
mingw-w64-x86_64-opencv
|
|
mingw-w64-x86_64-protobuf
|
|
mingw-w64-x86_64-babl
|
|
mingw-w64-x86_64-catch
|
|
mingw-w64-x86_64-python3
|
|
mingw-w64-x86_64-swig
|
|
|
|
- uses: actions/cache@v3.0.1
|
|
name: Import OpenShotAudio cache
|
|
id: cache-audio
|
|
with:
|
|
path: audio/build
|
|
key: audio-${{ matrix.sys.os }}-${{ matrix.compiler.cxx }}-${{ hashFiles('audio/CMakeLists.txt') }}
|
|
|
|
- uses: actions/cache@v3.0.1
|
|
name: Import Resvg cache
|
|
if: ${{ steps.use-resvg.outputs.value }}
|
|
id: cache-resvg
|
|
with:
|
|
path: resvg/target
|
|
key: resvg-${{ matrix.sys.os }}-${{ matrix.compiler.cxx }}-${{ hashFiles('resvg/Cargo.toml') }}
|
|
|
|
- name: Build OpenShotAudio (if not cached)
|
|
if: steps.cache-audio.outputs.cache-hit != 'true'
|
|
run: |
|
|
pushd audio
|
|
if [ ! -d build ]; then
|
|
mkdir build
|
|
if [ "_${{ runner.os }}" == "_macOS" ]; then
|
|
export CMAKE_EXTRA="${CMAKE_EXTRA} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9"
|
|
fi
|
|
if [ "_${{ runner.os }}_${{ matrix.compiler.cc }}" == "_macOS_clang" ]; then
|
|
export CMAKE_EXTRA="${CMAKE_EXTRA} \
|
|
-DCMAKE_EXE_LINKER_FLAGS=-stdlib=libc++ \
|
|
-DCMAKE_MODULE_LINKER_FLAGS=-stdlib=libc++ \
|
|
-DCMAKE_SHARED_LINKER_FLAGS=-stdlib=libc++";
|
|
fi
|
|
cmake -B build -S . -G "${{ steps.generator.outputs.value }}" \
|
|
-DCMAKE_BUILD_TYPE="Debug" \
|
|
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install" \
|
|
${CMAKE_EXTRA}
|
|
fi
|
|
cmake --build build
|
|
popd
|
|
|
|
- name: Build Resvg (if enabled and not cached)
|
|
if: steps.cache-resvg && (steps.cache-resvg.outputs.cache-hit != 'true')
|
|
run: |
|
|
if [ -d "resvg/c-api" ]; then
|
|
pushd resvg/c-api
|
|
cargo build --release
|
|
popd
|
|
fi
|
|
|
|
- name: Build libopenshot
|
|
run: |
|
|
if [ "_${{ runner.os }}" == "_macOS" ]; then
|
|
export CMAKE_EXTRA="${CMAKE_EXTRA} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
|
|
-DQt5_DIR=/usr/local/opt/qt@5/lib/cmake/Qt5 \
|
|
-DENABLE_RUBY=0";
|
|
export PATH="/usr/local/opt/qt@5/bin:$PATH";
|
|
fi
|
|
if [ "_${{ runner.os }}_${{ matrix.compiler.cc }}" == "_macOS_clang" ]; then
|
|
export CMAKE_EXTRA="${CMAKE_EXTRA} \
|
|
-DCMAKE_EXE_LINKER_FLAGS=-stdlib=libc++ \
|
|
-DCMAKE_MODULE_LINKER_FLAGS=-stdlib=libc++ \
|
|
-DCMAKE_SHARED_LINKER_FLAGS=-stdlib=libc++";
|
|
fi
|
|
if [ "_${{ runner.os }}" == "_Windows" ]; then
|
|
export CMAKE_EXTRA="${CMAKE_EXTRA} \
|
|
-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
|
|
-DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld \
|
|
-DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld"
|
|
fi
|
|
mkdir build
|
|
cmake -B build -S . -G "${{ steps.generator.outputs.value }}" \
|
|
-DCMAKE_BUILD_TYPE="Debug" \
|
|
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install" \
|
|
-DOpenShotAudio_ROOT="./audio/build" \
|
|
${CMAKE_EXTRA} \
|
|
"${{ steps.coverage.outputs.value }}" \
|
|
"${{ steps.use-resvg.outputs.value }}"
|
|
cmake --build build -- VERBOSE=1
|
|
|
|
- name: Test libopenshot
|
|
run: |
|
|
cmake --build build --target coverage -- VERBOSE=1
|
|
|
|
- name: Install libopenshot
|
|
run: |
|
|
cmake --build build --target install -- VERBOSE=1
|
|
|
|
- uses: codecov/codecov-action@v3.1.0
|
|
if: ${{ steps.coverage.outputs.value }}
|
|
with:
|
|
file: build/coverage.info
|