Skip to content

Commit b0f7a22

Browse files
author
Farah Khashman
committed
QPR-12436: ore-wheels github actions
1 parent f860633 commit b0f7a22

7 files changed

Lines changed: 484 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Linux x86_64 ManyLinux Wheels (pp*)
2+
3+
on: workflow_dispatch
4+
jobs:
5+
wheels-linux:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- name: Checkout ORE-SWIG
9+
uses: actions/checkout@v3
10+
- name: get QuantLib-SWIG
11+
run: |
12+
git submodule update --init
13+
- name: Checkout ORE
14+
uses: actions/checkout@v3
15+
with:
16+
repository: OpenSourceRisk/Engine
17+
path: './ORE'
18+
fetch-depth: 0
19+
- name: get QuantLib
20+
run: |
21+
cd ORE
22+
git submodule update --init
23+
- name: Set Swap Space
24+
uses: pierotofy/set-swap-space@master
25+
with:
26+
swap-size-gb: 10
27+
- name: Install eigen
28+
run: |
29+
curl -O -L https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
30+
tar zxvf eigen-3.4.0.tar.gz
31+
cd eigen-3.4.0
32+
mkdir build
33+
cd build
34+
cmake ..
35+
export
36+
export Eigen3_DIR=$CURRENT_DIR/eigen-3.4.0
37+
- name: Set up Boost
38+
run: |
39+
sudo apt update
40+
sudo apt install -y libboost-all-dev libboost-test-dev ninja-build
41+
- name: Build Zlib
42+
run: |
43+
pwd
44+
curl -O -L https://www.zlib.net/zlib-1.3.1.tar.gz
45+
tar xzvf zlib-1.3.1.tar.gz
46+
cd zlib-1.3.1
47+
./configure
48+
make
49+
export ZLIB_ROOT=$CURRENT_DIR/zlib-1.3.1
50+
- name: Build ORE
51+
run : pwd; cd ORE; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DORE_USE_ZLIB=ON -DBUILD_SHARED_LIBS=false -DQL_BUILD_EXAMPLES=false -DQL_BUILD_TEST_SUITE=false -DQL_BUILD_BENCHMARK=false -DQL_ENABLE_SESSIONS=true -DORE_BUILD_DOC=false -G "Ninja" ..
52+
- name: cmake build
53+
run: pwd; cd ORE; cd build; cmake --build . -j $(nproc)
54+
- name: Wrap ORE-SWIG
55+
run: pwd; cd OREAnalytics-SWIG/Python; python setup.py wrap
56+
- name: Copy Configuration
57+
run: |
58+
pwd
59+
cp Wheels/oreanalytics-config.linux OREAnalytics-SWIG/oreanalytics-config
60+
cd Wheels
61+
chmod +x before_all_linux.sh
62+
- name: Build ORE wheels
63+
uses: pypa/cibuildwheel@v2.16.2
64+
env:
65+
CIBW_BUILD: "*-manylinux*"
66+
CIBW_SKIP: cp*
67+
#CIBW_BUILD: cp37-manylinux_x86_64
68+
#CIBW_BUILD: cp38-manylinux_x86_64
69+
#CIBW_BUILD: cp39-manylinux_x86_64
70+
#CIBW_BUILD: cp310-manylinux_x86_64
71+
#CIBW_BUILD: cp311-manylinux_x86_64
72+
CIBW_ARCHS_LINUX: x86_64
73+
CIBW_BUILD_VERBOSITY: 2
74+
CIBW_BEFORE_ALL_LINUX: ./Wheels/before_all_linux.sh
75+
#CIBW_ENVIRONMENT_LINUX: CXXFLAGS="-O3 -g0"
76+
CIBW_ENVIRONMENT_LINUX: CXXFLAGS="-std=c++17 -O3 -g0" ORE=/project/ORE
77+
CIBW_ENVIRONMENT_PASS_LINUX: CXXFLAGS
78+
with:
79+
package-dir: /home/runner/work/ORE-SWIG/ORE-SWIG/OREAnalytics-SWIG/Python
80+
- name: Save wheels as artifacts
81+
uses: actions/upload-artifact@v3
82+
with:
83+
name: wheels-linux-manylinux-x86_64
84+
path: ./wheelhouse/*.whl
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Linux x86_64 ManyLinux Wheels (cp*)
2+
3+
on: workflow_dispatch
4+
jobs:
5+
wheels-linux:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- name: Checkout ORE-SWIG
9+
uses: actions/checkout@v3
10+
- name: get QuantLib-SWIG
11+
run: |
12+
git submodule update --init
13+
- name: Checkout ORE
14+
uses: actions/checkout@v3
15+
with:
16+
repository: OpenSourceRisk/Engine
17+
path: './ORE'
18+
fetch-depth: 0
19+
- name: get QuantLib
20+
run: |
21+
cd ORE
22+
git submodule update --init
23+
- name: Set Swap Space
24+
uses: pierotofy/set-swap-space@master
25+
with:
26+
swap-size-gb: 10
27+
- name: Install eigen
28+
run: |
29+
curl -O -L https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
30+
tar zxvf eigen-3.4.0.tar.gz
31+
cd eigen-3.4.0
32+
mkdir build
33+
cd build
34+
cmake ..
35+
export
36+
export Eigen3_DIR=$CURRENT_DIR/eigen-3.4.0
37+
- name: Set up Boost
38+
run: |
39+
sudo apt update
40+
sudo apt install -y libboost-all-dev libboost-test-dev ninja-build
41+
- name: Build Zlib
42+
run: |
43+
pwd
44+
curl -O -L https://www.zlib.net/zlib-1.3.1.tar.gz
45+
tar xzvf zlib-1.3.1.tar.gz
46+
cd zlib-1.3.1
47+
./configure
48+
make
49+
export ZLIB_ROOT=$CURRENT_DIR/zlib-1.3.1
50+
- name: Build ORE
51+
run : pwd; cd ORE; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DORE_USE_ZLIB=ON -DBUILD_SHARED_LIBS=false -DQL_BUILD_EXAMPLES=false -DQL_BUILD_TEST_SUITE=false -DQL_BUILD_BENCHMARK=false -DQL_ENABLE_SESSIONS=true -DORE_BUILD_DOC=false -G "Ninja" ..
52+
- name: cmake build
53+
run: pwd; cd ORE; cd build; cmake --build . -j $(nproc)
54+
- name: Wrap ORE-SWIG
55+
run: pwd; cd OREAnalytics-SWIG/Python; python setup.py wrap
56+
- name: Copy Configuration
57+
run: |
58+
pwd
59+
cp Wheels/oreanalytics-config.linux OREAnalytics-SWIG/oreanalytics-config
60+
cd Wheels
61+
chmod +x before_all_linux.sh
62+
- name: Build ORE wheels
63+
uses: pypa/cibuildwheel@v2.16.2
64+
env:
65+
CIBW_BUILD: "*-manylinux*"
66+
CIBW_SKIP: cp36-* pp*
67+
#CIBW_BUILD: cp37-manylinux_x86_64
68+
#CIBW_BUILD: cp38-manylinux_x86_64
69+
#CIBW_BUILD: cp39-manylinux_x86_64
70+
#CIBW_BUILD: cp310-manylinux_x86_64
71+
#CIBW_BUILD: cp311-manylinux_x86_64
72+
CIBW_ARCHS_LINUX: x86_64
73+
CIBW_BUILD_VERBOSITY: 2
74+
CIBW_BEFORE_ALL_LINUX: ./Wheels/before_all_linux.sh
75+
#CIBW_ENVIRONMENT_LINUX: CXXFLAGS="-O3 -g0"
76+
CIBW_ENVIRONMENT_LINUX: CXXFLAGS="-std=c++17 -O3 -g0" ORE=/project/ORE
77+
CIBW_ENVIRONMENT_PASS_LINUX: CXXFLAGS
78+
with:
79+
package-dir: /home/runner/work/ORE-SWIG/ORE-SWIG/OREAnalytics-SWIG/Python
80+
- name: Save wheels as artifacts
81+
uses: actions/upload-artifact@v3
82+
with:
83+
name: wheels-linux-manylinux-x86_64
84+
path: ./wheelhouse/*.whl
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: MacOS ARM64 Wheels
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
wheels-macos:
8+
runs-on: macos-11
9+
steps:
10+
- name: Checkout ORE-SWIG
11+
uses: actions/checkout@v3
12+
- name: get QuantLib-SWIG
13+
run: |
14+
git submodule update --init
15+
- name: Checkout ORE
16+
uses: actions/checkout@v3
17+
with:
18+
repository: OpenSourceRisk/Engine
19+
path: './ORE'
20+
fetch-depth: 0
21+
- name: get QuantLib
22+
run: |
23+
cd ORE
24+
git submodule update --init
25+
- name: Install Boost
26+
run: |
27+
curl -O -L https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz
28+
tar xfz boost_1_80_0.tar.gz
29+
cd boost_1_80_0
30+
./bootstrap.sh
31+
./b2 architecture=arm address-model=64 -s NO_LZMA=1 -s NO_ZSTD=1 abi=aapcs install
32+
- name: Build ORE CMake
33+
run: |
34+
cd ORE
35+
mkdir build
36+
cd build
37+
cmake .. -DCMAKE_OSX_ARCHITECTURES=arm64 -DORE_USE_ZLIB=ON -DBUILD_SHARED_LIBS=false -DORE_BUILD_DOC=OFF -DORE_BUILD_EXAMPLES=OFF -DORE_BUILD_TESTS=OFF -DORE_BUILD_APP=OFF -DQL_BUILD_BENCHMARK=OFF -DQL_BUILD_EXAMPLES=OFF -DQL_BUILD_TEST_SUITE=OFF -DQL_ENABLE_SESSIONS=ON -DCMAKE_BUILD_TYPE=Release ..
38+
cmake --build . -j4
39+
cmake --install .
40+
- name: Wrap ORE-SWIG
41+
run: |
42+
pwd
43+
python -m pip install setuptools
44+
cp wheels/oreanalytics-config.macos OREAnalytics-SWIG/oreanalytics-config
45+
cd OREAnalytics-SWIG
46+
ls -al
47+
cd SWIG
48+
ls -al
49+
chmod +x oreanalytics.i
50+
cd ..
51+
cd Python
52+
ls -al
53+
pwd
54+
python setup.py wrap
55+
- name: Build Wheels
56+
uses: pypa/cibuildwheel@v2.16.5
57+
env:
58+
CIBW_SKIP: cp36-*
59+
#CIBW_BUILD: cp310-macosx_arm64
60+
#CIBW_BUILD: cp311-macosx_arm64
61+
CIBW_ARCHS_MACOS: arm64
62+
CXXFLAGS: -std=c++17 -g0 -O3
63+
CIBW_BUILD_VERBOSITY: 2
64+
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
65+
DYLD_LIBRARY_PATH=/usr/local/lib delocate-listdeps {wheel} &&
66+
DYLD_LIBRARY_PATH=/usr/local/lib delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}
67+
with:
68+
package-dir: /Users/runner/work/ORE-SWIG/ORE-SWIG/OREAnalytics-SWIG/Python
69+
- name: Save wheels as artifacts
70+
uses: actions/upload-artifact@v3
71+
with:
72+
name: wheels-macos-arm64
73+
path: ./wheelhouse/*.whl
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: MacOS x86 Wheels
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
wheels-macos:
8+
runs-on: macos-11
9+
steps:
10+
- name: Checkout ORE-SWIG
11+
uses: actions/checkout@v3
12+
- name: get QuantLib-SWIG
13+
run: |
14+
git submodule update --init
15+
- name: Checkout ORE
16+
uses: actions/checkout@v3
17+
with:
18+
repository: OpenSourceRisk/Engine
19+
path: './ORE'
20+
fetch-depth: 0
21+
- name: get QuantLib
22+
run: |
23+
cd ORE
24+
git submodule update --init
25+
- name: Install Boost
26+
run: |
27+
curl -O -L https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz
28+
tar xfz boost_1_80_0.tar.gz
29+
cd boost_1_80_0
30+
./bootstrap.sh
31+
./b2 architecture=arm address-model=64 -s NO_LZMA=1 -s NO_ZSTD=1 abi=aapcs install
32+
- name: Build ORE CMake
33+
run: |
34+
cd ORE
35+
mkdir build
36+
cd build
37+
cmake .. -DCMAKE_OSX_ARCHITECTURES=x86_64 -DORE_USE_ZLIB=ON -DBUILD_SHARED_LIBS=false -DORE_BUILD_DOC=OFF -DORE_BUILD_EXAMPLES=OFF -DORE_BUILD_TESTS=OFF -DORE_BUILD_APP=OFF -DQL_BUILD_BENCHMARK=OFF -DQL_BUILD_EXAMPLES=OFF -DQL_BUILD_TEST_SUITE=OFF -DQL_ENABLE_SESSIONS=ON -DCMAKE_BUILD_TYPE=Release ..
38+
cmake --build . -j4
39+
cmake --install .
40+
- name: Wrap ORE-SWIG
41+
run: |
42+
pwd
43+
python -m pip install setuptools
44+
cp wheels/oreanalytics-config.macos OREAnalytics-SWIG/oreanalytics-config
45+
cd OREAnalytics-SWIG/SWIG
46+
chmod +x oreanalytics.i
47+
cd ..
48+
cd Python
49+
pwd
50+
python setup.py wrap
51+
- name: Build Wheels
52+
uses: pypa/cibuildwheel@v2.16.5
53+
env:
54+
CIBW_SKIP: cp36-*
55+
CIBW_ARCHS_MACOS: x86_64
56+
CXXFLAGS: -std=c++17 -g0 -O3 -mmacosx-version-min=10.15
57+
CIBW_BUILD_VERBOSITY: 2
58+
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
59+
DYLD_LIBRARY_PATH=/usr/local/lib delocate-listdeps {wheel} &&
60+
DYLD_LIBRARY_PATH=/usr/local/lib delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}
61+
with:
62+
package-dir: /Users/runner/work/ORE-SWIG/ORE-SWIG/OREAnalytics-SWIG/Python
63+
- name: Save wheels as artifacts
64+
uses: actions/upload-artifact@v3
65+
with:
66+
name: wheels-macos-x86_64
67+
path: ./wheelhouse/*.whl

0 commit comments

Comments
 (0)