Skip to content

Commit 2f5a931

Browse files
committed
Move CI build commands to separate scripts (#13)
This allows running build commands in a reproducible way either locally or with any other CI. * Move CI build commands to separate scripts * Run CI on pushes to `swiftwasm` branch * Split build and setup steps into separate scrtipts * Fix execution directories in the build scripts
1 parent 3cacec4 commit 2f5a931

File tree

5 files changed

+108
-92
lines changed

5 files changed

+108
-92
lines changed

.github/workflows/main.yml

+5-92
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
name: CI
22

33
on:
4+
push:
5+
branches:
6+
- swiftwasm
47
pull_request:
58
branches:
69
- swiftwasm
@@ -13,59 +16,7 @@ jobs:
1316
steps:
1417
- uses: actions/checkout@v1
1518
- name: Run a multi-line script
16-
run: |
17-
sudo apt update
18-
sudo apt install \
19-
git ninja-build clang python \
20-
uuid-dev libicu-dev icu-devtools libbsd-dev \
21-
libedit-dev libxml2-dev libsqlite3-dev swig \
22-
libpython-dev libncurses5-dev pkg-config \
23-
libblocksruntime-dev libcurl4-openssl-dev \
24-
systemtap-sdt-dev tzdata rsync
25-
26-
./utils/update-checkout --clone --scheme wasm
27-
git checkout $GITHUB_SHA
28-
export sourcedir=$PWD/..
29-
cd $sourcedir
30-
31-
wget -O install_cmake.sh "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh"
32-
chmod +x install_cmake.sh
33-
sudo mkdir -p /opt/cmake
34-
sudo ./install_cmake.sh --skip-license --prefix=/opt/cmake
35-
sudo ln -sf /opt/cmake/bin/* /usr/local/bin
36-
cmake --version
37-
38-
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
39-
tar xfz wasi-sdk.tar.gz
40-
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
41-
42-
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
43-
tar xf icu.tar.xz
44-
45-
cd swift
46-
utils/build-script --release --wasm --verbose \
47-
--skip-build-benchmarks \
48-
--extra-cmake-options=" \
49-
-DSWIFT_SDKS='WASM;LINUX' \
50-
-DSWIFT_BUILD_SOURCEKIT=FALSE \
51-
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
52-
-DCMAKE_AR='$sourcedir/wasi-sdk/bin/llvm-ar' \
53-
-DCMAKE_RANLIB='$sourcedir/wasi-sdk/bin/llvm-ranlib' \
54-
" \
55-
--build-stdlib-deployment-targets "wasm-wasm32" \
56-
--build-swift-static-stdlib \
57-
--install-destdir="$sourcedir/install" \
58-
--install-prefix="/opt/swiftwasm-sdk" \
59-
--install-swift \
60-
--installable-package="$sourcedir/swiftwasm.tar.gz" \
61-
--llvm-targets-to-build "X86;WebAssembly" \
62-
--stdlib-deployment-targets "wasm-wasm32" \
63-
--wasm-icu-data "todo-icu-data" \
64-
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
65-
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
66-
--wasm-icu-uc "$sourcedir/icu_out/lib" \
67-
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
68-
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
19+
run: ./ci-linux.sh
6920

7021
macos_build:
7122
timeout-minutes: 0
@@ -74,42 +25,4 @@ jobs:
7425
steps:
7526
- uses: actions/checkout@v1
7627
- name: Run a multi-line script
77-
run: |
78-
brew install cmake ninja llvm
79-
./utils/update-checkout --clone --scheme wasm
80-
git checkout $GITHUB_SHA
81-
export sourcedir=$PWD/..
82-
cd $sourcedir
83-
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
84-
tar xfz wasi-sdk.tar.gz
85-
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
86-
# Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't
87-
# find header files in sysroot/include but sysroot/usr/include
88-
mkdir wasi-sdk/share/sysroot/usr/
89-
ln -s ../include wasi-sdk/share/sysroot/usr/include
90-
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
91-
tar xf icu.tar.xz
92-
cd swift
93-
./utils/build-script --release --wasm --verbose \
94-
--skip-build-benchmarks \
95-
--extra-cmake-options=" \
96-
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASM \
97-
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 \
98-
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE \
99-
-DSWIFT_BUILD_SOURCEKIT=FALSE \
100-
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
101-
-DCMAKE_AR='/usr/local/opt/llvm/bin/llvm-ar' \
102-
-DCMAKE_RANLIB='/usr/local/opt/llvm/bin/llvm-ranlib' \
103-
" \
104-
--build-stdlib-deployment-targets "wasm-wasm32" \
105-
--build-swift-dynamic-sdk-overlay false \
106-
--build-swift-static-sdk-overlay false \
107-
--build-swift-static-stdlib \
108-
--llvm-targets-to-build "X86;WebAssembly" \
109-
--stdlib-deployment-targets "wasm-wasm32" \
110-
--wasm-icu-data "todo-icu-data" \
111-
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
112-
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
113-
--wasm-icu-uc "$sourcedir/icu_out/lib" \
114-
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
115-
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
28+
run: ./ci-mac.sh

build-linux.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#/bin/bash
2+
3+
utils/build-script --release --wasm --verbose \
4+
--skip-build-benchmarks \
5+
--extra-cmake-options=" \
6+
-DSWIFT_SDKS='WASM;LINUX' \
7+
-DSWIFT_BUILD_SOURCEKIT=FALSE \
8+
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
9+
-DCMAKE_AR='$sourcedir/wasi-sdk/bin/llvm-ar' \
10+
-DCMAKE_RANLIB='$sourcedir/wasi-sdk/bin/llvm-ranlib' \
11+
" \
12+
--build-stdlib-deployment-targets "wasm-wasm32" \
13+
--build-swift-static-stdlib \
14+
--install-destdir="$sourcedir/install" \
15+
--install-prefix="/opt/swiftwasm-sdk" \
16+
--install-swift \
17+
--installable-package="$sourcedir/swiftwasm.tar.gz" \
18+
--llvm-targets-to-build "X86;WebAssembly" \
19+
--stdlib-deployment-targets "wasm-wasm32" \
20+
--wasm-icu-data "todo-icu-data" \
21+
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
22+
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
23+
--wasm-icu-uc "$sourcedir/icu_out/lib" \
24+
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
25+
--wasm-wasi-sdk "$sourcedir/wasi-sdk"

build-mac.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#/bin/bash
2+
3+
./utils/build-script --release --wasm --verbose \
4+
--skip-build-benchmarks \
5+
--extra-cmake-options=" \
6+
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASM \
7+
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 \
8+
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE \
9+
-DSWIFT_BUILD_SOURCEKIT=FALSE \
10+
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
11+
-DCMAKE_AR='/usr/local/opt/llvm/bin/llvm-ar' \
12+
-DCMAKE_RANLIB='/usr/local/opt/llvm/bin/llvm-ranlib' \
13+
" \
14+
--build-stdlib-deployment-targets "wasm-wasm32" \
15+
--build-swift-dynamic-sdk-overlay false \
16+
--build-swift-static-sdk-overlay false \
17+
--build-swift-static-stdlib \
18+
--llvm-targets-to-build "X86;WebAssembly" \
19+
--stdlib-deployment-targets "wasm-wasm32" \
20+
--wasm-icu-data "todo-icu-data" \
21+
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
22+
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
23+
--wasm-icu-uc "$sourcedir/icu_out/lib" \
24+
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
25+
--wasm-wasi-sdk "$sourcedir/wasi-sdk"

ci-linux.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#/bin/bash
2+
3+
sudo apt update
4+
sudo apt install \
5+
git ninja-build clang python \
6+
uuid-dev libicu-dev icu-devtools libbsd-dev \
7+
libedit-dev libxml2-dev libsqlite3-dev swig \
8+
libpython-dev libncurses5-dev pkg-config \
9+
libblocksruntime-dev libcurl4-openssl-dev \
10+
systemtap-sdt-dev tzdata rsync
11+
12+
export current_sha=`git rev-parse HEAD`
13+
./utils/update-checkout --clone --scheme wasm
14+
git checkout $current_sha
15+
export sourcedir=$PWD/..
16+
cd $sourcedir
17+
18+
wget -O install_cmake.sh "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh"
19+
chmod +x install_cmake.sh
20+
sudo mkdir -p /opt/cmake
21+
sudo ./install_cmake.sh --skip-license --prefix=/opt/cmake
22+
sudo ln -sf /opt/cmake/bin/* /usr/local/bin
23+
cmake --version
24+
25+
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
26+
tar xfz wasi-sdk.tar.gz
27+
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
28+
29+
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
30+
tar xf icu.tar.xz
31+
32+
cd swift
33+
./build-linux.sh

ci-mac.sh

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#/bin/bash
2+
3+
brew install cmake ninja llvm
4+
export current_sha=`git rev-parse HEAD`
5+
./utils/update-checkout --clone --scheme wasm
6+
git checkout $current_sha
7+
export sourcedir=$PWD/..
8+
cd $sourcedir
9+
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
10+
tar xfz wasi-sdk.tar.gz
11+
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
12+
# Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't
13+
# find header files in sysroot/include but sysroot/usr/include
14+
mkdir wasi-sdk/share/sysroot/usr/
15+
ln -s ../include wasi-sdk/share/sysroot/usr/include
16+
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
17+
tar xf icu.tar.xz
18+
19+
cd swift
20+
./build-mac.sh

0 commit comments

Comments
 (0)