Skip to content

Build

Build #155

Workflow file for this run

name: Build
on:
workflow_dispatch: # manually trigger
workflow_call:
permissions:
contents: write
jobs:
#########################################################Extract Version######################################################
extract_version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.extract.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract version
id: extract
run: |
VERSION="$(sed -n 's/.*BQ_LOG_VERSION *= *"\(.*\)".*/\1/p' src/bq_log/global/version.cpp | head -n1)"
if [[ -z "$VERSION" ]]; then
echo "Failed to extract version"
exit 1
fi
echo "VERSION=$VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT
#########################################################Common Libs Build####################################################
#Windows
build_windows_x86_64_lib_MSVC:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat native msvc YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_windows_x86_64_lib_Clang:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat native clang YES NO
build_windows_x86_64_lib_MinGW:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java (JDK 11)
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Install MSYS2 (CLANG64)
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
release: true
path-type: inherit
install: >-
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-ninja
- name: Remove conflicting MinGW paths
shell: powershell
run: |
$env:Path = $env:Path -replace 'C:\\mingw64\\bin;','' -replace 'C:\\Program Files\\Git\\mingw64\\bin;',''
echo "PATH=$env:Path" >> $env:GITHUB_ENV
- name: Add MSYS2 CLANG64 to PATH
shell: powershell
run: |
$bin = "${{ steps.msys2.outputs.msys2-location }}\clang64\bin"
echo $bin
echo $bin >> $env:GITHUB_PATH
- name: Toolchain check
shell: powershell
run: |
clang --version
ninja --version
where clang
where ninja
cmake --version
- name: Build (x64)
shell: cmd
run: |
cd build\lib\win64
call build_all_and_pack.bat native mingw YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_mingw_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_windows_x86_64_tools:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build Tools
run: |
cd build\tools\win64
.\build_all_and_pack.bat
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_windows_arm64_lib_MSVC:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat arm64 msvc YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_windows_arm64_lib_Clang:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat arm64 clang YES NO
build_windows_arm64_lib_MinGW:
runs-on: windows-11-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java (JDK 21)
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'adopt'
- name: Install MSYS2 (CLANGARM64)
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
update: true
release: true
path-type: inherit
install: >-
mingw-w64-clang-aarch64-toolchain
mingw-w64-clang-aarch64-ninja
- name: Remove conflicting MinGW paths
shell: powershell
run: |
$env:Path = $env:Path -replace 'C:\\mingw64\\bin;','' -replace 'C:\\Program Files\\Git\\mingw64\\bin;',''
echo "PATH=$env:Path" >> $env:GITHUB_ENV
- name: Add MSYS2 CLANG ARM64 to PATH
shell: powershell
run: |
$bin = "${{ steps.msys2.outputs.msys2-location }}\clangarm64\bin"
echo $bin
echo $bin >> $env:GITHUB_PATH
- name: Toolchain check
shell: powershell
run: |
clang --version
ninja --version
where clang
where ninja
cmake --version
- name: Build (ARM64)
shell: cmd
run: |
cd build\lib\win64
call build_all_and_pack.bat native mingw YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_mingw_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_windows_arm64_tools:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build Tools
run: |
cd build\tools\win64
.\build_all_and_pack.bat arm64
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: windows_arm64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#Android
build_windows_android:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Set up Android SDK (with NDK)
id: setup-android
uses: android-actions/setup-android@v3
- name: Set up NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r28c
local-cache: false
- name: Build for Windows Android
run: |
cd build\lib\android
.\win_build_all_and_pack.bat
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
build_mac_android:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Set up Android SDK (with NDK)
id: setup-android
uses: android-actions/setup-android@v3
- name: Set up NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r28c
local-cache: false
- name: Build for Mac Android
run: |
cd build/lib/android
chmod +x *.sh
./mac_build_all_and_pack.sh
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
build_linux_android:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Set up Android SDK (with NDK)
id: setup-android
uses: android-actions/setup-android@v3
- name: Set up NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r28c
local-cache: false
- name: Build for Linux Android
run: |
cd build/lib/android
chmod +x ./*.sh
./linux_build_all_and_pack.sh
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: android_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#Linux-ubuntu-x86_64
build_ubuntu_x86_64_lib_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_ubuntu_x86_64_lib_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES NO
build_ubuntu_x86_64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_ubuntu_x86_64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_gcc.sh
#Linux-ubuntu-arm64
build_ubuntu_arm64_lib_Clang:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_ubuntu_arm64_lib_GCC:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES NO
build_ubuntu_arm64_tools_Clang:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_arm64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_ubuntu_arm64_tools_GCC:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Linux
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_gcc.sh
#Linux-debian-x86
build_debian_x86_lib_Clang:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Build for Debian 32
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_x86_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_debian_x86_lib_GCC:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Build for Debian 32
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES NO
build_debian_x86_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Build for Debian 32
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: linux_x86_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_debian_x86_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Build for Debian 32
run: |
cd build/tools/linux
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack_gcc.sh
#Mac
build_mac_lib:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build for Mac
run: |
cd build/lib/mac
chmod +x *.sh
./build_all_and_pack.sh YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: macos_universal_binary_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_mac_tools:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build for Mac
run: |
cd build/tools/mac
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
./build_all_and_pack.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: macos_universal_binary_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#freebsd_x86_64
build_freebsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: freebsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_freebsd_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native gcc YES NO
build_freebsd_x86_64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: freebsd_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_freebsd_x86_64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack_gcc.sh
#freebsd_arm64
build_freebsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: freebsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_freebsd_arm64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native gcc YES NO
build_freebsd_arm64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: freebsd_arm64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_freebsd_arm64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack_gcc.sh
#openbsd_x86_64
build_openbsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSD
uses: vmactions/openbsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
run: |
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: openbsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_openbsd_x86_64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSD
uses: vmactions/openbsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
run: |
set -e -x
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: openbsd_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#openbsd_arm64
build_openbsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSD
uses: vmactions/openbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
run: |
set -e -x
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: openbsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_openbsd_arm64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSD
uses: vmactions/openbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
run: |
set -e -x
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
cd build/tools/unix_like
chmod +x category_log_generator/*.sh
chmod +x log_decoder/*.sh
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: openbsd_arm64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
# solaris_x86_64
build_solaris_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in Solaris (GCC)
id: RunInSolarisGcc
uses: vmactions/solaris-vm@v1
with:
usesh: true
mem: 8192
release: "11.4-gcc"
prepare: |
pkg publisher
pkg install -v --accept \
developer/build/cmake \
developer/build/gnu-make \
developer/debug/gdb \
developer/gcc-14 \
shell/bash
pkgutil -U || true
pkgutil -y -i jdk8 || {
echo "CSWjdk8 not available in this catalog; Java will be optional." >&2
}
run: |
set -e -x
JAVA_HOME=""
for d in /opt/csw/java/jdk1.8*; do
if [ -x "$d/bin/java" ] && [ -f "$d/include/jni.h" ]; then
JAVA_HOME="$d"
break
fi
done
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ] && [ -f "$JAVA_HOME/include/jni.h" ]; then
export JAVA_HOME
PATH="$JAVA_HOME/bin:$PATH"; export PATH
java -version
echo "JAVA_HOME=$JAVA_HOME"
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
else
echo "No JDK8 with JNI headers found (jni.h not present)."
# exit 1
fi
ls "$JAVA_HOME"
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=solaris
./build_all_and_pack.sh native gcc YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: solaris_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_solaris_x86_64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in Solaris (GCC)
id: RunInSolarisToolsGcc
uses: vmactions/solaris-vm@v1
with:
usesh: true
mem: 8192
release: "11.4-gcc"
prepare: |
pkg install -v --accept \
developer/build/cmake \
developer/build/gnu-make \
developer/debug/gdb \
developer/gcc-14 \
shell/bash
run: |
set -e -x
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=solaris
./build_all_and_pack_gcc.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: solaris_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
# DragonFlyBSD
build_dragonflybsd_x86_64_libs_clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDLibs
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm
run: |
set -e -x
# Java
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: dragonflybsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_dragonflybsd_x86_64_libs_gcc:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDLibs
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm
run: |
set -e -x
# Java
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack.sh native gcc YES NO
build_dragonflybsd_x86_64_tools_clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDTools
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm
run: |
set -e -x
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: dragonflybsd_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_dragonflybsd_x86_64_tools_gcc:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDTools
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm
run: |
set -e -x
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack_gcc.sh
# OmniOS
build_omnios_x86_64_libs_gcc:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OmniOS (GCC only)
id: RunInOmniOSLibs
uses: vmactions/omnios-vm@v1
with:
usesh: true
mem: 8192
prepare: |
set -e
pkg refresh --full
if ! pkg publisher | grep -q '^extra\.omnios'; then
REL="$(uname -v | sed -n 's/.*\(r[0-9][0-9]*\).*/\1/p')"
[ -n "$REL" ] || REL="r151054"
pkg set-publisher -g "https://pkg.omnios.org/${REL}/extra" extra.omnios || true
pkg refresh --full
fi
pkg install -v --accept shell/bash developer/build/gnu-make || true
pkg install -v --accept ooce/developer/cmake
pkg install -v --accept developer/gcc13
pkg install -v --accept runtime/java/openjdk11
run: |
set -e -x
export PATH="/opt/gcc-13/bin:$PATH"
export JAVA_HOME="/usr/jdk/instances/openjdk11.0"
ls -l "$JAVA_HOME"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
command -v gcc >/dev/null 2>&1 || { echo "gcc not found; ensure gcc installed"; exit 1; }
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH INCLUDE
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=omnios
./build_all_and_pack.sh native gcc YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: omnios_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_omnios_x86_64_tools_gcc:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OmniOS (GCC only)
id: RunInOmniOSTools
uses: vmactions/omnios-vm@v1
with:
usesh: true
mem: 8192
prepare: |
set -e
pkg refresh --full
if ! pkg publisher | grep -q '^extra\.omnios'; then
REL="$(uname -v | sed -n 's/.*\(r[0-9][0-9]*\).*/\1/p')"
[ -n "$REL" ] || REL="r151054"
pkg set-publisher -g "https://pkg.omnios.org/${REL}/extra" extra.omnios || true
pkg refresh --full
fi
pkg install -v --accept shell/bash developer/build/gnu-make || true
pkg install -v --accept ooce/developer/cmake
pkg install -v --accept developer/gcc13
pkg install -v --accept runtime/java/openjdk11
run: |
set -e -x
export PATH="/opt/gcc-13/bin:$PATH"
export JAVA_HOME="/usr/jdk/instances/openjdk11.0"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
command -v gcc >/dev/null 2>&1 || { echo "gcc not found; ensure ooce/gcc-13/12/11 installed"; exit 1; }
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH INCLUDE
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=omnios
./build_all_and_pack_gcc.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: omnios_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
# netbsd_x86_64
build_netbsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
# Use Clang (NetBSD base provides clang)
export CC=clang CXX=clang++
clang --version || true
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: netbsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_netbsd_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native gcc YES NO
build_netbsd_x86_64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
export CC=clang CXX=clang++
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: netbsd_x86_64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_netbsd_x86_64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack_gcc.sh
# netbsd_arm64 (aarch64)
build_netbsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
export CC=clang CXX=clang++
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native clang YES NO
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: netbsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_netbsd_arm64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native gcc YES NO
build_netbsd_arm64_tools_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
export CC=clang CXX=clang++
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack_clang.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: netbsd_arm64_tools_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
build_netbsd_arm64_tools_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
# aarch64
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/tools/unix_like
[ -d category_log_generator ] && chmod +x category_log_generator/*.sh
[ -d log_decoder ] && chmod +x log_decoder/*.sh
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack_gcc.sh
#iOS
build_ios_lib:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build for Mac
run: |
cd build/lib/ios
chmod +x *.sh
./build_all_and_pack.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ios_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#HarmonyOS
build_harmony_os_on_mac:
runs-on: macos-latest
needs: extract_version
env:
REPO: pippocao/Images
TAG: OHOS_Mac_Arm64_CommandLineTool_6.0.0
ZIP_NAME: commandline-tools-mac-arm64-6.0.0.858.zip
TOOL_NAME: ohos-commandline-tools
TOOL_VERSION: 6.0.0.858
INSTALL_DIR: ${{ github.workspace }}/.toolcache/ohos/commandline-tools/6.0.0.858
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Restore extracted dir cache
id: cache-restore
uses: actions/cache/restore@v4
with:
path: ${{ env.INSTALL_DIR }}
key: macos-arm64-${{ env.TOOL_NAME }}-${{ env.TOOL_VERSION }}
- name: Download from Release when cache miss
if: steps.cache-restore.outputs.cache-hit != 'true'
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euxo pipefail
mkdir -p "${RUNNER_TEMP}"
gh release download "${TAG}" \
--repo "${REPO}" \
--pattern "${ZIP_NAME}" \
--dir "${RUNNER_TEMP}"
ls -lh "${RUNNER_TEMP}"
- name: Extract when cache miss
if: steps.cache-restore.outputs.cache-hit != 'true'
run: |
set -euxo pipefail
mkdir -p "${INSTALL_DIR}"
unzip -q "${RUNNER_TEMP}/${ZIP_NAME}" -d "${INSTALL_DIR}"
/usr/bin/find "${INSTALL_DIR}" -maxdepth 2 -mindepth 1 -print
- name: Build for Mac
run: |
export PATH="${INSTALL_DIR}/command-line-tools/bin:${PATH}"
export OHOS_SDK="${INSTALL_DIR}/command-line-tools/sdk/default/openharmony"
cd build/lib/ohos
chmod +x *.sh
./mac_build_all_and_pack.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: harmony_os_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#Java wrapper
build_windows_java11_wrapper:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Build for Java
run: |
cd build\wrapper\java
.\build_all_and_pack.bat
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: java_wrapper_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#C# wrapper
build_windows_csharp_wrapper:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install and Pack
run: |
robocopy ".\wrapper\csharp" ".\install\wrapper\csharp" /E /R:0 /W:0
robocopy ".\docs" ".\install\docs" /E /R:0 /W:0
robocopy ".\" ".\install" *.md /R:0 /W:0
cd .\build\wrapper\csharp\
mkdir -p pack
cd pack
cmake ../../../../pack -G "Unix Makefiles" -DTARGET_PLATFORM:STRING=all -DPACKAGE_NAME:STRING=bqlog-c#-wrapper
cmake --build . --config Release --target package
cd ..
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: c#_wrapper_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#########################################################NodeJS Build####################################################
#Windows
nodejs_build_windows_x86_64_lib_MSVC:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
npx node-gyp install
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat native msvc YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_windows_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_windows_x86_64_lib_Clang:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
npx node-gyp install
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat native clang YES YES
nodejs_build_windows_arm64_lib_MSVC:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
npx node-gyp install --arch=arm64
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat arm64 msvc YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_windows_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_windows_arm64_lib_Clang:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
npx node-gyp install --arch=arm64
- name: Build for Windows
run: |
cd build\lib\win64
.\build_all_and_pack.bat arm64 clang YES YES
#Linux-ubuntu-x86_64
nodejs_build_ubuntu_x86_64_lib_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_linux_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#Linux-ubuntu-x86_64
nodejs_build_ubuntu_x86_64_lib_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES YES
#Linux-ubuntu-arm64
nodejs_build_ubuntu_arm64_lib_Clang:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_linux_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_ubuntu_arm64_lib_GCC:
runs-on: ubuntu-24.04-arm
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
- name: Build for Linux
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES YES
#Linux-debian-x86
nodejs_build_debian_x86_lib_Clang:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Install Node.js and node-api-headers (Debian i386)
run: |
apt-get update
apt-get install -y nodejs npm
npm install node-api-headers
- name: Build for Debian 32
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_linux_x86_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_debian_x86_lib_GCC:
runs-on: ubuntu-latest
needs: extract_version
container:
image: ghcr.io/pippocao/bqlog/i386_debian:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Enable UTF-8 locale
run: |
apt-get update
apt-get install -y locales
sed -i 's/# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/# *zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=en_US.UTF-8
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "LC_ALL=en_US.UTF-8" >> $GITHUB_ENV
echo "LANGUAGE=en_US:en" >> $GITHUB_ENV
locale
- name: Install necessary tools (gcc and clang)
run: |
apt-get update
apt-get install -y gcc clang g++ make cmake gdb
apt-get install -y software-properties-common
apt-get update
apt-get install -y openjdk-17-jdk
apt-get install -y openssh-client
- name: Set up Java
run: |
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386" >> $GITHUB_ENV
- name: Install Node.js and node-api-headers (Debian i386)
run: |
apt-get update
apt-get install -y nodejs npm
npm install node-api-headers
- name: Build for Debian 32
run: |
cd build/lib/linux
chmod +x *.sh
./build_all_and_pack.sh native gcc YES YES
#Mac
nodejs_build_mac_lib:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
- name: Install node-api-headers
run: |
npm install node-api-headers
- name: Build for Mac
run: |
cd build/lib/mac
chmod +x *.sh
./build_all_and_pack.sh YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_macos_universal_binary_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#freebsd_x86_64
nodejs_build_freebsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc node
pkg install -y npm-node22 || pkg install -y npm-node20 || pkg install -y npm
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
# Install node-api-headers at repo root before build
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_freebsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
#freebsd_x86_64
nodejs_build_freebsd_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSD
uses: vmactions/freebsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc node
pkg install -y npm-node22 || pkg install -y npm-node20 || pkg install -y npm
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
# Install node-api-headers at repo root before build
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native gcc YES YES
nodejs_build_freebsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSDArmClang
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc node
pkg install -y npm-node22 || pkg install -y npm-node20 || pkg install -y npm
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_freebsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_freebsd_arm64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in FreeBSD
id: RunInFreeBSDArmGcc
uses: vmactions/freebsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg install -y llvm cmake bash openjdk11 gdb gcc node
pkg install -y npm-node22 || pkg install -y npm-node20 || pkg install -y npm
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=freebsd
./build_all_and_pack.sh native gcc YES YES
nodejs_build_openbsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSDLibsClang
uses: vmactions/openbsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
pkg_add node || pkg_add node-22.* || pkg_add node-20.* || pkg_add node-18.*
run: |
set -e -x
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_openbsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_openbsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OpenBSD
id: RunInOpenBSDArmLibsClang
uses: vmactions/openbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
prepare: |
pkg_add cmake bash jdk%11
pkg_add node || pkg_add node-22.* || pkg_add node-20.* || pkg_add node-18.*
run: |
set -e -x
test -x /usr/local/jdk-11/bin/java || { echo "java not found; did you pkg_add jdk%11?"; exit 1; }
export JAVA_HOME="/usr/local/jdk-11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
npm install node-api-headers
cd build/lib/unix_like
chmod +x *.sh
ls -l
export BQ_UNIX_VERSION=openbsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_openbsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_solaris_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in Solaris (GCC)
id: RunInSolarisGccNode
uses: vmactions/solaris-vm@v1
with:
usesh: true
mem: 8192
release: "11.4-gcc"
prepare: |
set -e
pkg publisher
pkg install -v --accept \
developer/build/cmake \
developer/build/gnu-make \
developer/debug/gdb \
developer/gcc-14 \
shell/bash
if ! command -v pkgutil >/dev/null 2>&1; then
echo "Bootstrapping OpenCSW pkgutil..."
pkgadd -n -d http://get.opencsw.org/now CSWpkgutil || true
fi
if [ -x /opt/csw/bin/pkgutil ]; then
/opt/csw/bin/pkgutil -U || true
/opt/csw/bin/pkgutil -y -i jdk8 || {
echo "CSWjdk8 not available in OpenCSW; Java will be optional." >&2
}
else
echo "pkgutil not found; skipping OpenCSW packages." >&2
fi
pkg search -r jdk
pkg search -r nodejs
pkg install runtime/nodejs
run: |
set -e -x
PATH="/opt/csw/bin:$PATH"; export PATH
JAVA_HOME=""; export JAVA_HOME
for d in /opt/csw/java/jdk1.8*; do
if [ -x "$d/bin/java" ] && [ -f "$d/include/jni.h" ]; then
JAVA_HOME="$d"
break
fi
done
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ] && [ -f "$JAVA_HOME/include/jni.h" ]; then
export JAVA_HOME
PATH="$JAVA_HOME/bin:$PATH"; export PATH
java -version
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
else
echo "No JDK8 with JNI headers found (jni.h not present)."
fi
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
node -v
npm -v
npm config set strict-ssl false
npm install node-api-headers
ls "$JAVA_HOME" || true
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=solaris
./build_all_and_pack.sh native gcc YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_solaris_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_omnios_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in OmniOS (GCC only)
id: RunInOmniOSLibsNode
uses: vmactions/omnios-vm@v1
with:
usesh: true
mem: 8192
prepare: |
set -e
pkg refresh --full
if ! pkg publisher | grep -q '^extra\.omnios'; then
REL="$(uname -v | sed -n 's/.*\(r[0-9][0-9]*\).*/\1/p')"
[ -n "$REL" ] || REL="r151054"
pkg set-publisher -g "https://pkg.omnios.org/${REL}/extra" extra.omnios || true
pkg refresh --full
fi
pkg install -v --accept shell/bash developer/build/gnu-make || true
pkg install -v --accept ooce/developer/cmake
pkg install -v --accept developer/gcc13
pkg install -v --accept runtime/java/openjdk11
pkg install -v --accept ooce/runtime/node-22
run: |
set -e -x
export PATH="/opt/gcc-13/bin:$PATH"
export JAVA_HOME="/usr/jdk/instances/openjdk11.0"
ls -l "$JAVA_HOME"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
npm install node-api-headers
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH INCLUDE
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=omnios
./build_all_and_pack.sh native gcc YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_omnios_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_dragonflybsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDLibsClang
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm node20 npm-node20
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
npm install node-api-headers
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_dragonflybsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_dragonflybsd_x86_64_libs_gcc:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in DragonFlyBSD
id: RunInDragonFlyBSDLibsGcc
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
mem: 8192
prepare: |
pkg install -y cmake bash gmake gdb openjdk11 gcc llvm node20 npm-node20
run: |
set -e -x
pkg info -l openjdk11 | grep 'bin/java'
export JAVA_HOME="/usr/local/openjdk11"
export PATH="$JAVA_HOME/bin:$PATH"
java -version
npm install node-api-headers
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=dragonflybsd
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export MM_CHARSET=UTF-8
./build_all_and_pack.sh native gcc YES YES
nodejs_build_netbsd_x86_64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
pkgin -y install nodejs npm || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
npm install node-api-headers
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
export CC=clang CXX=clang++
clang --version || true
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_netbsd_x86_64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_netbsd_x86_64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, x86_64)
uses: vmactions/netbsd-vm@v1
with:
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
pkgin -y install nodejs npm || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
npm install node-api-headers
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native gcc YES YES
nodejs_build_netbsd_arm64_libs_Clang:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (Clang, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
pkgin -y install nodejs npm || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
npm install node-api-headers
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
export CC=clang CXX=clang++
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native clang YES YES
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: tmp_node_netbsd_arm64_libs_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
nodejs_build_netbsd_arm64_libs_GCC:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run in NetBSD (GCC, arm64)
uses: vmactions/netbsd-vm@v1
with:
arch: aarch64
usesh: true
mem: 8192
release: "10.1"
prepare: |
set -e
export PATH="/usr/sbin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:$PATH"
/usr/sbin/pkg_add -v pkgin || true
pkgin -y update || true
pkgin -y install cmake gmake bash gdb || true
pkgin -y install clang || true
pkgin -y install gcc12 || pkgin -y install gcc13 || pkgin -y install gcc10 || true
ARCH="$(uname -m)"
URLS=""
case "$ARCH" in
amd64|x86_64)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/amd64/binary/sets/xbase.tar.xz"
;;
aarch64|arm64|evbarm)
URLS="https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.1/evbarm-aarch64/binary/sets/xbase.tar.xz"
;;
*)
echo "Unknown arch $ARCH; please set xbase URL manually" >&2
exit 1
;;
esac
fetched=0
for u in $URLS; do
echo "Fetching $u"
if /usr/bin/ftp -o /tmp/xbase.tar.xz "$u"; then
tar -xJpf /tmp/xbase.tar.xz -C /
fetched=1
break
fi
done
if [ "$fetched" -ne 1 ]; then
echo "Failed to fetch/extract xbase.tar.xz (tried: $URLS)" >&2
exit 1
fi
ls /usr/X11R7/lib/libX11.so.* >/dev/null 2>&1 || { echo "xbase extracted but libX11 missing"; exit 1; }
pkgin -y install openjdk17 || true
pkgin -y install nodejs npm || true
run: |
set -e -x
export JAVA_HOME="/usr/pkg/java/openjdk17"
export PATH="$JAVA_HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:$PATH"
java -version
command -v node >/dev/null 2>&1 || { echo "Node.js not found" >&2; exit 1; }
npm install node-api-headers
echo "JAVA_HOME=${JAVA_HOME:-}" >> "$GITHUB_ENV"
echo "PATH=$PATH" >> "$GITHUB_ENV"
cd build/lib/unix_like
chmod +x *.sh 2>/dev/null || true
ls -l
export BQ_UNIX_VERSION=netbsd
./build_all_and_pack.sh native gcc YES YES
nodejs_collect_and_stage_prebuilds:
runs-on: ubuntu-latest
needs:
- extract_version
- nodejs_build_windows_x86_64_lib_MSVC
- nodejs_build_windows_arm64_lib_MSVC
- nodejs_build_ubuntu_x86_64_lib_Clang
- nodejs_build_ubuntu_arm64_lib_Clang
- nodejs_build_debian_x86_lib_Clang
- nodejs_build_mac_lib
- nodejs_build_freebsd_x86_64_libs_Clang
- nodejs_build_freebsd_arm64_libs_Clang
- nodejs_build_openbsd_x86_64_libs_Clang
- nodejs_build_openbsd_arm64_libs_Clang
- nodejs_build_solaris_x86_64_libs_GCC
- nodejs_build_omnios_x86_64_libs_GCC
- nodejs_build_dragonflybsd_x86_64_libs_Clang
- nodejs_build_netbsd_x86_64_libs_Clang
- nodejs_build_netbsd_arm64_libs_Clang
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download all artifacts from native builds
uses: actions/download-artifact@v4
with:
pattern: tmp_node_*
merge-multiple: false
path: downloaded_artifacts
- name: List all archives
shell: bash
run: |
set -euo pipefail
ls -l downloaded_artifacts
- name: Prepare tools
run: |
sudo apt-get update
sudo apt-get install -y unzip
- name: Stage RelWithDebInfo BqLog.node (+pdb) into wrapper/typescript/prebuilds
shell: bash
run: |
set -euo pipefail
TS_DIR="wrapper/typescript"
PREBUILDS_DIR="$TS_DIR/prebuilds"
mkdir -p "$PREBUILDS_DIR"
map_target() {
# Map archive folder name to prebuilds/<plat-arch>
# Input: archive base name (e.g., PACKAGE-windows-x86_64-1.2.3)
local name="$1"
local lowered="${name,,}"
if [[ "$lowered" == *macos*universal* ]]; then
echo "darwin-universal" # special marker, handled later (copy to two dirs)
elif [[ "$lowered" == *windows*arm64* ]]; then
echo "win32-arm64"
elif [[ "$lowered" == *windows* ]]; then
# default windows x64
echo "win32-x64"
elif [[ "$lowered" == *freebsd*arm64* ]]; then
echo "freebsd-arm64"
elif [[ "$lowered" == *freebsd* ]]; then
echo "freebsd-x64"
elif [[ "$lowered" == *openbsd*arm64* ]]; then
echo "openbsd-arm64"
elif [[ "$lowered" == *openbsd* ]]; then
echo "openbsd-x64"
elif [[ "$lowered" == *netbsd*arm64* ]]; then
echo "netbsd-arm64"
elif [[ "$lowered" == *netbsd* ]]; then
echo "netbsd-x64"
elif [[ "$lowered" == *dragonfly* ]]; then
echo "dragonfly-x64"
elif [[ "$lowered" == *omnios* || "$lowered" == *solaris* || "$lowered" == *sunos* ]]; then
echo "sunos-x64"
elif [[ "$lowered" == *linux*arm64* ]]; then
echo "linux-arm64"
elif [[ "$lowered" == *linux*x86_64* || "$lowered" == *linux*amd64* ]]; then
echo "linux-x64"
elif [[ "$lowered" == *linux*x86* || "$lowered" == *debian*x86* || "$lowered" == *i386* ]]; then
echo "linux-ia32"
else
# Fallback unknown
echo ""
fi
}
copied_any=0
shopt -s globstar nullglob
for d in downloaded_artifacts/*/*; do
base="$(basename "$d")"
target="$(map_target "$base")"
if [[ -z "$target" ]]; then
echo "Skip: cannot determine prebuild target for $base"
continue
fi
# Find RelWithDebInfo/BqLog.node
mapfile -t nodes < <(find "$d" -type f -path "*/RelWithDebInfo/*" -name "BqLog.node" 2>/dev/null || true)
if (( ${#nodes[@]} == 0 )); then
echo "No RelWithDebInfo/BqLog.node found in $base, skipping."
continue
fi
# Prefer the first match
node_src="${nodes[0]}"
echo "::group::Stage from $base -> $target"
if [[ "$target" == "darwin-universal" ]]; then
for tdir in "darwin-x64" "darwin-arm64"; do
mkdir -p "$PREBUILDS_DIR/$tdir"
cp -f "$node_src" "$PREBUILDS_DIR/$tdir/BqLog.node"
done
else
mkdir -p "$PREBUILDS_DIR/$target"
cp -f "$node_src" "$PREBUILDS_DIR/$target/BqLog.node"
# Optional PDB (Windows builds)
pdb="$(dirname "$node_src")/BqLog.pdb"
if [[ -f "$pdb" ]]; then
cp -f "$pdb" "$PREBUILDS_DIR/$target/BqLog.pdb"
fi
fi
echo "::endgroup::"
copied_any=1
done
if [[ "$copied_any" -ne 1 ]]; then
echo "Error: No prebuilds were staged."
exit 1
fi
- name: List staged prebuilds
run: |
find wrapper/typescript/prebuilds -maxdepth 2 -type f -print | sort
- name: Build NPM
run: |
cd build/wrapper/nodejs
chmod +x *.sh
./build_all_and_pack.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: nodejs_npm_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
- name: Delete intermediate artifacts
uses: geekyeggo/delete-artifact@v5
with:
name: tmp_node_*
failOnError: false
# Unreal plugin
unreal_plugin_build_on_linux:
runs-on: ubuntu-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: build plugin
run: |
cd build/plugin/unreal
chmod +x *.sh
./linux_build_all_and_pack.sh
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: unreal_plugin_sources_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
unreal_plugin_build_on_win64:
runs-on: windows-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: build plugin
run: |
cd build\plugin\unreal
.\win_build_all_and_pack.bat
unreal_plugin_build_on_mac:
runs-on: macos-latest
needs: extract_version
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: build plugin
run: |
cd build/plugin/unreal
chmod +x *.sh
./mac_build_all_and_pack.sh
unreal_plugin_pack_prebuilt:
runs-on: ubuntu-latest
needs:
- extract_version
- build_windows_x86_64_lib_MSVC
- build_windows_arm64_lib_MSVC
- build_ubuntu_x86_64_lib_Clang
- build_ubuntu_arm64_lib_Clang
- build_mac_lib
- build_ios_lib
- build_linux_android
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download native artifacts
uses: actions/download-artifact@v4
with:
path: downloaded_artifacts
- name: List all archives
shell: bash
run: |
set -euo pipefail
ls -l downloaded_artifacts
- name: Install tooling
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install -y unzip zip rsync
- name: Stage Unreal prebuilt plugin
shell: bash
env:
VERSION: ${{ needs.extract_version.outputs.version }}
run: |
set -euo pipefail
if [[ -z "${VERSION:-}" ]]; then
echo "VERSION env not set" >&2
exit 1
fi
ROOT="$(pwd)"
ARTIFACT_ROOT="$ROOT/downloaded_artifacts"
TMP_ROOT="$ROOT/artifacts/plugin/unreal/tmp_prebuilt"
DIST_DIR="$ROOT/dist"
TEMPLATE_DIR="$ROOT/plugin/unreal/BqLog"
mkdir -p "$TMP_ROOT" "$DIST_DIR"
find_preferred() {
local base="$1"
local name="$2"
local prefer="${3:-RelWithDebInfo}"
local required_segment="${4:-}"
local result
result=$(find "$base" -type f -name "$name" 2>/dev/null | { if [[ -n "$required_segment" ]]; then grep "$required_segment" || true; else cat; fi; } | grep "$prefer" | head -n1 || true)
if [[ -z "$result" ]]; then
result=$(find "$base" -type f -name "$name" 2>/dev/null | { if [[ -n "$required_segment" ]]; then grep "$required_segment" || true; else cat; fi; } | head -n1 || true)
fi
echo "$result"
}
find_linux_so() {
local base="$1"
local version="$2"
local result
result=$(find "$base" -type f -path "*dynamic_lib*/libBqLog.so.${VERSION}" 2>/dev/null | head -n1 || true)
if [[ -z "$result" ]]; then
result=$(find_preferred "$base" libBqLog.so "RelWithDebInfo" "dynamic_lib")
fi
echo "$result"
}
find_mac_dylib() {
local base="$1"
local version="$2"
local result
result=$(find "$base" -type f -path "*dynamic_lib*/libBqLog.${VERSION}.dylib" 2>/dev/null | head -n1 || true)
if [[ -z "$result" ]]; then
result=$(find_preferred "$base" libBqLog.dylib "RelWithDebInfo" "dynamic_lib")
fi
echo "$result"
}
find_android_so() {
local base="$1"
local abi="$2"
local result
result=$(find "$base" -type f -path "*dynamic_lib*/*${abi}*/libBqLog.so" 2>/dev/null | grep "RelWithDebInfo" | head -n1 || true)
if [[ -z "$result" ]]; then
result=$(find "$base" -type f -path "*dynamic_lib*/*${abi}*/libBqLog.so" 2>/dev/null | head -n1 || true)
fi
echo "$result"
}
copy_file() {
local src="$1"
local dst="$2"
if [[ -f "$src" ]]; then
mkdir -p "$(dirname "$dst")"
cp -f "$src" "$dst"
fi
}
copy_file_follow() {
local src="$1"
local dst="$2"
if [[ -e "$src" ]]; then
mkdir -p "$(dirname "$dst")"
cp -fL "$src" "$dst"
fi
}
copy_dir() {
local src="$1"
local dst="$2"
if [[ -d "$src" ]]; then
rm -rf "$dst"
mkdir -p "$(dirname "$dst")"
cp -R "$src" "$dst"
fi
}
copy_directory_all() {
local file_path="$1"
local dst_dir="$2"
if [[ -z "$file_path" ]]; then
return
fi
local src_dir
src_dir="$(dirname "$file_path")"
if [[ ! -d "$src_dir" ]]; then
return
fi
mkdir -p "$dst_dir"
rsync -a "$src_dir/" "$dst_dir/"
}
WIN_X64_BASE="$ARTIFACT_ROOT/windows_x86_64_libs_${VERSION}"
WIN_ARM64_BASE="$ARTIFACT_ROOT/windows_arm64_libs_${VERSION}"
LINUX_X64_BASE="$ARTIFACT_ROOT/linux_x86_64_libs_${VERSION}"
LINUX_ARM64_BASE="$ARTIFACT_ROOT/linux_arm64_libs_${VERSION}"
MAC_BASE="$ARTIFACT_ROOT/macos_universal_binary_libs_${VERSION}"
IOS_BASE="$ARTIFACT_ROOT/ios_libs_${VERSION}"
ANDROID_BASE="$ARTIFACT_ROOT/android_libs_${VERSION}"
DYNAMIC_INCLUDE_SRC=$(find "$WIN_X64_BASE" -type d -path "*/dynamic_lib/include" -print -quit)
if [[ -z "$DYNAMIC_INCLUDE_SRC" ]]; then
echo "ERROR: Failed to locate dynamic_lib include directory" >&2
exit 1
fi
STATIC_INCLUDE_SRC=$(find "$IOS_BASE" -type d -path "*/static_lib/include" -print -quit)
if [[ -z "$STATIC_INCLUDE_SRC" ]]; then
echo "ERROR: Failed to locate static_lib include directory for iOS" >&2
exit 1
fi
WIN_X64_DLL=$(find_preferred "$WIN_X64_BASE" BqLog.dll "RelWithDebInfo" "dynamic_lib")
WIN_X64_LIB=$(find_preferred "$WIN_X64_BASE" BqLog.lib "RelWithDebInfo" "dynamic_lib")
WIN_X64_PDB=$(find_preferred "$WIN_X64_BASE" BqLog.pdb "RelWithDebInfo" "dynamic_lib")
WIN_ARM64_DLL=$(find_preferred "$WIN_ARM64_BASE" BqLog.dll "RelWithDebInfo" "dynamic_lib")
WIN_ARM64_LIB=$(find_preferred "$WIN_ARM64_BASE" BqLog.lib "RelWithDebInfo" "dynamic_lib")
WIN_ARM64_PDB=$(find_preferred "$WIN_ARM64_BASE" BqLog.pdb "RelWithDebInfo" "dynamic_lib")
LINUX_X64_SO=$(find_linux_so "$LINUX_X64_BASE" "$VERSION")
LINUX_ARM64_SO=$(find_linux_so "$LINUX_ARM64_BASE" "$VERSION")
MAC_DYLIB=$(find_mac_dylib "$MAC_BASE" "$VERSION")
IOS_XCFRAMEWORK=$(find "$IOS_BASE" -type d -path "*static_lib*/BqLog.xcframework" -print -quit)
declare -A ANDROID_SO
for abi in armeabi-v7a arm64-v8a x86 x86_64; do
path=$(find_android_so "$ANDROID_BASE" "$abi")
if [[ -z "$path" ]]; then
echo "ERROR: Missing Android libBqLog.so for ABI ${abi}" >&2
exit 1
fi
ANDROID_SO[$abi]="$path"
done
ANDROID_AAR=$(find "$ANDROID_BASE" -type f -name "*bqlog*.aar" -print -quit)
if [[ -z "$ANDROID_AAR" ]]; then
echo "ERROR: Missing Android AAR package" >&2
exit 1
fi
if [[ -z "$WIN_X64_DLL" || -z "$WIN_X64_LIB" ]]; then
echo "ERROR: Missing Windows x86_64 binaries" >&2
exit 1
fi
if [[ -z "$WIN_ARM64_DLL" || -z "$WIN_ARM64_LIB" ]]; then
echo "ERROR: Missing Windows arm64 binaries" >&2
exit 1
fi
if [[ -z "$LINUX_X64_SO" || -z "$LINUX_ARM64_SO" ]]; then
echo "ERROR: Missing Linux shared libraries" >&2
exit 1
fi
if [[ -z "$MAC_DYLIB" ]]; then
echo "ERROR: Missing macOS dylib" >&2
exit 1
fi
if [[ -z "$IOS_XCFRAMEWORK" ]]; then
echo "ERROR: Missing iOS xcframework" >&2
exit 1
fi
UE_VARIANTS=(ue4 ue5)
for ue in "${UE_VARIANTS[@]}"; do
stage_dir="$TMP_ROOT/$ue"
rm -rf "$stage_dir"
mkdir -p "$stage_dir"
rsync -a "$TEMPLATE_DIR/" "$stage_dir/BqLog/"
plugin_dir="$stage_dir/BqLog"
public_dir="$plugin_dir/Source/BqLog/Public"
thirdparty_root="$plugin_dir/Source/BqLog/ThirdParty/BqLog"
rm -rf "$plugin_dir/Source/BqLog/ThirdParty"
rm -rf "$public_dir/ThirdParty"
mkdir -p "$thirdparty_root/Shared/Dynamic/include"
mkdir -p "$thirdparty_root/Shared/Static/include"
cp -R "$DYNAMIC_INCLUDE_SRC/." "$thirdparty_root/Shared/Dynamic/include/"
cp -R "$STATIC_INCLUDE_SRC/." "$thirdparty_root/Shared/Static/include/"
if [[ -f "$public_dir/BqLog_h_${ue}.txt" ]]; then
mv "$public_dir/BqLog_h_${ue}.txt" "$public_dir/BqLog.h"
fi
rm -f "$public_dir"/BqLog_h_*.txt
rm -rf "$plugin_dir/Binaries/Win64" "$plugin_dir/Binaries/Win64Arm64" "$plugin_dir/Binaries/Linux" "$plugin_dir/Binaries/LinuxAArch64" "$plugin_dir/Binaries/Mac" "$plugin_dir/Binaries/IOS"
mkdir -p "$plugin_dir/Binaries/Win64" "$plugin_dir/Binaries/Win64Arm64" "$plugin_dir/Binaries/Linux" "$plugin_dir/Binaries/LinuxAArch64" "$plugin_dir/Binaries/Mac" "$plugin_dir/Binaries/IOS" "$plugin_dir/Binaries/Android"
copy_file "$WIN_X64_LIB" "$thirdparty_root/Win64/x86_64/lib/BqLog.lib"
copy_file "$WIN_ARM64_LIB" "$thirdparty_root/Win64/arm64/lib/BqLog.lib"
copy_file "$WIN_X64_DLL" "$plugin_dir/Binaries/Win64/BqLog.dll"
copy_file "$WIN_X64_PDB" "$plugin_dir/Binaries/Win64/BqLog.pdb"
copy_file "$WIN_ARM64_DLL" "$plugin_dir/Binaries/Win64Arm64/BqLog.dll"
copy_file "$WIN_ARM64_PDB" "$plugin_dir/Binaries/Win64Arm64/BqLog.pdb"
copy_directory_all "$LINUX_X64_SO" "$thirdparty_root/Linux/x86_64/lib"
copy_directory_all "$LINUX_X64_SO" "$plugin_dir/Binaries/Linux"
copy_directory_all "$LINUX_ARM64_SO" "$thirdparty_root/Linux/arm64/lib"
copy_directory_all "$LINUX_ARM64_SO" "$plugin_dir/Binaries/LinuxAArch64"
copy_directory_all "$MAC_DYLIB" "$thirdparty_root/Mac/lib"
rm -rf "$thirdparty_root/Mac/lib/"*.framework
copy_directory_all "$MAC_DYLIB" "$plugin_dir/Binaries/Mac"
rm -rf "$plugin_dir/Binaries/Mac/"*.framework
copy_dir "$IOS_XCFRAMEWORK" "$thirdparty_root/IOS/BqLog.xcframework"
copy_dir "$IOS_XCFRAMEWORK" "$plugin_dir/Binaries/IOS/BqLog.xcframework"
rm -f "$plugin_dir/Binaries/Android/bqlog.aar"
copy_file "$ANDROID_AAR" "$plugin_dir/Binaries/Android/bqlog.aar"
for abi in "${!ANDROID_SO[@]}"; do
copy_file_follow "${ANDROID_SO[$abi]}" "$thirdparty_root/Android/$abi/libBqLog.so"
done
zip_name="bqlog-unreal-plugin-prebuilt-${VERSION}-${ue}.zip"
rm -f "$DIST_DIR/$zip_name" "$DIST_DIR/$zip_name.sha256"
(cd "$stage_dir" && zip -qry "$DIST_DIR/$zip_name" "BqLog")
sha256sum "$DIST_DIR/$zip_name" | tr '[:upper:]' '[:lower:]' > "$DIST_DIR/$zip_name.sha256"
done
echo "Packaged Unreal plugin archives:"
find "$DIST_DIR" -maxdepth 1 -type f -printf '%f\n' | sort
- name: Upload prebuilt Unreal plugin
uses: actions/upload-artifact@v4
with:
name: unreal_plugin_prebuilt_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist
# Unity package
unity_package_build:
runs-on: ubuntu-latest
needs:
- extract_version
- build_linux_android
- build_ios_lib
- build_ubuntu_x86_64_lib_Clang
- build_mac_lib
- build_windows_x86_64_lib_MSVC
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download all artifacts from native builds
uses: actions/download-artifact@v4
with:
path: downloaded_artifacts
- name: Prepare tools
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install -y unzip
sudo apt-get install -y nodejs npm
- name: update package.json
shell: bash
env:
VERSION: ${{ needs.extract_version.outputs.version }}
run: |
set -euo pipefail
# Update plugin/unity/package.json (ensure VERSION is visible to node)
if [[ -f plugin/unity/package.json ]]; then
node -e "const fs=require('fs');const p='plugin/unity/package.json';const j=JSON.parse(fs.readFileSync(p,'utf8'));if(!j.name)throw new Error('package.json missing name');if(!process.env.VERSION)throw new Error('VERSION env missing');j.version=process.env.VERSION;fs.writeFileSync(p,JSON.stringify(j,null,2));console.log('Updated',p,'to version',j.version);"
else
echo 'plugin/unity/package.json not found!' >&2
exit 1
fi
# Sanity check: ensure version exists after write
if ! grep -q '"version"' plugin/unity/package.json; then
echo 'ERROR: version field missing in plugin/unity/package.json after update' >&2
cat plugin/unity/package.json
exit 1
fi
echo 'Sanity check package.json:'
cat plugin/unity/package.json
- name: List all archives
shell: bash
run: |
set -euo pipefail
ls -l downloaded_artifacts
- name: Stage libs into plugin/unity/Runtime/Plugins
shell: bash
env:
VERSION: ${{ needs.extract_version.outputs.version }}
run: |
set -euo pipefail
: "${VERSION:?VERSION env not set}"
BASE="downloaded_artifacts"
# Target folders
ANDROID_DIR="plugin/unity/Runtime/Plugins/Android"
WIN_X64_DIR="plugin/unity/Runtime/Plugins/Windows/x86_64"
LINUX_X64_DIR="plugin/unity/Runtime/Plugins/Linux/x86_64"
IOS_DIR="plugin/unity/Runtime/Plugins/iOS"
MACOS_DIR="plugin/unity/Runtime/Plugins/macOS"
mkdir -p "$ANDROID_DIR" "$WIN_X64_DIR" "$LINUX_X64_DIR" "$IOS_DIR" "$MACOS_DIR"
copy_one() {
local src="$1"
local dst="$2"
echo "Copy: $src -> $dst/"
mkdir -p "$dst"
cp -a "$src" "$dst/"
}
# Android (.aar) -> rename to bqlog.aar
mapfile -t android_aar < <(find "$BASE" -type f -path "*/android_libs_${VERSION}/*/dynamic_lib/*bqlog-release.aar" | sort)
if (( ${#android_aar[@]} )); then
echo "Copy: ${android_aar[0]} -> $ANDROID_DIR/bqlog.aar"
cp -f "${android_aar[0]}" "$ANDROID_DIR/bqlog.aar"
else
echo "WARN: Android AAR not found for version ${VERSION}"
exit 1
fi
# Windows x86_64 (BqLog.dll + optional BqLog.pdb + optional BqLog.lib)
mapfile -t win_dll < <(find "$BASE" -type f -path "*/windows_x86_64_libs_${VERSION}/*/dynamic_lib/lib/RelWithDebInfo/BqLog.dll" | sort)
if (( ${#win_dll[@]} )); then
dll="${win_dll[0]}"
win_dir="$(dirname "$dll")"
mkdir -p "$WIN_X64_DIR"
echo "Copy: $dll -> $WIN_X64_DIR/"
cp -f "$dll" "$WIN_X64_DIR/"
if [[ -f "$win_dir/BqLog.pdb" ]]; then
echo "Copy: $win_dir/BqLog.pdb -> $WIN_X64_DIR/"
cp -f "$win_dir/BqLog.pdb" "$WIN_X64_DIR/"
fi
else
echo "WARN: Windows x86_64 DLL not found for version ${VERSION}"
exit 1
fi
# Linux x86_64 (libBqLog.so) - use exact versioned real .so (.so.${VERSION}) and copy as libBqLog.so
mapfile -t linux_real_so < <(find "$BASE" -type f -path "*/linux_x86_64_libs_${VERSION}/*/dynamic_lib/lib/RelWithDebInfo/libBqLog.so.${VERSION}" | sort)
if (( ${#linux_real_so[@]} )); then
REAL_SO="${linux_real_so[0]}"
else
# Fallback to unversioned .so if versioned one not found
mapfile -t linux_real_so < <(find "$BASE" -type f -path "*/linux_x86_64_libs_${VERSION}/*/dynamic_lib/lib/RelWithDebInfo/libBqLog.so" | sort)
if (( ${#linux_real_so[@]} )); then
REAL_SO="${linux_real_so[0]}"
else
echo "ERROR: Expected libBqLog.so for Linux x86_64 not found" >&2
exit 1
fi
fi
echo "Copy (real .so): $REAL_SO -> $LINUX_X64_DIR/libBqLog.so"
mkdir -p "$LINUX_X64_DIR"
# -L to dereference symlink if any; final name must be libBqLog.so
cp -Lf "$REAL_SO" "$LINUX_X64_DIR/libBqLog.so"
# iOS (BqLog.xcframework)
mapfile -t ios_fw < <(find "$BASE" -type d -path "*/ios_libs_${VERSION}/*/static_lib/lib/RelWithDebInfo/BqLog.xcframework" | sort)
if (( ${#ios_fw[@]} )); then
copy_one "${ios_fw[0]}" "$IOS_DIR"
else
echo "WARN: iOS framework not found for version ${VERSION}"
exit 1
fi
# macOS universal (libBqLog.dylib) - prefer exact versioned real .dylib (libBqLog.${VERSION}.dylib) and copy as libBqLog.dylib
mapfile -t macos_real_dylib < <(find "$BASE" -type f -path "*/macos_universal_binary_libs_${VERSION}/*/dynamic_lib/lib/RelWithDebInfo/libBqLog.${VERSION}.dylib" | sort)
if (( ${#macos_real_dylib[@]} )); then
REAL_DYLIB="${macos_real_dylib[0]}"
else
# Fallback to unversioned .dylib if versioned one not found
mapfile -t macos_real_dylib < <(find "$BASE" -type f -path "*/macos_universal_binary_libs_${VERSION}/*/dynamic_lib/lib/RelWithDebInfo/libBqLog.dylib" | sort)
if (( ${#macos_real_dylib[@]} )); then
REAL_DYLIB="${macos_real_dylib[0]}"
else
echo "ERROR: Expected libBqLog.dylib for macOS not found" >&2
exit 1
fi
fi
echo "Copy (real .dylib): $REAL_DYLIB -> $MACOS_DIR/libBqLog.dylib"
mkdir -p "$MACOS_DIR"
# -L to dereference symlink if any; final name must be libBqLog.dylib
cp -Lf "$REAL_DYLIB" "$MACOS_DIR/libBqLog.dylib"
echo "Staged files/directories (Plugins subtree, up to depth 6):"
/usr/bin/find plugin/unity/Runtime/Plugins -maxdepth 6 -print | sort
- name: Copy source codes
run: |
set -euo pipefail
# Copy the contents of wrapper/csharp/src into Runtime/src (avoid nesting src/src)
mkdir -p plugin/unity/Runtime/src
cp -r wrapper/csharp/src/. plugin/unity/Runtime/src/
- name: Build Unity Package
run: |
set -euo pipefail
echo "Verifying package.json before pack:"
test -f plugin/unity/package.json && cat plugin/unity/package.json || (echo "package.json missing"; exit 1)
echo "::group::npm pack --dry-run"
cd plugin/unity
npm pack --dry-run || true
echo "::endgroup::"
mkdir -p ../../dist/plugins/unity
npm pack --pack-destination ../../dist/plugins/unity
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: unity_package_${{ needs.extract_version.outputs.version }}
path: ${{ github.workspace }}/dist