#!/bin/bash | |
# | |
# Faster toolchain build: skips as much as possible. | |
# | |
# To use this toolchain from the command line:" | |
# export TOOLCHAINS=$(whoami) | |
# | |
# we build to the same prefix every time (instead of building | |
# to a versioned prefix) because every time the prefix changes | |
# *everything* rebuilds. | |
set -e | |
trap "exit;" SIGINT SIGTERM | |
SRCROOT="$HOME/src" | |
ALIAS=$(whoami) | |
TOOLCHAIN_NAME="swift-${ALIAS}.xctoolchain" | |
TOOLCHAIN_PREFIX="$HOME/Library/Developer/Toolchains/${TOOLCHAIN_NAME}" | |
export TOOLCHAINS=default | |
if [[ $1 == "--reconfigure" ]]; then | |
RECONFIGURE="--reconfigure" | |
fi | |
# so if anything is put in the wrong place we will *see* it | |
cd "$HOME/Desktop" | |
"$SRCROOT/swift/utils/build-script" \ | |
--release \ | |
--llvm \ | |
--llbuild \ | |
--swiftpm \ | |
--build-subdir="${ALIAS}" \ | |
--assertions \ | |
--no-swift-stdlib-assertions \ | |
--install-prefix="${TOOLCHAIN_PREFIX}/usr" \ | |
--lldb \ | |
--darwin-xcrun-toolchain=mxcl \ | |
-- \ | |
--lldb-use-system-debugserver \ | |
${RECONFIGURE} \ | |
--skip-ios \ | |
--skip-tvos \ | |
--skip-watchos \ | |
--skip-build-linux \ | |
--skip-build-freebsd \ | |
--skip-build-cygwin \ | |
--skip-build-ios \ | |
--skip-build-ios-device \ | |
--skip-build-ios-simulator \ | |
--skip-build-tvos \ | |
--skip-build-tvos-device \ | |
--skip-build-tvos-simulator \ | |
--skip-build-watchos \ | |
--skip-build-watchos-device \ | |
--skip-build-watchos-simulator \ | |
--skip-build-xctest \ | |
--skip-build-foundation \ | |
--skip-build-libdispatch \ | |
--skip-build-benchmarks \ | |
--skip-test-cmark \ | |
--skip-test-lldb \ | |
--skip-test-swift \ | |
--skip-test-llbuild \ | |
--skip-test-swiftpm \ | |
--skip-test-xctest \ | |
--skip-test-foundation \ | |
--skip-test-libdispatch \ | |
--skip-test-linux \ | |
--skip-test-freebsd \ | |
--skip-test-cygwin \ | |
--skip-test-osx \ | |
--skip-test-ios-simulator \ | |
--skip-test-ios-host \ | |
--skip-test-tvos-simulator \ | |
--skip-test-tvos-host \ | |
--skip-test-watchos-simulator \ | |
--skip-test-watchos-host \ | |
--skip-test-benchmarks \ | |
--skip-test-optimized \ | |
--swift-sdks=OSX \ | |
--swift-enable-ast-verifier=0 \ | |
--build-swift-examples=0 \ | |
--build-swift-stdlib-unittest-extra=0 \ | |
--build-swift-static-stdlib=1 \ | |
--compiler-vendor=apple \ | |
--swift-install-components="compiler;clang-builtin-headers;stdlib;sdk-overlay;license;sourcekit-xpc-service" \ | |
--llvm-install-components="libclang;libclang-headers" \ | |
--install-swift=1 \ | |
--install-llbuild=1 \ | |
--install-swiftpm=1 \ | |
--install-destdir="/" \ | |
--install-lldb=1 \ | |
--toolchain-prefix="${TOOLCHAIN_PREFIX}" | |
# doing by hand as the only other way to trigger this | |
# is by specifying --installable-package, which tars | |
# all installed products and is super slow | |
DATE=$(date +%Y.%m.%d) | |
SWIFT_VERSION=$("${TOOLCHAIN_PREFIX}/usr/bin/swift" --version | ruby -e 'ARGF.read =~ /Swift version (\d+\.\d(\.\d+)?(-.*?)?) /; print "#{$1}\n"') | |
if [[ "$SWIFT_VERSION" == "3.0-dev" ]]; then | |
SWIFT_VERSION="3.0.0-dev" | |
fi | |
VERSION="${SWIFT_VERSION}-${ALIAS}+${DATE}" | |
cat > "${TOOLCHAIN_PREFIX}/Info.plist" <<EOF | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Aliases</key> | |
<array> | |
<string>${ALIAS}</string> | |
</array> | |
<key>CompatibilityVersion</key> | |
<integer>2</integer> | |
<key>CFBundleIdentifier</key> | |
<string>org.swift.${SWIFT_VERSION}.${ALIAS}</string> | |
<key>DisplayName</key> | |
<string>Swift ${SWIFT_VERSION}.${ALIAS}+${DATE}</string> | |
<key>ReportProblemURL</key> | |
<string>https://bugs.swift.org/</string> | |
<key>Version</key> | |
<string>${DATE}</string> | |
<key>OverrideEnvironment</key> | |
<dict> | |
<key>ENABLE_BITCODE</key> | |
<false/> | |
<key>SWIFT_DISABLE_REQUIRED_ARCLITE</key> | |
<true/> | |
<key>SWIFT_LINK_OBJC_RUNTIME</key> | |
<true/> | |
</dict> | |
</dict> | |
</plist> | |
EOF | |
# again, only way to trigger this otherwise is do a lengthy --installable-package step | |
cp "${SRCROOT}/swift/utils/swift-stdlib-tool-substitute" "${TOOLCHAIN_PREFIX}/usr/bin/swift-stdlib-tool" |
This comment has been minimized.
This comment has been minimized.
@akrabat, even with that change is this script working? It's failing for me when trying to install swift. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Note that with latest master (on 2 June 2016 anyway),
--swift-sdks=OSX \
now needs to be--stdlib-deployment-targets=macosx-x86_64 \
as per apple/swift@9d822cd