From fdcab875f58b8bcd59bc59636c9e55b656c41a30 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 19 Apr 2020 22:09:41 +0100 Subject: [PATCH 1/4] Copy Dispatch and Clang from upstream toolchain --- utils/webassembly/build-toolchain.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index af07d1f0c015a..db224654ec473 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -61,7 +61,8 @@ cd $TMP_DIR/$TOOLCHAIN_NAME # Merge wasi-sdk and toolchain cp -r $WASI_SDK_PATH/lib/clang usr/lib -cp $WASI_SDK_PATH/bin/* usr/bin +cp -a $SOURCE_PATH/build/Ninja-ReleaseAssert/llvm-*/bin/clang* usr/bin +cp -a $WASI_SDK_PATH/bin/*ld usr/bin cp -r $WASI_SDK_PATH/share/wasi-sysroot usr/share # Build SwiftPM and install it into toolchain @@ -73,7 +74,7 @@ sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" $TMP_DIR/$ # Copy nightly-toolchain's host environment stdlib into toolchain if [[ "$(uname)" == "Linux" ]]; then - cp -r $NIGHTLY_TOOLCHAIN/usr/lib/swift/linux $TMP_DIR/$TOOLCHAIN_NAME/usr/lib/swift + cp -a $NIGHTLY_TOOLCHAIN/usr/lib/* $TMP_DIR/$TOOLCHAIN_NAME/usr/lib || true else cp -r $NIGHTLY_TOOLCHAIN/usr/lib/swift/macosx $TMP_DIR/$TOOLCHAIN_NAME/usr/lib/swift fi From cf9569b168215ee9fc027c542456d4508e12d6e3 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 7 May 2020 10:53:59 +0100 Subject: [PATCH 2/4] Use rsync to copy /usr/lib --- utils/webassembly/build-toolchain.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index db224654ec473..cef2c4fc31468 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -38,7 +38,9 @@ DISPLAY_NAME="${DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}" $BUILD_SCRIPT \ --install_destdir="$SOURCE_PATH/install" \ --installable_package="$INSTALLABLE_PACKAGE" \ - --install-prefix=/$TOOLCHAIN_NAME/usr \ + --install-prefix=/$TOOLCHAIN_NAME/usr \ + --swift-install-components "autolink-driver;compiler;clang-builtin-headers;stdlib;sdk-overlay;parser-lib;editor-integration;tools;testsuite-tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers;clang-resource-dir-symlink" \ + --llvm-install-components "clang" \ --install-swift \ --darwin-toolchain-bundle-identifier="${BUNDLE_IDENTIFIER}" \ --darwin-toolchain-display-name="${DISPLAY_NAME}" \ @@ -61,7 +63,6 @@ cd $TMP_DIR/$TOOLCHAIN_NAME # Merge wasi-sdk and toolchain cp -r $WASI_SDK_PATH/lib/clang usr/lib -cp -a $SOURCE_PATH/build/Ninja-ReleaseAssert/llvm-*/bin/clang* usr/bin cp -a $WASI_SDK_PATH/bin/*ld usr/bin cp -r $WASI_SDK_PATH/share/wasi-sysroot usr/share @@ -74,7 +75,9 @@ sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" $TMP_DIR/$ # Copy nightly-toolchain's host environment stdlib into toolchain if [[ "$(uname)" == "Linux" ]]; then - cp -a $NIGHTLY_TOOLCHAIN/usr/lib/* $TMP_DIR/$TOOLCHAIN_NAME/usr/lib || true + # Avoid to copy usr/lib/swift/clang because our toolchain's one is a directory + # but nightly's one is symbolic link, so fail to merge them. + rsync -a $NIGHTLY_TOOLCHAIN/usr/lib/ $TMP_DIR/$TOOLCHAIN_NAME/usr/lib/ --exclude 'swift/clang' else cp -r $NIGHTLY_TOOLCHAIN/usr/lib/swift/macosx $TMP_DIR/$TOOLCHAIN_NAME/usr/lib/swift fi From 3026a61e05894b78f23c57e9ce56a3b80719cb9b Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 7 May 2020 10:54:42 +0100 Subject: [PATCH 3/4] Remove redundant whitespace in build-toolchain.sh --- utils/webassembly/build-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index cef2c4fc31468..6a12431131060 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -38,7 +38,7 @@ DISPLAY_NAME="${DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}" $BUILD_SCRIPT \ --install_destdir="$SOURCE_PATH/install" \ --installable_package="$INSTALLABLE_PACKAGE" \ - --install-prefix=/$TOOLCHAIN_NAME/usr \ + --install-prefix=/$TOOLCHAIN_NAME/usr \ --swift-install-components "autolink-driver;compiler;clang-builtin-headers;stdlib;sdk-overlay;parser-lib;editor-integration;tools;testsuite-tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers;clang-resource-dir-symlink" \ --llvm-install-components "clang" \ --install-swift \ From 38228d12f119079513b7070a437293602feb7b9d Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 10 May 2020 18:45:32 +0100 Subject: [PATCH 4/4] Create clang directory manually in build-toolchain.sh --- utils/webassembly/build-toolchain.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index 6a12431131060..6096788aa79f8 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -35,6 +35,9 @@ BUNDLE_IDENTIFIER="swiftwasm.5.3-${YEAR}${MONTH}${DAY}" DISPLAY_NAME_SHORT="Swift for WebAssembly 5.3 Snapshot" DISPLAY_NAME="${DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}" +# Just a hack, spent enough time investigating this, +# but somehow `master` is able to work without this `mkdir`. +mkdir -p $SOURCE_PATH/install/$TOOLCHAIN_NAME/usr/lib/clang/10.0.0 $BUILD_SCRIPT \ --install_destdir="$SOURCE_PATH/install" \ --installable_package="$INSTALLABLE_PACKAGE" \