mirror of
https://github.com/ggerganov/ggwave.git
synced 2026-02-06 16:47:59 +08:00
* Add simple Debian package * Update CI configuration * Add cpack Deb package for libggwave-dev * Add `make deb` top level target and CI job * Ensure `make deb` packages are deterministic Update CMakeLists.txt to make cpack generated Debian packages deterministic build outputs by: - Setting SOURCE_DATE_EPOCH to 0 - Executing `git log -1 --pretty=%ct` and storing the result in SOURCE_DATE_EPOCH, overriding 0 - Export SOURCE_DATE_EPOCH to the environment - Explicitly prefix the execution of the cpack command in the custom target `deb_c_library` with SOURCE_DATE_EPOCH Update `README.md-tmpl.md` and `README.md` to document new `make deb` target. The Makefile for the Python bindings already handle deterministic building with the same strategy. * libc6, not libc
296 lines
8.2 KiB
YAML
296 lines
8.2 KiB
YAML
name: CI
|
|
on: [push]
|
|
|
|
jobs:
|
|
|
|
ubuntu-24_04-python3-ggwave-deb:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install cython3 build-essential debhelper-compat
|
|
sudo apt install dh-python python3-all-dev python3-build
|
|
sudo apt install python3-cogapp python3-venv
|
|
|
|
- name: Build Debian package for Python bindings
|
|
run: |
|
|
cd bindings/python
|
|
make deb
|
|
|
|
ubuntu-24_04-libggwave-dev-deb:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential
|
|
|
|
- name: Build Debian package for libggwave
|
|
run: |
|
|
cmake . -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
make
|
|
cpack
|
|
|
|
- name: Inspect generated Debian package
|
|
run: |
|
|
dpkg --contents dist/libggwave-dev_*.deb
|
|
dpkg -I dist/libggwave-dev_*.deb
|
|
sha256sum dist/libggwave-dev_*.deb
|
|
|
|
ubuntu-24_04-target-deb:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install cython3 build-essential debhelper-compat
|
|
sudo apt install dh-python python3-all-dev python3-build
|
|
sudo apt install python3-cogapp python3-venv
|
|
|
|
- name: Build Debian packages
|
|
run: |
|
|
cmake . -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
make deb
|
|
|
|
- name: Inspect generated Debian packages
|
|
run: |
|
|
dpkg --contents dist/libggwave*.deb
|
|
dpkg -I dist/libggwave*.deb
|
|
dpkg --contents dist/python3*.deb
|
|
dpkg -I dist/python3*.deb
|
|
sha256sum dist/*.deb
|
|
|
|
ubuntu-24_04-gcc:
|
|
runs-on: ubuntu-24.04
|
|
|
|
strategy:
|
|
matrix:
|
|
build: [Debug, Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential xorg-dev libglu1-mesa-dev
|
|
sudo apt install cmake
|
|
sudo apt install libsdl2-dev
|
|
|
|
- name: Configure
|
|
run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
- name: Build
|
|
run: |
|
|
make
|
|
ctest --output-on-failure
|
|
./bin/test-ggwave-cpp --full
|
|
|
|
ubuntu-24_04-python:
|
|
runs-on: ubuntu-24.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build: [Release]
|
|
python-version: [3.8.18, 3.9.20, 3.11.11, 3.12.9]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential
|
|
sudo apt install cmake
|
|
python3 -m venv venv
|
|
source venv/bin/activate && pip install setuptools cython cogapp
|
|
|
|
- name: Configure
|
|
run: cmake . -DGGWAVE_SUPPORT_PYTHON=ON -DGGWAVE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
- name: Build
|
|
run: |
|
|
source venv/bin/activate
|
|
make
|
|
ctest --output-on-failure
|
|
|
|
ubuntu-24_04-gcc-sanitized:
|
|
runs-on: ubuntu-24.04
|
|
|
|
strategy:
|
|
matrix:
|
|
sanitizer: [ADDRESS, THREAD, UNDEFINED]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential
|
|
sudo apt install cmake
|
|
|
|
- name: Configure
|
|
run: cmake . -DCMAKE_BUILD_TYPE=Debug -DGGWAVE_BUILD_EXAMPLES=OFF -DGGWAVE_SANITIZE_${{ matrix.sanitizer }}=ON
|
|
|
|
- name: Build
|
|
run: |
|
|
make
|
|
ctest --output-on-failure
|
|
|
|
ubuntu-24_04-clang:
|
|
runs-on: ubuntu-24.04
|
|
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential xorg-dev libglu1-mesa-dev
|
|
sudo apt install cmake
|
|
sudo apt install libsdl2-dev
|
|
|
|
- name: Configure
|
|
run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
|
|
|
|
- name: Build
|
|
run: |
|
|
make
|
|
ctest --output-on-failure
|
|
|
|
macOS-latest:
|
|
runs-on: macOS-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
brew update
|
|
brew install sdl2
|
|
|
|
- name: Configure
|
|
run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
- name: Build
|
|
run: |
|
|
make
|
|
ctest --output-on-failure
|
|
|
|
emscripten:
|
|
runs-on: ubuntu-24.04
|
|
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
run: |
|
|
wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz
|
|
tar -xvf master.tar.gz
|
|
emsdk-master/emsdk update
|
|
emsdk-master/emsdk install latest
|
|
emsdk-master/emsdk activate latest
|
|
|
|
- name: Configure
|
|
run: echo "tmp"
|
|
|
|
- name: Build
|
|
run: |
|
|
pushd emsdk-master
|
|
source ./emsdk_env.sh
|
|
popd
|
|
emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
make && ctest --output-on-failure
|
|
|
|
windows-msys2:
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
strategy:
|
|
matrix:
|
|
build: [Release]
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Dependencies
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: MINGW64
|
|
update: true
|
|
install: make mingw-w64-x86_64-cmake mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake
|
|
|
|
- name: Configure
|
|
run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -G "Unix Makefiles"
|
|
|
|
- name: Build
|
|
run: |
|
|
ls -alh .
|
|
make
|
|
ctest --output-on-failure
|