From 1e2ef410f5773629d50770db59d7c3e745fa22e7 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 14 Nov 2019 13:53:49 +0000 Subject: [PATCH 1/7] Run packaging scripts and smoke test on CI --- ci-linux.sh | 10 ++++++++++ ci-mac.sh | 10 ++++++++++ prepare-package.sh | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 prepare-package.sh diff --git a/ci-linux.sh b/ci-linux.sh index 467e38b1f1403..8ef0f2e322b0a 100755 --- a/ci-linux.sh +++ b/ci-linux.sh @@ -32,3 +32,13 @@ tar xf icu.tar.xz cd swift ./build-linux.sh +./prepare-package.sh + +cd ../swiftwasm-package-sdk +cp ../swiftwasm.tar.gz prebuilt +./build-linux-package.sh +cd output +tar xf swiftwasm-sdk-linux.tar.xz + +cd swiftwasm-sdk +./swiftwasm example/hello.swift hello.wasm diff --git a/ci-mac.sh b/ci-mac.sh index d3a08d7164af9..a185d6db6adfc 100755 --- a/ci-mac.sh +++ b/ci-mac.sh @@ -19,3 +19,13 @@ tar xf icu.tar.xz cd swift ./build-mac.sh +./prepare-package.sh + +cd ../swiftwasm-package-sdk +cp ../swiftwasm-mac.tar.gz prebuilt +./build-mac-package.sh +cd output +tar xf swiftwasm-sdk-macos.tar.xz + +cd swiftwasm-sdk +./swiftwasm example/hello.swift hello.wasm diff --git a/prepare-package.sh b/prepare-package.sh new file mode 100644 index 0000000000000..30953d82ea55a --- /dev/null +++ b/prepare-package.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd .. +git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git +mkdir swiftwasm-package-sdk/prebuilt +cd swiftwasm-package-sdk/prebuilt +wget http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz +cp ../../icu.tar.xz icu4c-wasi.tar.xz +cp ../../wasi-sdk.tar.gz wasi-sdk-prebuilt-linux.tar.gz +cd ../../swift \ No newline at end of file From d26a597ea6bfa086e7ee99b7256ce18ddd19e360 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 14 Nov 2019 18:35:04 +0000 Subject: [PATCH 2/7] Make prepare-package.sh executable --- prepare-package.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 prepare-package.sh diff --git a/prepare-package.sh b/prepare-package.sh old mode 100644 new mode 100755 From e69e605298212d6f0c39861f781a5d71921c4a8c Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Fri, 15 Nov 2019 07:43:34 +0000 Subject: [PATCH 3/7] Make SymbolLookup.swift compilable for wasm --- stdlib/private/StdlibUnittest/SymbolLookup.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stdlib/private/StdlibUnittest/SymbolLookup.swift b/stdlib/private/StdlibUnittest/SymbolLookup.swift index 2e9c627487a4f..6967c11327e0e 100644 --- a/stdlib/private/StdlibUnittest/SymbolLookup.swift +++ b/stdlib/private/StdlibUnittest/SymbolLookup.swift @@ -12,7 +12,7 @@ #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) import Darwin -#elseif os(Linux) || os(FreeBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku) +#elseif os(Linux) || os(FreeBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku) || os(Wasm) import Glibc #elseif os(Windows) import MSVCRT @@ -23,7 +23,7 @@ #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2) -#elseif os(Linux) +#elseif os(Linux) || os(Wasm) let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: 0) #elseif os(Android) #if arch(arm) || arch(i386) @@ -43,6 +43,8 @@ public func pointerToSwiftCoreSymbol(name: String) -> UnsafeMutableRawPointer? { #if os(Windows) return unsafeBitCast(GetProcAddress(hStdlibCore, name), to: UnsafeMutableRawPointer?.self) +#elseif os(Wasm) + fatalError("\(#function) is not supported on WebAssembly") #else return dlsym(RTLD_DEFAULT, name) #endif From 5a528c2d74562eb41267878e19faad06c23c6a11 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Fri, 15 Nov 2019 10:29:06 +0000 Subject: [PATCH 4/7] Use GitHub Actions upload/download steps --- .github/workflows/main.yml | 37 +++++++++++++++++++++++++++++++++++-- build-linux.sh | 2 +- prepare-package.sh | 8 ++------ 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9ca46da5c1f08..af82cdb41e5ed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,8 +15,13 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Run a multi-line script + - name: Build Linux installable archive run: ./ci-linux.sh + - name: Upload Linux installable archive + uses: actions/upload-artifact@v1 + with: + name: linux-installable + path: ../swiftwasm-linux.tar.gz macos_build: timeout-minutes: 0 @@ -24,5 +29,33 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Run a multi-line script + - name: Build macOS installable archive run: ./ci-mac.sh + - name: Upload macOS installable archive + uses: actions/upload-artifact@v1 + with: + name: macos-installable + path: ../swiftwasm-mac.tar.gz + + package: + name: Build SwiftWasm packages + needs: + - linux_build + - macos_build + runs-on: ubuntu-18.04 + steps: + - name: Download installable Linux archive + uses: actions/download-artifact@v1 + with: + name: linux-installable + - name: Download installable macOS archive + uses: actions/download-artifact@v1 + with: + name: macos-installable + - name: Build the packages + shell: bash + run: | + ./prepare-package.sh + cp linux-installable/swiftwasm-linux.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm.tar.gz + cp macos-installable/swiftwasm-mac.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm-mac.tar.gz + cd swiftwasm-package-sdk && ./build-packages.sh diff --git a/build-linux.sh b/build-linux.sh index 285a5b05a3c9c..30285c85a2dc9 100755 --- a/build-linux.sh +++ b/build-linux.sh @@ -16,7 +16,7 @@ export sourcedir=$PWD/.. --install-destdir="$sourcedir/install" \ --install-prefix="/opt/swiftwasm-sdk" \ --install-swift \ - --installable-package="$sourcedir/swiftwasm.tar.gz" \ + --installable-package="$sourcedir/swiftwasm-linux.tar.gz" \ --llvm-targets-to-build "X86;WebAssembly" \ --stdlib-deployment-targets "wasm-wasm32" \ --wasm-icu-data "todo-icu-data" \ diff --git a/prepare-package.sh b/prepare-package.sh index 30953d82ea55a..7909dcda6ed49 100755 --- a/prepare-package.sh +++ b/prepare-package.sh @@ -2,9 +2,5 @@ cd .. git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git -mkdir swiftwasm-package-sdk/prebuilt -cd swiftwasm-package-sdk/prebuilt -wget http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz -cp ../../icu.tar.xz icu4c-wasi.tar.xz -cp ../../wasi-sdk.tar.gz wasi-sdk-prebuilt-linux.tar.gz -cd ../../swift \ No newline at end of file +cd swiftwasm-package-sdk +./download-installable-prebuilts.sh From 314d3285e85009ed0375d09a5f0a107b4d9d8cc3 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Fri, 15 Nov 2019 12:35:52 +0000 Subject: [PATCH 5/7] Remove packaging steps from ci-*.sh --- .github/workflows/main.yml | 4 ++++ ci-linux.sh | 10 ---------- ci-mac.sh | 10 ---------- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index af82cdb41e5ed..8d31b3dec4735 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -59,3 +59,7 @@ jobs: cp linux-installable/swiftwasm-linux.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm.tar.gz cp macos-installable/swiftwasm-mac.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm-mac.tar.gz cd swiftwasm-package-sdk && ./build-packages.sh + cd output + tar xf swiftwasm-sdk-linux.tar.xz + cd swiftwasm-sdk + ./swiftwasm example/hello.swift hello.wasm diff --git a/ci-linux.sh b/ci-linux.sh index 8ef0f2e322b0a..467e38b1f1403 100755 --- a/ci-linux.sh +++ b/ci-linux.sh @@ -32,13 +32,3 @@ tar xf icu.tar.xz cd swift ./build-linux.sh -./prepare-package.sh - -cd ../swiftwasm-package-sdk -cp ../swiftwasm.tar.gz prebuilt -./build-linux-package.sh -cd output -tar xf swiftwasm-sdk-linux.tar.xz - -cd swiftwasm-sdk -./swiftwasm example/hello.swift hello.wasm diff --git a/ci-mac.sh b/ci-mac.sh index a185d6db6adfc..d3a08d7164af9 100755 --- a/ci-mac.sh +++ b/ci-mac.sh @@ -19,13 +19,3 @@ tar xf icu.tar.xz cd swift ./build-mac.sh -./prepare-package.sh - -cd ../swiftwasm-package-sdk -cp ../swiftwasm-mac.tar.gz prebuilt -./build-mac-package.sh -cd output -tar xf swiftwasm-sdk-macos.tar.xz - -cd swiftwasm-sdk -./swiftwasm example/hello.swift hello.wasm From da523fd68652e7f91e44dee1b1dd84b02fa6a5af Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Fri, 15 Nov 2019 19:54:56 +0000 Subject: [PATCH 6/7] Move prepare-package.sh to main.yml to avoid clone --- .github/workflows/main.yml | 10 ++++++---- prepare-package.sh | 6 ------ 2 files changed, 6 insertions(+), 10 deletions(-) delete mode 100755 prepare-package.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8d31b3dec4735..5b4817a704f17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -55,10 +55,12 @@ jobs: - name: Build the packages shell: bash run: | - ./prepare-package.sh - cp linux-installable/swiftwasm-linux.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm.tar.gz - cp macos-installable/swiftwasm-mac.tar.gz swiftwasm-package-sdk/prebuilt/swiftwasm-mac.tar.gz - cd swiftwasm-package-sdk && ./build-packages.sh + git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git + cd swiftwasm-package-sdk + ./download-prebuilts.sh + cp ../linux-installable/swiftwasm-linux.tar.gz prebuilt/swiftwasm.tar.gz + cp ../macos-installable/swiftwasm-mac.tar.gz prebuilt/swiftwasm-mac.tar.gz + ./build-packages.sh cd output tar xf swiftwasm-sdk-linux.tar.xz cd swiftwasm-sdk diff --git a/prepare-package.sh b/prepare-package.sh deleted file mode 100755 index 7909dcda6ed49..0000000000000 --- a/prepare-package.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -cd .. -git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git -cd swiftwasm-package-sdk -./download-installable-prebuilts.sh From cfbaa2262c5d6541534f56ae9dd00b02429b3208 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Fri, 15 Nov 2019 23:51:33 +0000 Subject: [PATCH 7/7] Refine formatting in .github/workflows/main.yml --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5b4817a704f17..6ece20e7139ad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -58,10 +58,13 @@ jobs: git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git cd swiftwasm-package-sdk ./download-prebuilts.sh + cp ../linux-installable/swiftwasm-linux.tar.gz prebuilt/swiftwasm.tar.gz cp ../macos-installable/swiftwasm-mac.tar.gz prebuilt/swiftwasm-mac.tar.gz ./build-packages.sh + cd output tar xf swiftwasm-sdk-linux.tar.xz + cd swiftwasm-sdk ./swiftwasm example/hello.swift hello.wasm