-
-
Notifications
You must be signed in to change notification settings - Fork 218
175 lines (149 loc) · 6.43 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
platform: x64
- os: ubuntu-20.04
platform: x64
container: alpine
- os: macOS-latest
platform: x64
- os: windows-2022
platform: x64
- os: windows-2022
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.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.container == 'alpine'
run: |
./autogen.sh --enable-binreloc-threads --with-builtin-tommath --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-59-2/icu4c-59_2-src.tgz
curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch
tar xzf icu4c-59_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.59.dylib @loader_path/libicudata.59.dylib $ICU_INSTALL_PATH/lib/libicuuc.59.dylib
install_name_tool -change libicudata.59.dylib @loader_path/libicudata.59.dylib $ICU_INSTALL_PATH/lib/libicui18n.59.dylib
install_name_tool -change libicuuc.59.dylib @loader_path/libicuuc.59.dylib $ICU_INSTALL_PATH/lib/libicui18n.59.dylib
popd
mkdir -p gen/Release/firebird/lib
mkdir -p gen/Debug/firebird/lib
cp $ICU_INSTALL_PATH/lib/*.dylib gen/Release/firebird/lib/
cp $ICU_INSTALL_PATH/lib/*.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
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-2022'
shell: cmd
run: |
for /r %%i in (*.bat) do unix2dos "%%i"
choco install --no-progress --yes vcredist2010
- name: Build (Windows)
if: matrix.os == 'windows-2022'
shell: cmd
env:
PLATFORM: ${{ matrix.platform }}
run: |
set
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
set
call "C:\Program Files\Microsoft Visual Studio\2022\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@master
with:
name: firebird-linux
path: gen/Firebird-[0-9]*.tar.gz
- name: Upload (Linux, Alpine)
if: 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@master
with:
name: firebird-macos
path: gen/artifacts
- name: Upload (Windows x64)
if: matrix.os == 'windows-2022' && matrix.platform == 'x64'
uses: actions/upload-artifact@master
with:
name: firebird-windows-x64
path: output_x64
- name: Upload (Windows x86)
if: matrix.os == 'windows-2022' && matrix.platform == 'x86'
uses: actions/upload-artifact@master
with:
name: firebird-windows-x86
path: output_win32