Fix #7783: Deadlock during index creation when parallel workers are used #6019
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
jobs: | |
build-linux-ubuntu-x64-clang: | |
if: github.ref_type != 'tag' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Prepare | |
run: | | |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev cmake | |
- name: Build | |
run: | | |
CC=clang CXX=clang++ ./autogen.sh --enable-binreloc --prefix=/opt/firebird | |
make -j4 | |
make tests -j4 | |
make run_tests | |
make dist | |
tar xzvf gen/Firebird-*-linux-x64.tar.gz | |
(cd Firebird-*-linux-x64; sudo ./install.sh -silent) | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-ubuntu-20.04-clang-x64 | |
path: gen/Firebird-*-linux-x64.tar.gz | |
build-linux-docker: | |
name: build-linux-docker-${{ matrix.arch }} | |
runs-on: ubuntu-22.04 | |
env: | |
FB_DOCKER_PATH: ${{ (startsWith(matrix.arch, 'arm') && 'arm32-arm64') || 'x86-x64' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- x86 | |
- x64 | |
- arm32 | |
- arm64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Get Release Notes | |
uses: ./.github/actions/get-release-notes | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
if: ${{ startsWith(matrix.arch, 'arm') }} | |
- name: Build | |
run: | | |
cd builds/docker/linux/$FB_DOCKER_PATH | |
./run-${{ matrix.arch }}.sh | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-linux-${{ matrix.arch }} | |
path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz | |
- name: Upload debug symbols | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-linux-${{ matrix.arch }}-debugSymbols | |
path: gen/Firebird-*-linux-${{ matrix.arch }}-debugSymbols.tar.gz | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-linux-${{ matrix.arch }}*.tar.gz | |
uploadFiles: gen/Firebird-*-linux-${{ matrix.arch }}*.tar.gz | |
build-src-bundle-docker: | |
name: build-src-bundle-docker | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Get Release Notes | |
uses: ./.github/actions/get-release-notes | |
- name: Build | |
run: | | |
cd builds/docker/linux/x86-x64 | |
./run-src-bundle.sh | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-source.tar.xz | |
uploadFiles: gen/Firebird-*-source.tar.xz | |
build-alpine-x64: | |
if: github.ref_type != 'tag' | |
runs-on: ubuntu-22.04 | |
container: alpine:3.14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Prepare | |
run: apk update && apk --no-cache --update add build-base libtool git autoconf automake cmake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar sed | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Build | |
run: | | |
./autogen.sh --enable-binreloc-threads --with-builtin-tommath --with-builtin-tomcrypt --prefix=/opt/firebird | |
make -j4 | |
make tests -j4 | |
make run_tests | |
make dist | |
tar xzvf gen/Firebird-*-linux-x64.tar.gz | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-alpine-x64 | |
path: gen/Firebird-*-linux-x64.tar.gz | |
build-windows: | |
if: github.ref_type != 'tag' | |
runs-on: ${{ matrix.os }} | |
env: | |
VS_VERSION: ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows-2022' && '2022' || '')) }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2022 | |
- windows-2019 | |
platform: [x64, x86] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Prepare | |
shell: cmd | |
run: | | |
for /r %%i in (*.bat) do unix2dos "%%i" | |
choco uninstall --no-progress --yes innosetup | |
choco install --no-progress --yes innosetup --version=6.1.2 | |
- name: Build | |
shell: cmd | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
VS_SCRIPT: ${{ matrix.os == 'windows-2022' && 'C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' || 'C:\Program Files (x86)\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' }} | |
run: | | |
set SEVENZIP=C:\Program Files\7-Zip | |
set INNO6_SETUP_PATH=C:\Program Files (x86)\Inno Setup 6 | |
if "%PLATFORM%" == "x64" set FB_VS_ARCH=amd64 | |
if "%PLATFORM%" == "x64" set FB_PROCESSOR_ARCHITECTURE=AMD64 | |
if "%PLATFORM%" == "x86" set FB_VS_ARCH=x86 | |
if "%PLATFORM%" == "x86" set FB_PROCESSOR_ARCHITECTURE=x86 | |
call "%VS_SCRIPT%" -arch=%FB_VS_ARCH% | |
cd builds\win32 | |
call run_all.bat | |
call run_tests.bat | |
- name: Upload zip | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-zip | |
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer | |
path: builds/install_images/*-windows-${{ matrix.platform }}.exe | |
build-windows-docker: | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [x64, x86] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Get Release Notes | |
uses: ./.github/actions/get-release-notes | |
- name: Build x86 for client package in x64 | |
id: build-x86 | |
shell: cmd | |
if: ${{ matrix.platform == 'x64' }} | |
run: | | |
mkdir builds\install_images | |
cd builds\docker\windows | |
call build.bat | |
call run.bat C:\fbscripts\build-x86.bat | |
- name: Build | |
id: build | |
shell: cmd | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
run: | | |
mkdir builds\install_images | |
cd builds\docker\windows | |
call build.bat | |
call run.bat C:\fbscripts\build-%PLATFORM%.bat | |
- name: Upload zip | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-${{ matrix.platform }}-zip | |
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip | |
- name: Upload zip (withDebugSymbols) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-zip | |
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}-withDebugSymbols.zip | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-${{ matrix.platform }}-installer | |
path: builds/install_images/*-windows-${{ matrix.platform }}.exe | |
- name: Upload installer (withDebugSymbols) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-installer | |
path: builds/install_images/*-windows-${{ matrix.platform }}-withDebugSymbols.exe | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: | | |
Firebird-*-windows-${{ matrix.platform }}*.exe | |
Firebird-*-windows-${{ matrix.platform }}*.zip | |
uploadFiles: | | |
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.exe | |
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.zip | |
build-macos: | |
name: build-macos-${{ matrix.arch }} | |
runs-on: ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-12' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- x64 | |
- arm64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
submodules: 'true' | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Prepare - Install tools | |
run: | | |
brew install automake autoconf-archive cmake libtool ninja | |
# libcxx build is not working with python >= 3.12 | |
- name: Do not use preinstalled python >= 3.12 | |
run: | | |
brew uninstall --ignore-dependencies [email protected] | |
[ -e /Library/Frameworks/Python.framework ] && \ | |
sudo mv /Library/Frameworks/Python.framework /Library/Frameworks/Python.framework.dont-look-at-this | |
brew install [email protected] | |
ln -s "$(brew --prefix [email protected])/bin/python3" "$(brew --prefix [email protected])/bin/python" | |
- name: Cache - vcpkg | |
uses: actions/cache@v4 | |
with: | |
key: ${{ runner.os }}-vcpkg-0 | |
path: | | |
$HOME/.cache/vcpkg/archives | |
- name: Build | |
run: | | |
export LIBTOOLIZE=glibtoolize | |
export LIBTOOL=glibtool | |
export PATH="$(brew --prefix [email protected])/bin:$PATH" | |
./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt | |
make -j4 | |
make tests -j4 | |
make run_tests | |
make -C gen -B -f make.platform.postfix | |
make -C gen -B -f Makefile.install | |
# Rename directory to make sure the build is relocatable. | |
mv gen gen2 | |
sudo installer -pkg gen2/Release/*.pkg -verbose -target / | |
export FIREBIRD_LOCK=`pwd`/temp | |
echo "create database 't.fdb'; select '1' from rdb\$database; select _win1252 '2' from rdb\$database; select _utf8 '3' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql | |
echo "create database 'localhost:/tmp/t.fdb' user sysdba password 'masterkey'; select '11' from rdb\$database; select _win1252 '22' from rdb\$database; select _utf8 '33' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql | |
mv gen2 gen | |
mkdir gen/artifacts | |
mv gen/Release/*.pkg gen/artifacts | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-macos-${{ matrix.arch }} | |
path: gen/artifacts | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-macos-${{ matrix.arch }}*.pkg | |
uploadFiles: gen/artifacts/Firebird-*-macos-${{ matrix.arch }}*.pkg | |
build-android-initial: | |
name: build-android-${{ matrix.arch }}-initial | |
runs-on: ubuntu-22.04 | |
env: | |
NDK: /home/runner/Android/Ndk | |
ARCH: ${{ matrix.arch }} | |
FB_PREFIX: ${{ (matrix.arch == 'arm32' && 'arme') || (matrix.arch == 'x64' && 'x86_64') || matrix.arch }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- arm32 | |
- arm64 | |
- x86 | |
- x64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Prepare - install Linux tools | |
run: | | |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev | |
- name: Prepare - Download and install Android NDK | |
run: | | |
mkdir downloads | |
pushd downloads | |
curl -OL https://dl.google.com/android/repository/android-ndk-r25b-linux.zip | |
mkdir -p $NDK | |
unzip android-ndk-r25b-linux.zip -d $NDK && f=("$NDK"/*) && mv "$NDK"/*/* "$NDK" && rmdir "${f[@]}" | |
- name: Build | |
run: | | |
./autogen.sh --prefix=/opt/firebird --enable-binreloc --with-cross-build=android.$FB_PREFIX --without-editline | |
make -j4 | |
make CROSS_OUT=Y tests -j4 | |
builds/install/arch-specific/android/BuildPackage.sh $ARCH | |
- name: Upload initial build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-android-initial-${{ matrix.arch }} | |
path: | | |
gen/Firebird-*-android-initial-${{ matrix.arch }}*.tar.gz | |
gen/Make.Version | |
build-android-final: | |
name: build-android-${{ matrix.arch }}-final | |
needs: build-android-initial | |
runs-on: ubuntu-latest | |
env: | |
ARCH: ${{ matrix.arch }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- arm32 | |
- arm64 | |
- x86 | |
- x64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Enable KVM | |
run: | | |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger --name-match=kvm | |
- name: Download initial build | |
uses: actions/download-artifact@v4 | |
with: | |
name: firebird-android-initial-${{ matrix.arch }} | |
path: gen | |
- name: Cache - AVD | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-v7 | |
- name: Create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
avd-name: firebird-builder | |
arch: x86_64 | |
api-level: 30 | |
target: google_apis | |
ndk: 25.1.8937393 | |
emulator-options: -no-window -noaudio -no-boot-anim -camera-back none -port 5554 | |
emulator-boot-timeout: 900 | |
script: | | |
echo "Generated AVD snapshot for caching." | |
- name: Create necessary files in Android emulator | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
avd-name: firebird-builder | |
arch: x86_64 | |
api-level: 30 | |
target: google_apis | |
ndk: 25.1.8937393 | |
emulator-options: -no-snapshot-save -no-window -noaudio -no-boot-anim -camera-back none -port 5554 | |
emulator-boot-timeout: 900 | |
script: | | |
adb wait-for-device | |
adb root | |
NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-android-${{ matrix.arch }} | |
path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz | |
- name: Upload installer (withDebugSymbols) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-android-${{ matrix.arch }}-withDebugSymbols | |
path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz | |
- name: Delete initial build | |
uses: geekyeggo/delete-artifact@v4 | |
with: | |
name: firebird-android-initial-${{ matrix.arch }} | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-android-${{ matrix.arch }}*.tar.gz | |
uploadFiles: gen/Firebird-*-android-${{ matrix.arch }}*.tar.gz | |
build-android-aar: | |
needs: build-android-final | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Adjust snapshot build number | |
uses: ./.github/actions/adjust-snapshot-buildno | |
- name: Download final build (x86) | |
uses: actions/download-artifact@v4 | |
with: | |
name: firebird-android-x86 | |
path: android/temp | |
- name: Download final build (x64) | |
uses: actions/download-artifact@v4 | |
with: | |
name: firebird-android-x64 | |
path: android/temp | |
- name: Download final build (arm32) | |
uses: actions/download-artifact@v4 | |
with: | |
name: firebird-android-arm32 | |
path: android/temp | |
- name: Download final build (arm64) | |
uses: actions/download-artifact@v4 | |
with: | |
name: firebird-android-arm64 | |
path: android/temp | |
- name: Extract final builds | |
working-directory: android | |
run: | | |
mkdir -p embedded/src/main/jniLibs/{x86,x86_64,armeabi-v7a,arm64-v8a} | |
tar xzvf temp/Firebird-*-android-x86.tar.gz -C embedded/src/main/jniLibs/x86 --strip-components=1 | |
tar xzvf temp/Firebird-*-android-x64.tar.gz -C embedded/src/main/jniLibs/x86_64 --strip-components=1 | |
tar xzvf temp/Firebird-*-android-arm32.tar.gz -C embedded/src/main/jniLibs/armeabi-v7a --strip-components=1 | |
tar xzvf temp/Firebird-*-android-arm64.tar.gz -C embedded/src/main/jniLibs/arm64-v8a --strip-components=1 | |
mkdir -p embedded/src/main/assets/firebird | |
mv embedded/src/main/jniLibs/x86/{*.conf,*.msg,*.dat,*.res} embedded/src/main/assets/firebird/ | |
find embedded/src/main/jniLibs -type f ! -iname "*.so" -delete | |
- name: Assemble AAR | |
working-directory: android | |
run: | | |
./gradlew assembleRelease | |
FB_VERSION=`cd ../src/misc/ && . writeBuildNum.sh && echo $PRODUCT_VER_STRING-$FIREBIRD_PACKAGE_VERSION` | |
mv embedded/build/outputs/aar/firebird-embedded-release.aar \ | |
embedded/build/outputs/aar/Firebird-$FB_VERSION-android-embedded.aar | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firebird-android-aar | |
path: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-android-embedded.aar | |
uploadFiles: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar |