Skip to content

Commit 3ef0683

Browse files
Merge pull request #2 from swiftwasm/katei/reduce-build-product
Reduce build products
2 parents ce81aa3 + 97a09ac commit 3ef0683

File tree

14 files changed

+368
-262
lines changed

14 files changed

+368
-262
lines changed

.github/workflows/build-toolchain.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,8 @@ jobs:
142142
- name: Clean build directory
143143
if: ${{ matrix.clean_build_dir }}
144144
run: |
145-
rm -rf ${{ github.workspace }}/target-build \
146-
${{ github.workspace }}/host-build \
147-
${{ github.workspace }}/build-sdk \
148-
${{ github.workspace }}/host-toolchain-sdk \
149-
${{ github.workspace }}/dist-toolchain-sdk
145+
rm -rf ${{ github.workspace }}/build \
146+
${{ github.workspace }}/build-sdk
150147
151148
- run: chmod -R 777 ./build-cache
152149
if: ${{ steps.build-cache.outputs.cache-hit }}
@@ -173,7 +170,7 @@ jobs:
173170
-v ${{ github.workspace }}:/source \
174171
-v oss-swift-package:/home/build-user \
175172
${{ matrix.container }}
176-
docker exec swiftwasm-ci-buildbot /bin/bash -lc 'env; cp -r /source/* /home/build-user/; ./swiftwasm-build/tools/build/ci.sh'
173+
docker exec swiftwasm-ci-buildbot /bin/bash -lc 'env; cp -r /source/* /home/build-user/; ./swiftwasm-build/tools/build/ci.sh ${{ matrix.scheme }}'
177174
docker cp swiftwasm-ci-buildbot:/home/build-user/swift-wasm-${{ env.TOOLCHAIN_CHANNEL }}-SNAPSHOT-${{ matrix.target }}.tar.gz .
178175
179176
- name: Extract build-cache from Docker container
@@ -187,7 +184,7 @@ jobs:
187184
timeout-minutes: 300 # Exit before 6 hours limit to allow cache upload
188185
env:
189186
SKIP_XCODE_VERSION_CHECK: 1
190-
run: ./swiftwasm-build/tools/build/ci.sh
187+
run: ./swiftwasm-build/tools/build/ci.sh ${{ matrix.scheme }}
191188

192189
- uses: actions/cache/save@v3
193190
if: ${{ always() }}
@@ -207,24 +204,24 @@ jobs:
207204
- name: Run stdlib tests for wasi-wasm32
208205
if: ${{ matrix.run_stdlib_test && matrix.container != null }}
209206
run: |
210-
docker exec swiftwasm-ci-buildbot /bin/bash -lc "cd target-build/swift-stdlib-wasi-wasm32 && ninja check-swift-wasi-wasm32-custom"
207+
docker exec swiftwasm-ci-buildbot /bin/bash -lc "cd build/WebAssembly/swift-stdlib-wasi-wasm32 && ninja check-swift-wasi-wasm32-custom"
211208
- name: Run stdlib tests for wasi-wasm32
212209
if: ${{ matrix.run_stdlib_test && matrix.container == null }}
213210
run: |
214-
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/target-build/swift-stdlib-wasi-wasm32
211+
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/build/WebAssembly/swift-stdlib-wasi-wasm32
215212
ninja check-swift-wasi-wasm32-custom -C "$TARGET_STDLIB_BUILD_DIR"
216213
217214
- name: Run all tests for wasi-wasm32
218215
if: ${{ matrix.run_full_test }}
219216
run: |
220-
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/target-build/swift-stdlib-wasi-wasm32
217+
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/build/WebAssembly/swift-stdlib-wasi-wasm32
221218
# Run all tests but ignore failure temporarily
222219
ninja check-swift-wasi-wasm32 -C "$TARGET_STDLIB_BUILD_DIR" || true
223220
224221
- name: Pack test results
225222
if: ${{ matrix.run_full_test }}
226223
run: |
227-
tar cJf ./swift-test-results.tar.gz target-build/swift-stdlib-wasi-wasm32/swift-test-results
224+
tar cJf ./swift-test-results.tar.gz build/WebAssembly/swift-stdlib-wasi-wasm32/swift-test-results
228225
- name: Upload test results
229226
uses: actions/upload-artifact@v3
230227
if: ${{ matrix.run_full_test }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__pycache__

schemes/main/manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
"repos": {
44
"swift-corelibs-foundation": "660624d0220c0efbef054f4919f9f01fd3866be1",
55
"swift-corelibs-xctest": "77bc9f5386ee8a2a4e8da5ac30e846b451d101b6"
6-
}
6+
},
7+
"swift-org-download-channel": "development"
78
}

tools/build/build-foundation.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ TOOLS_BUILD_PATH="$(cd "$(dirname "$0")" && pwd)"
77
BUILD_SDK_PATH="$SOURCE_PATH/build-sdk"
88
LIBXML2_PATH="$BUILD_SDK_PATH/libxml2"
99

10-
FOUNDATION_BUILD="$SOURCE_PATH/target-build/foundation-wasi-wasm32"
10+
FOUNDATION_BUILD="$SOURCE_PATH/build/WebAssembly/foundation-wasi-wasm32"
1111

1212
mkdir -p $FOUNDATION_BUILD
1313
cd $FOUNDATION_BUILD

tools/build/build-presets.ini

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ release
1717
assertions
1818
install-swift
1919
install-destdir=%(INSTALL_DESTDIR)s
20-
swift-install-components=autolink-driver;compiler;clang-resource-dir-symlink;stdlib;sdk-overlay;editor-integration;tools;testsuite-tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers
20+
swift-install-components=autolink-driver;compiler;clang-resource-dir-symlink;stdlib;sdk-overlay;editor-integration;tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers
2121
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib
2222
install-prefix=/usr
2323

@@ -36,34 +36,12 @@ mixin-preset=
3636
webassembly-host
3737
webassembly-install
3838

39-
llbuild
40-
swiftpm
41-
indexstore-db
42-
sourcekit-lsp
4339
build-lld
4440

4541
install-llvm
4642
install-swift
47-
install-llbuild
48-
install-swiftpm
49-
install-sourcekit-lsp
5043
install-swiftsyntax
5144

5245
[preset: webassembly-linux-host-install]
5346

5447
mixin-preset=webassembly-host-install
55-
56-
libdispatch
57-
libicu
58-
foundation
59-
xctest
60-
61-
install-libicu
62-
install-foundation
63-
install-libdispatch
64-
install-xctest
65-
66-
skip-test-libicu
67-
skip-test-foundation
68-
skip-test-libdispatch
69-
skip-test-xctest

tools/build/build-toolchain.sh

Lines changed: 13 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,10 @@ WASI_SYSROOT_PATH="$BUILD_SDK_PATH/wasi-sysroot"
99

