update contrib libXext version #1942
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration on Master | |
on: | |
push: | |
paths-ignore: | |
- 'doc/**' | |
- '**/README.md' | |
branches: | |
- '**' | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
- '**/README.md' | |
branches: | |
- master | |
env: | |
SOURCE_ARTIFACT: source | |
SOURCE_ARTIFACT_DIR: source | |
jobs: | |
create-source-distribution: | |
name: Create Source Distribution | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libboost-all-dev libdb-dev libdb++-dev libevent-dev bison cmake | |
- name: Create Distribution Ta 10000 rball | |
run: | | |
./autogen.sh | |
./configure --with-incompatible-bdb ac_cv_lib_tor_tor_main=yes | |
make dist | |
- name: Download Dependencies | |
run: make -C depends download | |
- name: Create Dependencies Tarball | |
run: tar -czf depends.tar.gz depends | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $SOURCE_ARTIFACT_DIR | |
mv depends.tar.gz firo-*.tar.gz $SOURCE_ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
path: ${{ env.SOURCE_ARTIFACT_DIR }} | |
build-linux-cmake: | |
name: Build for Linux (CMake) | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: linux-cmake-binaries | |
TEST_LOG_ARTIFACT_DIR: test-logs | |
steps: | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8' | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y python3-zmq cmake build-essential | |
- name: Verify ZMQ Installation | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install pyzmq | |
- name: Download Dependencies | |
run: make -C depends download | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) | |
- name: Build Firo | |
run: | | |
mkdir build | |
export HOST_TRIPLET=$(depends/config.guess) | |
cmake -DCMAKE_TOOLCHAIN_FILE=$(realpath depends/$HOST_TRIPLET/toolchain.cmake) -DBUILD_CLI=ON -DBUILD_TESTS=ON -DBUILD_GUI=ON -S$(realpath .) -B$(realpath build) | |
cd build && make -j$(nproc) | |
- name: Run Unit Tests | |
run: | | |
cd build && make test | |
- name: Run RPC Tests | |
env: | |
TIMEOUT: 600 | |
run: | | |
cp -rf build/bin/* build/src/ | |
qa/pull-tester/rpc-tests.py -extended | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv build/bin/{firo-cli,firo-tx,firod,firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-cmake-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
- name: Prepare Test Logs for Artifact | |
if: failure() | |
run: | | |
tor_log=$(find . -path '*/tor/test-suite.log' -type f || true) | |
firo_log=$(find . -path '*/src/test-suite.log' -type f || true) | |
mkdir -p $TEST_LOG_ARTIFACT_DIR | |
if test -f $tor_log; then | |
mv $tor_log $TEST_LOG_ARTIFACT_DIR/tor.log | |
fi | |
if test -f $firo_log; then | |
mv $firo_log $TEST_LOG_ARTIFACT_DIR/firo.log | |
fi | |
- name: Upload Test Logs Artifact | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-cmake-logs | |
path: ${{ env.TEST_LOG_ARTIFACT_DIR }} | |
build-linux-autotools: | |
name: Build for Linux (Autotools) | |
needs: create-source-distribution | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: linux-autotools-binaries | |
TEST_LOG_ARTIFACT_DIR: test-logs | |
steps: | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8' | |
- name: Getting Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
path: ${{ env.SOURCE_ARTIFACT_DIR }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y python3-zmq | |
- name: Verify ZMQ Installation | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install pyzmq | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --disable-jni --enable-tests --with-comparison-tool=no --prefix=$(realpath depends/x86_64-pc-linux-gnu) | |
make -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Run Unit Tests | |
run: make check | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Run RPC Tests | |
env: | |
TIMEOUT: 600 | |
run: qa/pull-tester/rpc-tests.py -extended | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-autotools-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
- name: Prepare Test Logs for Artifact | |
if: failure() | |
run: | | |
tor_log=$SOURCE_ARTIFACT/src/tor/test-suite.log | |
firo_log=$SOURCE_ARTIFACT/src/test-suite.log | |
mkdir -p $TEST_LOG_ARTIFACT_DIR | |
if test -f $tor_log; then | |
mv $tor_log $TEST_LOG_ARTIFACT_DIR/tor.log | |
fi | |
if test -f $firo_log; then | |
mv $firo_log $TEST_LOG_ARTIFACT_DIR/firo.log | |
fi | |
- name: Upload Test Logs Artifact | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-autotools-logs | |
path: ${{ env.TEST_LOG_ARTIFACT_DIR }} | |
build-windows-autotools: | |
name: Build for Windows (Autotools) | |
needs: create-source-distribution | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: windows-autotools-binaries | |
steps: | |
- name: Getting Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
path: ${{ env.SOURCE_ARTIFACT_DIR }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 | |
- name: Switch MinGW GCC and G++ to POSIX Threading | |
run: | | |
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) HOST=x86_64-w64-mingw32 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --without-libs --disable-jni --prefix=$(realpath depends/x86_64-w64-mingw32) | |
make -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli.exe,firo-tx.exe,firod.exe,qt/firo-qt.exe} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-autotools-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
build-windows-cmake: | |
name: Build for Windows (CMake) | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: windows-cmake-binaries | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 cmake | |
- name: Switch MinGW GCC and G++ to POSIX Threading | |
run: | | |
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
- name: Download Dependencies | |
run: make -C depends download | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) HOST=x86_64-w64-mingw32 | |
- name: Build Firo | |
run: | | |
mkdir build | |
export HOST_TRIPLET=$(x86_64-w64-mingw32-gcc -dumpmachine) | |
cmake -DCMAKE_TOOLCHAIN_FILE=$(realpath depends/$HOST_TRIPLET/toolchain.cmake) -DBUILD_CLI=ON -DBUILD_TESTS=OFF -DBUILD_GUI=ON -S$(realpath .) -B$(realpath build) | |
cd build && make -j$(nproc) | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv build/bin/{firo-cli.exe,firo-tx.exe,firod.exe,firo-qt.exe} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-cmake-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
build-mac-cmake: | |
name: Build for macOS (CMake) | |
runs-on: macos-latest | |
env: | |
ARTIFACT_DIR: mac-cmake-binaries | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Use Xcode instead of Command Line Tools | |
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer | |
- name: Set NJOBS variable | |
run: | | |
NCPU=$(sysctl -n hw.ncpu) | |
JOBS=$((NCPU / 2 > 1 ? NCPU / 2 : 1)) # Use half, but at least 1 | |
echo "NJOBS=$JOBS" >> $GITHUB_ENV # Persist NJOBS across steps | |
echo "Using $JOBS jobs for parallel builds." | |
# -j$(sysctl -n hw.activecpu) fails. due to high load on macOS, and crappy github runners. | |
- name: Install Required Packages | |
run: | | |
if ! command -v pkg-config &> /dev/null; then | |
echo "pkg-config not found, installing..." | |
brew install pkg-config | |
else | |
echo "pkg-config is already installed" | |
fi | |
brew install automake coreutils python-setuptools cmake make | |
# Workaround for macOS: https://github.com/actions/runner/issues/2958 | 5BCE tr>|
- name: Install setuptools | |
run: sudo -H pip install setuptools | |
- name: Download Dependencies | |
run: make -C depends download | |
- name: Build Dependencies | |
run: | | |
make -C depends -j$NJOBS | |
- name: Build Firo | |
run: | | |
mkdir build | |
export HOST_TRIPLET=$(depends/config.guess) | |
cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/depends/$HOST_TRIPLET/toolchain.cmake -DBUILD_CLI=ON -DBUILD_TESTS=OFF -DBUILD_GUI=ON -S$(pwd) -B$(pwd)/build | |
cd build && make -j$NJOBS | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv build/bin/{firo-cli,firo-tx,firod,firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mac-cmake-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
build-mac-autotools: | |
name: Build for macOS (Autotools) | |
needs: create-source-distribution | |
runs-on: macos-latest | |
env: | |
ARTIFACT_DIR: mac-autotools-binaries | |
steps: | |
- name: Getting Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
path: ${{ env.SOURCE_ARTIFACT_DIR }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Use Xcode instead of Command Line Tools | |
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer | |
- name: Install Required Packages | |
run: | | |
if ! command -v pkg-config &> /dev/null; then | |
echo "pkg-config not found, installing..." | |
brew install pkg-config | |
else | |
echo "pkg-config is already installed" | |
fi | |
brew install automake coreutils python-setuptools | |
# Workaround for macOS: https://github.com/actions/runner/issues/2958 | |
- name: Install setuptools | |
run: sudo -H pip install setuptools | |
- name: Build Dependencies | |
run: make -C depends -j$(sysctl -n hw.activecpu) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --prefix=`pwd`/depends/`depends/config.guess` | |
make -j$(sysctl -n hw.activecpu) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mac-autotools-binaries | |
path: ${{ env.ARTIFACT_DIR }} |