diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0950dff14adfa..9ca46da5c1f08 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,9 @@ name: CI on: + push: + branches: + - swiftwasm pull_request: branches: - swiftwasm @@ -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 @@ -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 diff --git a/build-linux.sh b/build-linux.sh new file mode 100755 index 0000000000000..7d91a1abd9b57 --- /dev/null +++ b/build-linux.sh @@ -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" diff --git a/build-mac.sh b/build-mac.sh new file mode 100755 index 0000000000000..741b394981492 --- /dev/null +++ b/build-mac.sh @@ -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" diff --git a/ci-linux.sh b/ci-linux.sh new file mode 100755 index 0000000000000..18953fb7ce1f5 --- /dev/null +++ b/ci-linux.sh @@ -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 diff --git a/ci-mac.sh b/ci-mac.sh new file mode 100755 index 0000000000000..dc8bab5527073 --- /dev/null +++ b/ci-mac.sh @@ -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