1010
case $(uname -s) in
1111
Darwin)
12-
OS_SUFFIX=macos_$(uname -m)
1312
HOST_PRESET=webassembly-host-install
1413
HOST_SUFFIX=macosx-$(uname -m)
1514
;;
1615
Linux)
17-
if [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=18.04" ]; then
18-
OS_SUFFIX=ubuntu18.04_$(uname -m)
19-
elif [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=20.04" ]; then
20-
OS_SUFFIX=ubuntu20.04_$(uname -m)
21-
elif [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=22.04" ]; then
22-
OS_SUFFIX=ubuntu22.04_$(uname -m)
23-
elif [[ "$(grep PRETTY_NAME /etc/os-release)" == 'PRETTY_NAME="Amazon Linux 2"' ]]; then
24-
OS_SUFFIX=amazonlinux2_$(uname -m)
25-
else
26-
echo "Unknown Ubuntu version"
27-
exit 1
28-
fi
2916
HOST_PRESET=webassembly-linux-host-install
3017
HOST_SUFFIX=linux-$(uname -m)
3118
;;
@@ -43,9 +30,6 @@ while [ $# -ne 0 ]; do
4330
case "$1" in
4431
--skip-build-host-toolchain)
4532
OPTIONS_BUILD_HOST_TOOLCHAIN=0
46-
;;
47-
--daily-snapshot)
48-
OPTIONS_DAILY_SNAPSHOT=1
4933
;;
5034
*)
5135
echo "Unrecognised argument \"$1\""
@@ -55,25 +39,12 @@ while [ $# -ne 0 ]; do
5539
shift
5640
done
5741

58-
YEAR=$(date +"%Y")
59-
MONTH=$(date +"%m")
60-
DAY=$(date +"%d")
61-
62-
if [ ${OPTIONS_DAILY_SNAPSHOT} -eq 1 ]; then
63-
TOOLCHAIN_NAME="swift-wasm-${TOOLCHAIN_CHANNEL}-SNAPSHOT-${YEAR}-${MONTH}-${DAY}-a"
64-
else
65-
TOOLCHAIN_NAME="swift-wasm-${TOOLCHAIN_CHANNEL}-SNAPSHOT"
66-
fi
67-
68-
PACKAGE_ARTIFACT="$SOURCE_PATH/swift-wasm-${TOOLCHAIN_CHANNEL}-SNAPSHOT-${OS_SUFFIX}.tar.gz"
69-
70-
HOST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/host-toolchain-sdk
71-
DIST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/dist-toolchain-sdk
72-
DIST_TOOLCHAIN_SDK=$DIST_TOOLCHAIN_DESTDIR/$TOOLCHAIN_NAME
73-
42+
PACKAGING_DIR="$SOURCE_PATH/build/Packaging"
43+
HOST_TOOLCHAIN_DESTDIR=$PACKAGING_DIR/host-toolchain
44+
TARGET_TOOLCHAIN_DESTDIR=$PACKAGING_DIR/target-toolchain
7445

75-
HOST_BUILD_ROOT=$SOURCE_PATH/host-build
76-
TARGET_BUILD_ROOT=$SOURCE_PATH/target-build
46+
HOST_BUILD_ROOT=$SOURCE_PATH/build/WebAssemblyCompiler
47+
TARGET_BUILD_ROOT=$SOURCE_PATH/build/WebAssembly
7748
HOST_BUILD_DIR=$HOST_BUILD_ROOT/Ninja-ReleaseAssert
7849

7950
build_host_toolchain() {
@@ -99,7 +70,7 @@ build_target_toolchain() {
9970
-D CMAKE_AR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ar" \
10071
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
10172
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
102-
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr/lib/clang/13.0.0/" \
73+
-D CMAKE_INSTALL_PREFIX="$TARGET_TOOLCHAIN_DESTDIR/usr/lib/clang/13.0.0/" \
10374
-D CMAKE_SYSROOT="${WASI_SYSROOT_PATH}" \
10475
-G Ninja \
10576
-S "$SOURCE_PATH/llvm-project/compiler-rt"
@@ -130,7 +101,7 @@ build_target_toolchain() {
130101
-D CMAKE_BUILD_TYPE=Release \
131102
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
132103
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
133-
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr" \
104+
-D CMAKE_INSTALL_PREFIX="$TARGET_TOOLCHAIN_DESTDIR/usr" \
134105
-D LLVM_BIN="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin" \
135106
-D LLVM_DIR="$LLVM_TARGET_BUILD_DIR/lib/cmake/llvm/" \
136107
-D LLVM_COMPILER_CHECKED=YES \
@@ -166,66 +137,10 @@ build_target_toolchain() {
166137

167138
# Remove host CoreFoundation module directory to avoid module conflict
168139
# while building Foundation
169-
rm -rf "$DIST_TOOLCHAIN_SDK/usr/lib/swift_static/CoreFoundation"
170-
"$TOOLS_BUILD_PATH/build-foundation.sh" "$DIST_TOOLCHAIN_SDK" "$WASI_SYSROOT_PATH"
171-
"$TOOLS_BUILD_PATH/build-xctest.sh" "$DIST_TOOLCHAIN_SDK" "$WASI_SYSROOT_PATH"
172-
173-
}
174-
175-
embed_wasi_sysroot() {
176-
# Merge wasi-sdk and the toolchain
177-
cp -r "$WASI_SYSROOT_PATH" "$DIST_TOOLCHAIN_SDK/usr/share"
178-
}
179-
180-
swift_version() {
181-
cat "$SOURCE_PATH/swift/CMakeLists.txt" | grep 'set(SWIFT_VERSION ' | sed -E 's/set\(SWIFT_VERSION "(.+)"\)/\1/'
182-
}
140+
rm -rf "$TARGET_TOOLCHAIN_DESTDIR/usr/lib/swift_static/CoreFoundation"
141+
"$TOOLS_BUILD_PATH/build-foundation.sh" "$TARGET_TOOLCHAIN_DESTDIR" "$WASI_SYSROOT_PATH"
142+
"$TOOLS_BUILD_PATH/build-xctest.sh" "$TARGET_TOOLCHAIN_DESTDIR" "$WASI_SYSROOT_PATH"
183143

184-
create_darwin_info_plist() {
185-
echo "-- Create Info.plist --"
186-
PLISTBUDDY_BIN="/usr/libexec/PlistBuddy"
187-
188-
BUNDLE_PREFIX="org.swiftwasm"
189-
DARWIN_TOOLCHAIN_DISPLAY_NAME_SHORT="Swift for WebAssembly Snapshot"
190-
191-
if [ ${OPTIONS_DAILY_SNAPSHOT} -eq 1 ]; then
192-
DARWIN_TOOLCHAIN_VERSION="$(swift_version).${YEAR}${MONTH}${DAY}"
193-
DARWIN_TOOLCHAIN_BUNDLE_IDENTIFIER="${BUNDLE_PREFIX}.${YEAR}${MONTH}${DAY}"
194-
DARWIN_TOOLCHAIN_DISPLAY_NAME="${DARWIN_TOOLCHAIN_DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}"
195-
else
196-
DARWIN_TOOLCHAIN_VERSION="$(swift_version).9999"
197-
DARWIN_TOOLCHAIN_BUNDLE_IDENTIFIER="${BUNDLE_PREFIX}.dev"
198-
DARWIN_TOOLCHAIN_DISPLAY_NAME="${DARWIN_TOOLCHAIN_DISPLAY_NAME_SHORT} Development"
199-
fi
200-
DARWIN_TOOLCHAIN_ALIAS="swiftwasm"
201-
202-
DARWIN_TOOLCHAIN_INFO_PLIST="${DIST_TOOLCHAIN_SDK}/Info.plist"
203-
DARWIN_TOOLCHAIN_REPORT_URL="https://github.com/swiftwasm/swift/issues"
204-
COMPATIBILITY_VERSION=2
205-
COMPATIBILITY_VERSION_DISPLAY_STRING="Xcode 8.0"
206-
DARWIN_TOOLCHAIN_CREATED_DATE="$(date -u +'%a %b %d %T GMT %Y')"
207-
SWIFT_USE_DEVELOPMENT_TOOLCHAIN_RUNTIME="YES"
208-
209-
rm -f "${DARWIN_TOOLCHAIN_INFO_PLIST}"
210-
211-
${PLISTBUDDY_BIN} -c "Add DisplayName string '${DARWIN_TOOLCHAIN_DISPLAY_NAME}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
212-
${PLISTBUDDY_BIN} -c "Add ShortDisplayName string '${DARWIN_TOOLCHAIN_DISPLAY_NAME_SHORT}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
213-
${PLISTBUDDY_BIN} -c "Add CreatedDate date '${DARWIN_TOOLCHAIN_CREATED_DATE}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
214-
${PLISTBUDDY_BIN} -c "Add CompatibilityVersion integer ${COMPATIBILITY_VERSION}" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
215-
${PLISTBUDDY_BIN} -c "Add CompatibilityVersionDisplayString string ${COMPATIBILITY_VERSION_DISPLAY_STRING}" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
216-
${PLISTBUDDY_BIN} -c "Add Version string '${DARWIN_TOOLCHAIN_VERSION}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
217-
${PLISTBUDDY_BIN} -c "Add CFBundleIdentifier string '${DARWIN_TOOLCHAIN_BUNDLE_IDENTIFIER}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
218-
${PLISTBUDDY_BIN} -c "Add ReportProblemURL string '${DARWIN_TOOLCHAIN_REPORT_URL}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
219-
${PLISTBUDDY_BIN} -c "Add Aliases array" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
220-
${PLISTBUDDY_BIN} -c "Add Aliases:0 string '${DARWIN_TOOLCHAIN_ALIAS}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
221-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings dict" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
222-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings:ENABLE_BITCODE string 'NO'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
223-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings:SWIFT_DISABLE_REQUIRED_ARCLITE string 'YES'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
224-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings:SWIFT_LINK_OBJC_RUNTIME string 'YES'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
225-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings:SWIFT_DEVELOPMENT_TOOLCHAIN string 'YES'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
226-
${PLISTBUDDY_BIN} -c "Add OverrideBuildSettings:SWIFT_USE_DEVELOPMENT_TOOLCHAIN_RUNTIME string '${SWIFT_USE_DEVELOPMENT_TOOLCHAIN_RUNTIME}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
227-
228-
chmod a+r "${DARWIN_TOOLCHAIN_INFO_PLIST}"
229144
}
230145

231146
show_sccache_stats() {
@@ -245,9 +160,9 @@ if [ ${OPTIONS_BUILD_HOST_TOOLCHAIN} -eq 1 ]; then
245160
echo ""
246161
echo "sccache stats:"
247162
show_sccache_stats
248-
rm -rf "$DIST_TOOLCHAIN_DESTDIR"
249-
mkdir -p "$DIST_TOOLCHAIN_SDK"
250-
rsync -a "$HOST_TOOLCHAIN_DESTDIR/" "$DIST_TOOLCHAIN_SDK"
163+
rm -rf "$TARGET_TOOLCHAIN_DESTDIR"
164+
mkdir -p "$TARGET_TOOLCHAIN_DESTDIR"
165+
rsync -a "$HOST_TOOLCHAIN_DESTDIR/" "$TARGET_TOOLCHAIN_DESTDIR"
251166
fi
252167

253168
build_target_toolchain
@@ -257,13 +172,3 @@ echo "===================================="
257172
echo ""
258173
echo "sccache stats:"
259174
show_sccache_stats
260-
261-
embed_wasi_sysroot
262-
263-
if [[ "$(uname)" == "Darwin" ]]; then
264-
create_darwin_info_plist
265-
fi
266-
267-
cd "$DIST_TOOLCHAIN_DESTDIR"
268-
tar cfz "$PACKAGE_ARTIFACT" "$TOOLCHAIN_NAME"
269-
echo "Toolchain archive created successfully!"

tools/build/build-xctest.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ WASI_SYSROOT_PATH=$2
55
SOURCE_PATH="$(cd "$(dirname $0)/../../.." && pwd)"
66
TOOLS_BUILD_PATH="$(cd "$(dirname "$0")" && pwd)"
77

8-
BUILD_DIR="$SOURCE_PATH/target-build/xctest-wasi-wasm32"
8+
BUILD_DIR="$SOURCE_PATH/build/WebAssembly/xctest-wasi-wasm32"
99

1010
mkdir -p $BUILD_DIR
1111
cd $BUILD_DIR

tools/build/build_support/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)