mirror of
https://github.com/RetroShare/RetroShare.git
synced 2026-09-12 19:50:17 +05:00
ci: add Ubuntu CMake workflow building the full tree from root
Adds .github/workflows/ubuntu-cmake.yml as the CMake counterpart to the legacy qmake CI. Builds the whole super-project from the top-level CMakeLists.txt (libretroshare + gui + service + friendserver + plugins, JSON API / WebUI on) on ubuntu-22.04 / Qt5. Submodules are initialised without --remote so libretroshare stays on the pinned CMake-enabled commit; librnp is fetched recursively for src/libsexpp. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e41eb4884e
commit
8ef5f5f6cf
78
.github/workflows/ubuntu-cmake.yml
vendored
Normal file
78
.github/workflows/ubuntu-cmake.yml
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
# Ubuntu CMake CI for the RetroShare monorepo (root super-project).
|
||||
#
|
||||
# This is the CMake counterpart of the legacy qmake workflows
|
||||
# (ubuntu-qt5_c-cpp.yml / ubuntu-qt6_c-cpp.yml). It builds the WHOLE tree from
|
||||
# the top-level CMakeLists.txt: libretroshare + retroshare-gui + service +
|
||||
# friendserver + plugins, with the JSON API / WebUI enabled.
|
||||
#
|
||||
# Key difference vs the qmake CI: submodules are initialised WITHOUT --remote, so
|
||||
# libretroshare stays on the commit pinned by this super-project (a CMake-enabled
|
||||
# commit that lives on master). Using --remote would move it to the latest upstream
|
||||
# tip and could pull a non-CMake state, breaking the build.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
name: Ubuntu CMake C/C++ CI
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Ubuntu 22.04 / Qt5 / CMake
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# NOTE: no --remote here (on purpose) so the pinned, CMake-enabled commits
|
||||
# are checked out. librnp needs --recursive for its nested src/libsexpp.
|
||||
- name: Init submodules (pinned commits)
|
||||
run: |
|
||||
git submodule update --init \
|
||||
libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/
|
||||
git submodule update --init --recursive \
|
||||
supportlibs/librnp
|
||||
git submodule update --init \
|
||||
supportlibs/restbed supportlibs/libsam3 \
|
||||
supportlibs/udp-discovery-cpp supportlibs/rapidjson
|
||||
git --no-pager -C libretroshare log --max-count 1 --oneline
|
||||
|
||||
- name: apt update
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: apt install build dependencies
|
||||
run: >
|
||||
sudo apt-get install -y
|
||||
build-essential g++ cmake ninja-build pkg-config git
|
||||
qtbase5-dev qtbase5-dev-tools qtmultimedia5-dev libqt5svg5-dev
|
||||
libqt5x11extras5-dev qttools5-dev qttools5-dev-tools
|
||||
libssl-dev zlib1g-dev libbz2-dev libbotan-2-dev libjson-c-dev
|
||||
libasio-dev libsqlcipher-dev libxapian-dev
|
||||
libspeex-dev libspeexdsp-dev libminiupnpc-dev
|
||||
libx11-dev libxss-dev
|
||||
libxml2-dev libxslt1-dev libcurl4-openssl-dev
|
||||
doxygen python3
|
||||
|
||||
- name: print working directory
|
||||
run: pwd && ls -la
|
||||
|
||||
# Mirrors the validated local Linux build command.
|
||||
- name: CMake configure
|
||||
run: >
|
||||
cmake -B Build-cmake -S .
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DRS_RNPLIB=ON -DRS_JSON_API=ON -DRS_WEBUI=ON
|
||||
-DRS_GUI=ON -DRS_SERVICE=ON -DRS_FRIENDSERVER=ON
|
||||
-DRS_PLUGINS=ON -DRS_FORUM_DEEP_INDEX=ON
|
||||
-DRS_USE_I2P_SAM3=ON -DRS_BITDHT=ON -DRS_MINIUPNPC=ON
|
||||
-DRS_BRODCAST_DISCOVERY=ON -DRS_SQLCIPHER=ON
|
||||
|
||||
- name: CMake build
|
||||
run: cmake --build Build-cmake -j$(nproc)
|
||||
Loading…
Reference in New Issue
Block a user