Skip to content

Commit

Permalink
Move CI build commands to separate scripts (#13)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
MaxDesiatov authored and kateinoigakukun committed Dec 14, 2019
1 parent 15a01df commit 2394ea8
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 92 deletions.
97 changes: 5 additions & 92 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: CI

on:
push:
branches:
- swiftwasm
pull_request:
branches:
- swiftwasm
Expand All @@ -13,59 +16,7 @@ jobs:
steps:
- uses: actions/checkout@v1
- name: Run a multi-line script
run: |
sudo apt update
sudo apt install \
git ninja-build clang python \
uuid-dev libicu-dev icu-devtools libbsd-dev \
libedit-dev libxml2-dev libsqlite3-dev swig \
libpython-dev libncurses5-dev pkg-config \
libblocksruntime-dev libcurl4-openssl-dev \
systemtap-sdt-dev tzdata rsync
./utils/update-checkout --clone --scheme wasm
git checkout $GITHUB_SHA
export sourcedir=$PWD/..
cd $sourcedir
wget -O install_cmake.sh "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh"
chmod +x install_cmake.sh
sudo mkdir -p /opt/cmake
sudo ./install_cmake.sh --skip-license --prefix=/opt/cmake
sudo ln -sf /opt/cmake/bin/* /usr/local/bin
cmake --version
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
tar xfz wasi-sdk.tar.gz
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
tar xf icu.tar.xz
cd swift
utils/build-script --release --wasm --verbose \
--skip-build-benchmarks \
--extra-cmake-options=" \
-DSWIFT_SDKS='WASM;LINUX' \
-DSWIFT_BUILD_SOURCEKIT=FALSE \
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
-DCMAKE_AR='$sourcedir/wasi-sdk/bin/llvm-ar' \
-DCMAKE_RANLIB='$sourcedir/wasi-sdk/bin/llvm-ranlib' \
" \
--build-stdlib-deployment-targets "wasm-wasm32" \
--build-swift-static-stdlib \
--install-destdir="$sourcedir/install" \
--install-prefix="/opt/swiftwasm-sdk" \
--install-swift \
--installable-package="$sourcedir/swiftwasm.tar.gz" \
--llvm-targets-to-build "X86;WebAssembly" \
--stdlib-deployment-targets "wasm-wasm32" \
--wasm-icu-data "todo-icu-data" \
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
--wasm-icu-uc "$sourcedir/icu_out/lib" \
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
run: ./ci-linux.sh

macos_build:
timeout-minutes: 0
Expand All @@ -74,42 +25,4 @@ jobs:
steps:
- uses: actions/checkout@v1
- name: Run a multi-line script
run: |
brew install cmake ninja llvm
./utils/update-checkout --clone --scheme wasm
git checkout $GITHUB_SHA
export sourcedir=$PWD/..
cd $sourcedir
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
tar xfz wasi-sdk.tar.gz
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
# Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't
# find header files in sysroot/include but sysroot/usr/include
mkdir wasi-sdk/share/sysroot/usr/
ln -s ../include wasi-sdk/share/sysroot/usr/include
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
tar xf icu.tar.xz
cd swift
./utils/build-script --release --wasm --verbose \
--skip-build-benchmarks \
--extra-cmake-options=" \
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASM \
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 \
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE \
-DSWIFT_BUILD_SOURCEKIT=FALSE \
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
-DCMAKE_AR='/usr/local/opt/llvm/bin/llvm-ar' \
-DCMAKE_RANLIB='/usr/local/opt/llvm/bin/llvm-ranlib' \
" \
--build-stdlib-deployment-targets "wasm-wasm32" \
--build-swift-dynamic-sdk-overlay false \
--build-swift-static-sdk-overlay false \
--build-swift-static-stdlib \
--llvm-targets-to-build "X86;WebAssembly" \
--stdlib-deployment-targets "wasm-wasm32" \
--wasm-icu-data "todo-icu-data" \
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
--wasm-icu-uc "$sourcedir/icu_out/lib" \
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
run: ./ci-mac.sh
25 changes: 25 additions & 0 deletions build-linux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#/bin/bash

utils/build-script --release --wasm --verbose \
--skip-build-benchmarks \
--extra-cmake-options=" \
-DSWIFT_SDKS='WASM;LINUX' \
-DSWIFT_BUILD_SOURCEKIT=FALSE \
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
-DCMAKE_AR='$sourcedir/wasi-sdk/bin/llvm-ar' \
-DCMAKE_RANLIB='$sourcedir/wasi-sdk/bin/llvm-ranlib' \
" \
--build-stdlib-deployment-targets "wasm-wasm32" \
--build-swift-static-stdlib \
--install-destdir="$sourcedir/install" \
--install-prefix="/opt/swiftwasm-sdk" \
--install-swift \
--installable-package="$sourcedir/swiftwasm.tar.gz" \
--llvm-targets-to-build "X86;WebAssembly" \
--stdlib-deployment-targets "wasm-wasm32" \
--wasm-icu-data "todo-icu-data" \
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
--wasm-icu-uc "$sourcedir/icu_out/lib" \
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
25 changes: 25 additions & 0 deletions build-mac.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#/bin/bash

./utils/build-script --release --wasm --verbose \
--skip-build-benchmarks \
--extra-cmake-options=" \
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASM \
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 \
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE \
-DSWIFT_BUILD_SOURCEKIT=FALSE \
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE \
-DCMAKE_AR='/usr/local/opt/llvm/bin/llvm-ar' \
-DCMAKE_RANLIB='/usr/local/opt/llvm/bin/llvm-ranlib' \
" \
--build-stdlib-deployment-targets "wasm-wasm32" \
--build-swift-dynamic-sdk-overlay false \
--build-swift-static-sdk-overlay false \
--build-swift-static-stdlib \
--llvm-targets-to-build "X86;WebAssembly" \
--stdlib-deployment-targets "wasm-wasm32" \
--wasm-icu-data "todo-icu-data" \
--wasm-icu-i18n "$sourcedir/icu_out/lib" \
--wasm-icu-i18n-include "$sourcedir/icu_out/include" \
--wasm-icu-uc "$sourcedir/icu_out/lib" \
--wasm-icu-uc-include "$sourcedir/icu_out/include" \
--wasm-wasi-sdk "$sourcedir/wasi-sdk"
33 changes: 33 additions & 0 deletions ci-linux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#/bin/bash

sudo apt update
sudo apt install \
git ninja-build clang python \
uuid-dev libicu-dev icu-devtools libbsd-dev \
libedit-dev libxml2-dev libsqlite3-dev swig \
libpython-dev libncurses5-dev pkg-config \
libblocksruntime-dev libcurl4-openssl-dev \
systemtap-sdt-dev tzdata rsync

export current_sha=`git rev-parse HEAD`
./utils/update-checkout --clone --scheme wasm
git checkout $current_sha
export sourcedir=$PWD/..
cd $sourcedir

wget -O install_cmake.sh "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.sh"
chmod +x install_cmake.sh
sudo mkdir -p /opt/cmake
sudo ./install_cmake.sh --skip-license --prefix=/opt/cmake
sudo ln -sf /opt/cmake/bin/* /usr/local/bin
cmake --version

wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
tar xfz wasi-sdk.tar.gz
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk

wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
tar xf icu.tar.xz

cd swift
./build-linux.sh
20 changes: 20 additions & 0 deletions ci-mac.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#/bin/bash

brew install cmake ninja llvm
export current_sha=`git rev-parse HEAD`
./utils/update-checkout --clone --scheme wasm
git checkout $current_sha
export sourcedir=$PWD/..
cd $sourcedir
wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz
tar xfz wasi-sdk.tar.gz
mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk
# Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't
# find header files in sysroot/include but sysroot/usr/include
mkdir wasi-sdk/share/sysroot/usr/
ln -s ../include wasi-sdk/share/sysroot/usr/include
wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz"
tar xf icu.tar.xz

cd swift
./build-mac.sh

0 comments on commit 2394ea8

Please sign in to comment.