Fixed performance issue #7854 #5052
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-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 10 | |
- 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@main | |
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@v3 | |
with: | |
fetch-depth: 10 | |
- name: Get Release Notes | |
uses: ./.github/actions/get-release-notes | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
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@main | |
with: | |
name: firebird-linux-${{ matrix.arch }} | |
path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz | |
- name: Upload debug symbols | |
uses: actions/upload-artifact@main | |
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@v3 | |
with: | |
fetch-depth: 10 | |
- 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-20.04 | |
container: alpine:3.14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
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 | |
- 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@main | |
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@v3 | |
with: | |
fetch-depth: 10 | |
- 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@main | |
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@main | |
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@v3 | |
with: | |
fetch-depth: 10 | |
- 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@main | |
with: | |
name: firebird-windows-${{ matrix.platform }}-zip | |
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip | |
- name: Upload zip (withDebugSymbols) | |
uses: actions/upload-artifact@main | |
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@main | |
with: | |
name: firebird-windows-${{ matrix.platform }}-installer | |
path: builds/install_images/*-windows-${{ matrix.platform }}.exe | |
- name: Upload installer (withDebugSymbols) | |
uses: actions/upload-artifact@main | |
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: | |
runs-on: macos-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 10 | |
submodules: 'true' | |
- name: Prepare - Install tools | |
run: | | |
brew install automake autoconf-archive cmake libtool ninja | |
- name: Cache - vcpkg | |
uses: actions/cache@v3 | |
with: | |
key: ${{ runner.os }}-vcpkg | |
path: | | |
$HOME/.cache/vcpkg/archives | |
- name: Build | |
run: | | |
export LIBTOOLIZE=glibtoolize | |
export LIBTOOL=glibtool | |
./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@main | |
with: | |
name: firebird-macos | |
path: gen/artifacts | |
- name: Create release | |
uses: ./.github/actions/create-release | |
with: | |
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} | |
deletePatterns: Firebird-*-macos-x64*.pkg | |
uploadFiles: gen/artifacts/Firebird-*-macos-x64*.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@v3 | |
with: | |
fetch-depth: 10 | |
- 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@v3 | |
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: macos-latest | |
env: | |
ARCH: ${{ matrix.arch }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- arm32 | |
- arm64 | |
- x86 | |
- x64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 10 | |
- name: Download initial build | |
uses: actions/download-artifact@v3 | |
with: | |
name: firebird-android-initial-${{ matrix.arch }} | |
path: gen | |
- name: Cache - AVD | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-v3 | |
- 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: | | |
sleep 20 | |
adb wait-for-device | |
adb root | |
NDK=/Users/runner/Library/Android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH | |
- name: Upload installer | |
uses: actions/upload-artifact@v3 | |
with: | |
name: firebird-android-${{ matrix.arch }} | |
path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz | |
- name: Upload installer (withDebugSymbols) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: firebird-android-${{ matrix.arch }}-withDebugSymbols | |
path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz | |
- name: Delete initial build | |
uses: geekyeggo/delete-artifact@v1 | |
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@v3 | |
with: | |
fetch-depth: 10 | |
- name: Download final build (x86) | |
uses: actions/download-artifact@v3 | |
with: | |
name: firebird-android-x86 | |
path: android/temp | |
- name: Download final build (x64) | |
uses: actions/download-artifact@v3 | |
with: | |
name: firebird-android-x64 | |
path: android/temp | |
- name: Download final build (arm32) | |
uses: actions/download-artifact@v3 | |
with: | |
name: firebird-android-arm32 | |
path: android/temp | |
- name: Download final build (arm64) | |
uses: actions/download-artifact@v3 | |
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@main | |
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 |