mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 20:43:02 +01:00
230 lines
8.7 KiB
YAML
230 lines
8.7 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
container: ${{ matrix.container }}
|
|
env:
|
|
VS_VERSION: ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows-2022' && '2022' || '')) }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- windows-2019
|
|
platform: [x64, x86]
|
|
include:
|
|
- os: ubuntu-18.04
|
|
platform: x64
|
|
container: alpine:3.14
|
|
- os: ubuntu-20.04
|
|
platform: x64
|
|
compiler: clang
|
|
- os: ubuntu-20.04
|
|
platform: x64
|
|
container: asfernandes/firebird-builder:x86_64-5
|
|
- os: ubuntu-20.04
|
|
platform: x86
|
|
# This build is failing at actions/upload-artifact when using the "container" way.
|
|
#container: asfernandes/firebird-builder:i586-5
|
|
docker: "docker"
|
|
- os: windows-2022
|
|
platform: x64
|
|
docker: "docker"
|
|
- os: windows-2022
|
|
platform: x86
|
|
docker: "docker"
|
|
- os: windows-2022
|
|
platform: x64
|
|
- os: windows-2022
|
|
platform: x86
|
|
- os: macOS-latest
|
|
platform: x64
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
fetch-depth: 10
|
|
|
|
- name: Prepare (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu-') && !matrix.container && !matrix.docker
|
|
run: |
|
|
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev
|
|
|
|
- name: Build (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu-') && !matrix.container && !matrix.docker
|
|
run: |
|
|
CC=clang CXX=clang++ ./autogen.sh --enable-binreloc --prefix=/opt/firebird
|
|
make -j4
|
|
make dist
|
|
tar xzvf gen/Firebird-[0-9]*.tar.gz
|
|
(cd Firebird-[0-9]*; sudo ./install.sh -silent)
|
|
|
|
- name: Build (Linux, Docker)
|
|
if: startsWith(matrix.container, 'asfernandes/firebird-builder')
|
|
run: /entry.sh
|
|
|
|
# asfernandes/firebird-builder:i586-5
|
|
- name: Build (Linux, Docker)
|
|
if: startsWith(matrix.os, 'ubuntu-') && matrix.docker
|
|
run: |
|
|
cd builds/docker/linux/i586-x86_64
|
|
./run-i586.sh
|
|
|
|
- name: Prepare (Linux, Alpine)
|
|
if: startsWith(matrix.container, 'alpine')
|
|
run: apk update && apk --no-cache --update add build-base libtool git autoconf automake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar
|
|
|
|
- name: Build (Linux, Alpine)
|
|
if: startsWith(matrix.container, 'alpine')
|
|
run: |
|
|
./autogen.sh --enable-binreloc-threads --with-builtin-tommath --with-builtin-tomcrypt --prefix=/opt/firebird
|
|
make -j4
|
|
make dist
|
|
tar xzvf gen/Firebird-[0-9]*.tar.gz
|
|
|
|
- name: Prepare (MacOS)
|
|
if: matrix.os == 'macOS-latest'
|
|
run: |
|
|
brew install automake libtool
|
|
export LIBTOOLIZE=glibtoolize
|
|
export LIBTOOL=glibtool
|
|
|
|
mkdir extern/icu-macos
|
|
pushd extern/icu-macos
|
|
curl -OL https://github.com/unicode-org/icu/releases/download/release-63-2/icu4c-63_2-src.tgz
|
|
curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch
|
|
tar xzf icu4c-63_2-src.tgz
|
|
ICU_INSTALL_PATH=`pwd`/install
|
|
cd icu/source
|
|
patch -p3 < ../../24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch
|
|
./runConfigureICU MacOSX --prefix=$ICU_INSTALL_PATH
|
|
make -j4
|
|
make install
|
|
install_name_tool -id @rpath/lib/libicuuc.dylib $ICU_INSTALL_PATH/lib/libicuuc.dylib
|
|
install_name_tool -id @rpath/lib/libicui18n.dylib $ICU_INSTALL_PATH/lib/libicui18n.dylib
|
|
install_name_tool -id @rpath/lib/libicudata.dylib $ICU_INSTALL_PATH/lib/libicudata.dylib
|
|
install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $ICU_INSTALL_PATH/lib/libicuuc.63.dylib
|
|
install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $ICU_INSTALL_PATH/lib/libicui18n.63.dylib
|
|
install_name_tool -change libicuuc.63.dylib @loader_path/libicuuc.63.dylib $ICU_INSTALL_PATH/lib/libicui18n.63.dylib
|
|
popd
|
|
mkdir -p gen/Release/firebird/lib
|
|
mkdir -p gen/Debug/firebird/lib
|
|
cp -R $ICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Release/firebird/lib/
|
|
cp -R $ICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Debug/firebird/lib/
|
|
|
|
- name: Build (MacOS)
|
|
if: matrix.os == 'macOS-latest'
|
|
run: |
|
|
export LIBTOOLIZE=glibtoolize
|
|
export LIBTOOL=glibtool
|
|
|
|
ICU_INSTALL_PATH=`pwd`/extern/icu-macos/install
|
|
|
|
export C_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$C_INCLUDE_PATH"
|
|
export CPLUS_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$CPLUS_INCLUDE_PATH"
|
|
|
|
LIBRARY_PATH="$ICU_INSTALL_PATH/lib:$LIBRARY_PATH" ./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt
|
|
make -j4
|
|
|
|
(cd gen; make -B -f make.platform.postfix ICU_LOC="$ICU_INSTALL_PATH/lib/")
|
|
(cd gen; make -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: Prepare (Windows)
|
|
if: startsWith(matrix.os, 'windows-')
|
|
shell: cmd
|
|
run: |
|
|
for /r %%i in (*.bat) do unix2dos "%%i"
|
|
|
|
- name: Build (Windows)
|
|
if: startsWith(matrix.os, 'windows-') && !matrix.docker
|
|
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: |
|
|
if "%PLATFORM%" == "x64" set FB_VS_ARCH=amd64
|
|
if "%PLATFORM%" == "x64" set FB_PROCESSOR_ARCHITECTURE=AMD64
|
|
if "%PLATFORM%" == "x64" set FB_OUTPUT_SUFFIX=x64
|
|
if "%PLATFORM%" == "x86" set FB_VS_ARCH=x86
|
|
if "%PLATFORM%" == "x86" set FB_PROCESSOR_ARCHITECTURE=x86
|
|
if "%PLATFORM%" == "x86" set FB_OUTPUT_SUFFIX=win32
|
|
call "%VS_SCRIPT%" -arch=%FB_VS_ARCH%
|
|
cd builds\win32
|
|
run_all.bat JUSTBUILD
|
|
|
|
- name: Build (Windows, Docker)
|
|
if: startsWith(matrix.os, 'windows-') && matrix.docker
|
|
shell: cmd
|
|
env:
|
|
PLATFORM: ${{ matrix.platform }}
|
|
run: |
|
|
mkdir output
|
|
cd builds\docker\windows
|
|
call build.bat
|
|
call run.bat C:\fbscripts\build-%PLATFORM%.bat
|
|
|
|
- name: Upload (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu-') && !matrix.container && !matrix.docker
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-ubuntu-20.04-clang-${{ matrix.platform }}
|
|
path: gen/Firebird-*.tar.gz
|
|
|
|
- name: Upload (Linux, Docker)
|
|
if: startsWith(matrix.container, 'asfernandes/firebird-builder') || (startsWith(matrix.os, 'ubuntu-') && matrix.docker)
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-linux-${{ matrix.platform }}
|
|
path: gen/Firebird-*.tar.gz
|
|
|
|
- name: Upload (Linux, Alpine)
|
|
if: startsWith(matrix.container, 'alpine')
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-alpine-x64
|
|
path: gen/Firebird-*.tar.gz
|
|
|
|
- name: Upload (MacOS)
|
|
if: matrix.os == 'macOS-latest'
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-macos
|
|
path: gen/artifacts
|
|
|
|
- name: Upload (Windows x64)
|
|
if: startsWith(matrix.os, 'windows-') && !matrix.docker && matrix.platform == 'x64'
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-windows-vs-${{ env.VS_VERSION }}-x64
|
|
path: output_x64
|
|
|
|
- name: Upload (Windows x86)
|
|
if: startsWith(matrix.os, 'windows-') && !matrix.docker && matrix.platform == 'x86'
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-windows-vs-${{ env.VS_VERSION }}-x86
|
|
path: output_win32
|
|
|
|
- name: Upload (Windows, Docker)
|
|
if: startsWith(matrix.os, 'windows-') && matrix.docker
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: firebird-windows-${{ matrix.platform }}
|
|
path: output
|