Skip to content

Instantly share code, notes, and snippets.

@norio-nomura
Created December 13, 2015 03:13
Show Gist options
  • Save norio-nomura/f9d9e42b213c69a26dec to your computer and use it in GitHub Desktop.
Save norio-nomura/f9d9e42b213c69a26dec to your computer and use it in GitHub Desktop.
Script For Building OSX Installer Package of Swift-2.2-SNAPSHOT
#!/usr/bin/env bash
[ ! -x swift/utils/build-script ] && exit 1
SNAPSHOT_DATE=`date "+%Y-%m-%d"`
HASH_LLVM=`(cd llvm;git rev-parse --short HEAD)`
HASH_CLANG=`(cd clang;git rev-parse --short HEAD)`
HASH_SWIFT=`(cd swift;git rev-parse --short HEAD)`
HASH_INFO="LLVM ${HASH_LLVM}, Clang ${HASH_CLANG}, Swift ${HASH_SWIFT}"
BUNDLE_IDENTIFIER="io.nor.swift.${SNAPSHOT_DATE}" # "CFBundleIdentifier for xctoolchain info plist"
DISPLAY_NAME="Swift 2.2 snapshot (${HASH_INFO})" # "Display Name for xctoolcain info plist"
XCTOOLCHAIN_NAME="swift-2.2-SNAPSHOT-${SNAPSHOT_DATE}" # "Directory name for xctoolchain"
VERSION="${XCTOOLCHAIN_NAME}" # "Version for xctoolchain info plist and installer pkg"
CERT_NAME="Norio Nomura"
APPLICATION_CERT="Developer ID Application: ${CERT_NAME}" # "Application Cert name to codesign xctoolchain"
INSTALLER_CERT="Developer ID Installer: ${CERT_NAME}" # "Installer Cert name to create installer pkg"
INSTALLER_PACKAGE="`pwd`/build/${XCTOOLCHAIN_NAME}.pkg" # "The path to installer pkg"
swift/utils/build-script --preset-file=swift/utils/build-presets.ini --preset-file=./my-presets.ini \
--preset=buildbot_osx_package_create_installer \
install_destdir=/tmp/install \
install_symroot=/tmp/symroot \
install_toolchain_dir=/Library/Developer/Toolchains/${XCTOOLCHAIN_NAME}.xctoolchain \
installable_package="`pwd`/build/${XCTOOLCHAIN_NAME}.tar.gz" \
symbols_package="`pwd`/build/symbols-${XCTOOLCHAIN_NAME}.tar.gz" \
darwin_toolchain_bundle_identifier="${BUNDLE_IDENTIFIER}" \
darwin_toolchain_display_name="${DISPLAY_NAME}" \
darwin_toolchain_xctoolchain_name="${XCTOOLCHAIN_NAME}" \
darwin_toolchain_version="${VERSION}" \
darwin_toolchain_application_cert="${APPLICATION_CERT}" \
darwin_toolchain_installer_cert="${INSTALLER_CERT}" \
darwin_toolchain_installer_package="${INSTALLER_PACKAGE}" \
[preset: buildbot_osx_package_create_installer]
mixin-preset=
mixin_osx_package_base
mixin_osx_package_test
mixin_lightweight_assertions
dash-dash
swift-install-components=compiler;clang-builtin-headers;stdlib;sdk-overlay;sourcekit-xpc-service
llvm-install-components=libclang;clang-headers
# Path to the .tar.gz package we would create.
installable-package=%(installable_package)s
# Path to the .tar.gz symbols package
symbols-package=%(symbols_package)s
# Info.plist
darwin-toolchain-bundle-identifier=%(darwin_toolchain_bundle_identifier)s
darwin-toolchain-display-name=%(darwin_toolchain_display_name)s
darwin-toolchain-name=%(darwin_toolchain_xctoolchain_name)s
darwin-toolchain-version=%(darwin_toolchain_version)s
# Build .pkg
darwin-toolchain-application-cert=%(darwin_toolchain_application_cert)s
darwin-toolchain-installer-cert=%(darwin_toolchain_installer_cert)s
darwin-toolchain-installer-package=%(darwin_toolchain_installer_package)s
➜ 6:55:08 ./build-package.sh
swift/utils/build-script: using preset 'buildbot_osx_package_create_installer', which expands to swift/utils/build-script --ios --tvos --watchos --lldb --llbuild --swiftpm --release-debuginfo --build-subdir=buildbot_osx --ios --tvos --watchos --test --validation-test --assertions -- --lldb-no-debugserver --lldb-build-type=Release --verbose-build=1 --build-ninja --build-swift-static-stdlib=1 --compiler-vendor=apple '--swift-sdks=OSX;IOS;IOS_SIMULATOR;TVOS;TVOS_SIMULATOR;WATCHOS;WATCHOS_SIMULATOR' --install-swift=1 --install-lldb=1 --install-llbuild=1 --install-swiftpm=1 --install-destdir=/tmp/install --darwin-install-extract-symbols=1 --install-symroot=/tmp/symroot --install-prefix=/Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain/usr --reconfigure --skip-test-lldb --installable-package=/Users/norio/Documents/workspace/github/Apple/build/swift-2.2-SNAPSHOT-2015-12-13.tar.gz --swift-enable-ast-verifier=0 '--swift-install-components=compiler;clang-builtin-headers;stdlib;sdk-overlay;sourcekit-xpc-service' '--llvm-install-components=libclang;clang-headers' --installable-package=/Users/norio/Documents/workspace/github/Apple/build/swift-2.2-SNAPSHOT-2015-12-13.tar.gz --symbols-package=/Users/norio/Documents/workspace/github/Apple/build/symbols-swift-2.2-SNAPSHOT-2015-12-13.tar.gz --darwin-toolchain-bundle-identifier=io.nor.swift.2015-12-13 '--darwin-toolchain-display-name=Swift 2.2 snapshot (LLVM 7bae82d, Clang 53d04af, Swift 5995ef2)' --darwin-toolchain-name=swift-2.2-SNAPSHOT-2015-12-13 --darwin-toolchain-version=swift-2.2-SNAPSHOT-2015-12-13 '--darwin-toolchain-application-cert=Developer ID Application: Norio Nomura' '--darwin-toolchain-installer-cert=Developer ID Installer: Norio Nomura' --darwin-toolchain-installer-package=/Users/norio/Documents/workspace/github/Apple/build/swift-2.2-SNAPSHOT-2015-12-13.pkg
Building the standard library for: swift-stdlib-macosx-x86_64 swift-stdlib-iphonesimulator-i386 swift-stdlib-iphonesimulator-x86_64 swift-stdlib-appletvsimulator-x86_64 swift-stdlib-watchsimulator-i386 swift-stdlib-iphoneos-arm64 swift-stdlib-iphoneos-armv7 swift-stdlib-appletvos-arm64 swift-stdlib-watchos-armv7k
Running Swift tests for: check-swift-all-macosx-x86_64 check-swift-all-iphonesimulator-i386 check-swift-all-iphonesimulator-x86_64 check-swift-all-appletvsimulator-x86_64 check-swift-all-watchsimulator-i386
--- Creating installable package ---
-- Package file: /Users/norio/Documents/workspace/github/Apple/build/swift-2.2-SNAPSHOT-2015-12-13.tar.gz --
--- Copy swift-stdlib-tool ---
-- Create Info.plist --
-- Removing: /tmp/install//Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain/Info.plist
File Doesn't Exist, Will Create: /tmp/install//Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain/Info.plist
-- Codesign xctoolchain --
-- Create Installer --
pkgbuild: Inferring bundle components from contents of /tmp/install//Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain
pkgbuild: Adding component at System/Library/PrivateFrameworks/LLDB.framework
pkgbuild: Adding component at usr/lib/sourcekitd.framework/Versions/A/XPCServices/SourceKitService.xpc
pkgbuild: Adding component at usr/lib/sourcekitd.framework
pkgbuild: Adding top-level postinstall script
pkgbuild: Using timestamp authority for signature
pkgbuild: Signing package with identity "Developer ID Installer: Norio Nomura" from keychain /Users/norio/Library/Keychains/login.keychain
pkgbuild: Adding certificate "Developer ID Certification Authority"
pkgbuild: Adding certificate "Apple Root CA"
pkgbuild: Wrote package to /Users/norio/Documents/workspace/github/Apple/build/swift-2.2-SNAPSHOT-2015-12-13.pkg
--- Creating symbols package ---
-- Package file: /Users/norio/Documents/workspace/github/Apple/build/symbols-swift-2.2-SNAPSHOT-2015-12-13.tar.gz --
➜ 12:08:44 sudo installer -pkg build/swift-2.2-SNAPSHOT-2015-12-13.pkg -target /
Password:
installer: Package name is swift-2.2-SNAPSHOT-2015-12-13
installer: Upgrading at base path /
installer: The upgrade was successful.
➜ 12:09:17 pkgutil --pkg-info io.nor.swift.2015-12-13
package-id: io.nor.swift.2015-12-13
version: swift-2.2-SNAPSHOT-2015-12-13
volume: /
location: Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain
install-time: 1449976156
➜ 12:09:36 /Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-13.xctoolchain/usr/bin/swift --version
Apple Swift version 2.2-dev (LLVM 7bae82deaa, Clang 53d04af5ce, Swift 5995ef2acd)
Target: x86_64-apple-macosx10.9
➜ 12:10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment