Skip to content

Commit 55992ad

Browse files
authored
Merge branch 'swiftwasm-release/5.5' into release/5.5
2 parents 350109f + b733cbf commit 55992ad

File tree

231 files changed

+6890
-216
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

231 files changed

+6890
-216
lines changed

.github/FUNDING.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# These are supported funding model platforms
2+
3+
github: [swiftwasm, kateinoigakukun, MaxDesiatov] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
otechie: # Replace with a single Otechie username
12+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.github/pull.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
version: "1"
2+
rules:
3+
- base: swiftwasm
4+
upstream: main
5+
mergeMethod: merge
6+
- base: main
7+
upstream: apple:main
8+
mergeMethod: hardreset
9+
10+
- base: release/5.3
11+
upstream: apple:release/5.3
12+
mergeMethod: hardreset
13+
- base: swiftwasm-release/5.3
14+
upstream: release/5.3
15+
mergeMethod: merge
16+
17+
- base: release/5.4
18+
upstream: apple:release/5.4
19+
mergeMethod: hardreset
20+
- base: swiftwasm-release/5.4
21+
upstream: release/5.4
22+
mergeMethod: merge
23+
24+
- base: release/5.5
25+
upstream: apple:release/5.5
26+
mergeMethod: hardreset
27+
- base: swiftwasm-release/5.5
28+
upstream: release/5.5
29+
mergeMethod: merge
30+
31+
label: ":arrow_heading_down: Upstream Tracking"

.github/workflows/build-toolchain.yml

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
name: Build Toolchain
2+
3+
on:
4+
push:
5+
branches:
6+
- swiftwasm
7+
- swiftwasm-release/5.3
8+
- swiftwasm-release/5.5
9+
pull_request:
10+
branches:
11+
- swiftwasm
12+
- swiftwasm-release/5.3
13+
- swiftwasm-release/5.5
14+
jobs:
15+
build_toolchain:
16+
env:
17+
TOOLCHAIN_CHANNEL: 5.5
18+
DEVELOPER_DIR: /Applications/Xcode_12.5.app/Contents/Developer/
19+
strategy:
20+
matrix:
21+
include:
22+
- build_os: ubuntu-18.04
23+
agent_query: ubuntu-18.04
24+
target: ubuntu18.04_x86_64
25+
run_stdlib_test: true
26+
run_full_test: false
27+
run_e2e_test: true
28+
build_hello_wasm: true
29+
clean_build_dir: false
30+
31+
- build_os: ubuntu-20.04
32+
agent_query: ubuntu-20.04
33+
target: ubuntu20.04_x86_64
34+
run_stdlib_test: true
35+
run_full_test: false
36+
run_e2e_test: true
37+
build_hello_wasm: true
38+
clean_build_dir: false
39+
40+
- build_os: macos-11
41+
agent_query: macos-11
42+
target: macos_x86_64
43+
run_stdlib_test: true
44+
run_full_test: true
45+
run_e2e_test: true
46+
build_hello_wasm: true
47+
clean_build_dir: false
48+
49+
- build_os: macos-11
50+
agent_query: [self-hosted, macOS, ARM64]
51+
target: macos_arm64
52+
# FIXME: Enable stdlib test after wasmer fixes singlepass bug on arm64,
53+
# fixes cranelift bug on x64, or wasmtime supports arm64
54+
# Currently it's hard to run tests on both x64 and arm64.
55+
run_stdlib_test: false
56+
run_full_test: false
57+
run_e2e_test: false
58+
build_hello_wasm: true
59+
clean_build_dir: true
60+
61+
name: Target ${{ matrix.target }}
62+
timeout-minutes: 0
63+
runs-on: ${{ matrix.agent_query }}
64+
steps:
65+
- name: Free disk space
66+
if: ${{ matrix.build_os == 'ubuntu-20.04' || matrix.build_os == 'ubuntu-18.04' }}
67+
run: |
68+
df -h
69+
sudo apt-get purge libgcc-9-dev gcc-9 libstdc++-9-dev libgcc-10-dev gcc-10 libstdc++-10-dev clang-6.0 llvm-6.0
70+
sudo swapoff -a
71+
sudo rm -f /swapfile
72+
sudo rm -rf /opt/hostedtoolcache
73+
sudo rm -rf /usr/share/dotnet
74+
sudo apt clean
75+
docker rmi $(docker image ls -aq)
76+
df -h
77+
78+
- uses: actions/checkout@v2
79+
with:
80+
path: swift
81+
fetch-depth: 0
82+
83+
- name: Prepare sccache timestamp
84+
id: cache_timestamp
85+
shell: cmake -P {0}
86+
run: |
87+
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
88+
message("::set-output name=timestamp::${current_date}")
89+
90+
- name: Check Xcode version
91+
if: ${{ startsWith(matrix.build_os, 'macos-') }}
92+
run: |
93+
xcodebuild -version
94+
95+
- uses: actions/cache@v1
96+
with:
97+
path: build-cache
98+
key: ${{ matrix.target }}-sccache-v10-${{ steps.cache_timestamp.outputs.timestamp }}
99+
restore-keys: |
100+
${{ matrix.target }}-sccache-v10-
101+
102+
- name: Clean stdlib build directory
103+
if: ${{ matrix.clean_build_dir }}
104+
run: |
105+
rm -rf ${{ github.workspace }}/target-build \
106+
${{ github.workspace }}/host-build \
107+
${{ github.workspace }}/host-toolchain-sdk \
108+
${{ github.workspace }}/dist-toolchain-sdk
109+
110+
- name: Build ${{ matrix.target }} installable archive
111+
env:
112+
SKIP_XCODE_VERSION_CHECK: 1
113+
run: |
114+
115+
case "${{ matrix.target }}" in
116+
"ubuntu20.04_x86_64" | "ubuntu18.04_x86_64" | "macos_x86_64" | "macos_arm64")
117+
./swift/utils/webassembly/ci.sh
118+
;;
119+
*)
120+
echo "Unrecognised target: ${{ matrix.target }}"
121+
exit 1
122+
;;
123+
esac
124+
125+
- name: Upload ${{ matrix.target }} installable archive
126+
uses: actions/upload-artifact@v1
127+
with:
128+
name: ${{ matrix.target }}-installable
129+
path: swift-wasm-${{ env.TOOLCHAIN_CHANNEL }}-SNAPSHOT-${{ matrix.target }}.tar.gz
130+
131+
- name: Add wasmer in PATH for testing
132+
run: echo "$HOME/.wasmer/bin" >> $GITHUB_PATH
133+
134+
- name: Run stdlib tests for wasi-wasm32
135+
if: ${{ matrix.run_stdlib_test }}
136+
run: |
137+
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/target-build/swift-stdlib-wasi-wasm32
138+
./swift/utils/run-test --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
139+
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/stdlib"
140+
./swift/utils/run-test --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
141+
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/Concurrency/Runtime"
142+
143+
- name: Run all tests for wasi-wasm32
144+
if: ${{ matrix.run_full_test }}
145+
run: |
146+
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/target-build/swift-stdlib-wasi-wasm32
147+
# Run all tests but ignore failure temporarily
148+
ninja check-swift-wasi-wasm32 -C "$TARGET_STDLIB_BUILD_DIR" || true
149+
150+
- name: Pack test results
151+
if: ${{ matrix.run_full_test }}
152+
run: |
153+
tar cJf ./swift-test-results.tar.gz target-build/swift-stdlib-wasi-wasm32/swift-test-results
154+
- name: Upload test results
155+
uses: actions/upload-artifact@v1
156+
if: ${{ matrix.run_full_test }}
157+
with:
158+
name: ${{ matrix.target }}-test-results
159+
path: ./swift-test-results.tar.gz
160+
161+
# Run e2e test
162+
- name: Prepare E2E test
163+
run: |
164+
INSTALL_DIR=$(mktemp -d)
165+
tar xf swift-wasm-$TOOLCHAIN_CHANNEL-SNAPSHOT-${{ matrix.target }}.tar.gz -C "$INSTALL_DIR"
166+
echo "TOOLCHAIN=$(find "$INSTALL_DIR" -name "swift-wasm-$TOOLCHAIN_CHANNEL-*" -type d | head -n1)" >> $GITHUB_ENV
167+
- name: Build hello.wasm
168+
shell: bash
169+
if: ${{ matrix.build_hello_wasm }}
170+
run: |
171+
echo 'print("Hello, world!")' > hello.swift
172+
$TOOLCHAIN/usr/bin/swiftc \
173+
-target wasm32-unknown-wasi \
174+
-sdk $TOOLCHAIN/usr/share/wasi-sysroot \
175+
hello.swift -o hello.wasm && \
176+
echo "Successfully linked hello.wasm"
177+
- name: Upload hello.wasm
178+
if: ${{ matrix.build_hello_wasm }}
179+
uses: actions/upload-artifact@v1
180+
with:
181+
name: ${{ matrix.target }}-hello.wasm
182+
path: hello.wasm
183+
- name: Checkout integration-tests
184+
if: ${{ matrix.run_e2e_test }}
185+
uses: actions/checkout@v2
186+
with:
187+
repository: swiftwasm/integration-tests
188+
path: integration-tests
189+
- name: Run integration tests
190+
if: ${{ matrix.run_e2e_test }}
191+
run: |
192+
swift run # Use TOOLCHAIN env value
193+
working-directory: ${{ github.workspace }}/integration-tests
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Manual distribution
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
channel:
6+
description: 'Release channel'
7+
required: true
8+
toolchain_name:
9+
description: 'Toolchain name'
10+
required: true
11+
branch:
12+
description: 'Branch name used to fetch built artifacts. If empty, use default branch based on channel'
13+
display_name:
14+
description: 'Display name for Darwin toolchain'
15+
display_name_short:
16+
description: 'Short display name for Darwin toolchain'
17+
jobs:
18+
manual-distribution:
19+
runs-on: macos-latest
20+
steps:
21+
- uses: actions/checkout@v2
22+
- name: Setup keychain
23+
run: |
24+
security create-keychain -p "$KEYCHAIN_PASSWORD" swiftwasm-ci
25+
KEYCHAIN=$HOME/Library/Keychains/swiftwasm-ci-db
26+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN
27+
security set-keychain-settings -lut 7200 $KEYCHAIN
28+
security default-keychain -s $KEYCHAIN
29+
echo "$DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64" | base64 --decode -o developerID_application.p12
30+
security import developerID_application.p12 -P "$DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD" -T /usr/bin/pkgbuild -T /usr/bin/codesign
31+
echo "$DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64" | base64 --decode -o developerID_installer.p12
32+
security import developerID_installer.p12 -P "$DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD" -T /usr/bin/pkgbuild -T /usr/bin/codesign
33+
security set-key-partition-list -S "apple-tool:,apple:" -s -k "$KEYCHAIN_PASSWORD" $KEYCHAIN
34+
env:
35+
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
36+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
37+
DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64 }}
38+
DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD }}
39+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
40+
DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64 }}
41+
DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD }}
42+
- run: |
43+
BRANCH="${{ github.event.inputs.branch }}"
44+
45+
case "${{ github.event.inputs.channel }}" in
46+
"DEVELOPMENT")
47+
./utils/webassembly/distribute-latest-toolchain.sh ${BRANCH:-swiftwasm} DEVELOPMENT "${{ github.event.inputs.toolchain_name }}"
48+
;;
49+
"5.3")
50+
./utils/webassembly/distribute-latest-toolchain.sh ${BRANCH:-swiftwasm-release/5.3} 5.3 "${{ github.event.inputs.toolchain_name }}"
51+
;;
52+
"5.4")
53+
./utils/webassembly/distribute-latest-toolchain.sh ${BRANCH:-swiftwasm-release/5.4} 5.4 "${{ github.event.inputs.toolchain_name }}"
54+
;;
55+
"5.5")
56+
./utils/webassembly/distribute-latest-toolchain.sh ${BRANCH:-swiftwasm-release/5.5} 5.5 "${{ github.event.inputs.toolchain_name }}"
57+
;;
58+
*)
59+
echo "Unrecognised release channel: ${{ github.event.inputs.channel }}"
60+
exit 1
61+
;;
62+
esac
63+
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.SWIFTWASM_BUILDBOT_TOKEN }}
66+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
67+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
68+
DARWIN_TOOLCHAIN_NOTARIZE_EMAIL: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_EMAIL }}
69+
DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD }}
70+
DARWIN_TOOLCHAIN_DISPLAY_NAME: ${{ github.event.inputs.display_name }}
71+
DARWIN_TOOLCHAIN_DISPLAY_NAME_SHORT: ${{ github.event.inputs.display_name_short }}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Nightly distribution
2+
on:
3+
schedule:
4+
- cron: '0 0 * * *'
5+
jobs:
6+
nightly-distribution:
7+
runs-on: macos-latest
8+
steps:
9+
- uses: actions/checkout@v1
10+
- name: Setup keychain
11+
run: |
12+
security create-keychain -p "$KEYCHAIN_PASSWORD" swiftwasm-ci
13+
KEYCHAIN=$HOME/Library/Keychains/swiftwasm-ci-db
14+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN
15+
security set-keychain-settings -lut 7200 $KEYCHAIN
16+
security default-keychain -s $KEYCHAIN
17+
18+
echo "$DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64" | base64 --decode -o developerID_application.p12
19+
security import developerID_application.p12 -P "$DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD" -T /usr/bin/pkgbuild -T /usr/bin/codesign
20+
echo "$DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64" | base64 --decode -o developerID_installer.p12
21+
security import developerID_installer.p12 -P "$DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD" -T /usr/bin/pkgbuild -T /usr/bin/codesign
22+
23+
security set-key-partition-list -S "apple-tool:,apple:" -s -k "$KEYCHAIN_PASSWORD" $KEYCHAIN
24+
env:
25+
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
26+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
27+
DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT_BASE64 }}
28+
DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT_PASSWORD }}
29+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
30+
DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT_BASE64 }}
31+
DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT_PASSWORD }}
32+
- run: ./utils/webassembly/distribute-latest-toolchain.sh swiftwasm DEVELOPMENT
33+
env:
34+
GITHUB_TOKEN: ${{ secrets.SWIFTWASM_BUILDBOT_TOKEN }}
35+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
36+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
37+
DARWIN_TOOLCHAIN_NOTARIZE_EMAIL: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_EMAIL }}
38+
DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD }}
39+
if: github.ref == 'refs/heads/swiftwasm'
40+
41+
- run: ./utils/webassembly/distribute-latest-toolchain.sh swiftwasm-release/5.3 5.3
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.SWIFTWASM_BUILDBOT_TOKEN }}
44+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
45+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
46+
DARWIN_TOOLCHAIN_NOTARIZE_EMAIL: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_EMAIL }}
47+
DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD }}
48+
49+
- run: ./utils/webassembly/distribute-latest-toolchain.sh swiftwasm-release/5.4 5.4
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.SWIFTWASM_BUILDBOT_TOKEN }}
52+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
53+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
54+
DARWIN_TOOLCHAIN_NOTARIZE_EMAIL: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_EMAIL }}
55+
DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD }}
56+
57+
- run: ./utils/webassembly/distribute-latest-toolchain.sh swiftwasm-release/5.5 5.5
58+
env:
59+
GITHUB_TOKEN: ${{ secrets.SWIFTWASM_BUILDBOT_TOKEN }}
60+
DARWIN_TOOLCHAIN_APPLICATION_CERT: ${{ secrets.DARWIN_TOOLCHAIN_APPLICATION_CERT }}
61+
DARWIN_TOOLCHAIN_INSTALLER_CERT: ${{ secrets.DARWIN_TOOLCHAIN_INSTALLER_CERT }}
62+
DARWIN_TOOLCHAIN_NOTARIZE_EMAIL: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_EMAIL }}
63+
DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD: ${{ secrets.DARWIN_TOOLCHAIN_NOTARIZE_PASSWORD }}

0 commit comments

Comments
 (0)