| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- name: CI
- on: [push, pull_request]
- jobs:
- build:
- runs-on: ${{ matrix.os }}
- container: ${{ matrix.container }}
- strategy:
- fail-fast: false
- matrix:
- os: [macOS-latest, windows-2016, ubuntu-20.04]
- platform: [x64, x86]
- include:
- - os: ubuntu-18.04
- platform: x64
- container: alpine
- exclude:
- - os: macOS-latest
- platform: x86
- - os: ubuntu-20.04
- platform: x86
- steps:
- - uses: actions/checkout@v1
- with:
- fetch-depth: 10
- - name: Prepare (Linux)
- if: matrix.os == 'ubuntu-20.04' && matrix.container != 'alpine'
- run: |
- sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev
- - name: Build (Linux)
- if: matrix.os == 'ubuntu-20.04' && matrix.container != 'alpine'
- 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: Prepare (Linux, Alpine)
- if: matrix.os == 'ubuntu-18.04' && 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: matrix.os == 'ubuntu-18.04' && 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 $ICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Release/firebird/lib/
- cp $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: matrix.os == 'windows-2016'
- shell: cmd
- run: |
- for /r %%i in (*.bat) do unix2dos "%%i"
- - name: Build (Windows)
- if: matrix.os == 'windows-2016'
- shell: cmd
- env:
- PLATFORM: ${{ matrix.platform }}
- 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 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=%FB_VS_ARCH%
- cd builds\win32
- run_all.bat JUSTBUILD
- - name: Upload (Linux)
- if: matrix.os == 'ubuntu-20.04' && matrix.container != 'alpine'
- uses: actions/upload-artifact@main
- with:
- name: firebird-linux-${{ matrix.platform }}
- path: gen/Firebird-[0-9]*.tar.gz
- - name: Upload (Linux, Alpine)
- if: matrix.os == 'ubuntu-18.04' && matrix.container == 'alpine'
- uses: actions/upload-artifact@master
- with:
- name: firebird-linux-alpine
- path: gen/Firebird-[0-9]*.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: matrix.os == 'windows-2016' && matrix.platform == 'x64'
- uses: actions/upload-artifact@main
- with:
- name: firebird-windows-x64
- path: output_x64
- - name: Upload (Windows x86)
- if: matrix.os == 'windows-2016' && matrix.platform == 'x86'
- uses: actions/upload-artifact@main
- with:
- name: firebird-windows-x86
- path: output_win32
|