Skip to content

Commit d99b9d1

Browse files
committed
Merge pull request #12 from shahmishal/master
Add support to create xctoolchain with code sign
2 parents a3020a8 + 891f9e8 commit d99b9d1

File tree

4 files changed

+83
-0
lines changed

4 files changed

+83
-0
lines changed

utils/build-presets.ini

+6
Original file line numberDiff line numberDiff line change
@@ -595,3 +595,9 @@ installable-package=%(installable_package)s
595595

596596
# Path to the .tar.gz symbols package
597597
symbols-package=%(symbols_package)s
598+
599+
# Info.plist
600+
darwin-toolchain-bundle-identifier=%(darwin_toolchain_bundle_identifier)s
601+
darwin-toolchain-display-name=%(darwin_toolchain_display_name)s
602+
darwin-toolchain-name=%(darwin_toolchain_xctoolchain_name)s
603+
darwin-toolchain-version=%(darwin_toolchain_version)s

utils/build-script-impl

+38
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,14 @@ KNOWN_SETTINGS=(
175175
swift-runtime-enable-dtrace "0" "Enable runtime dtrace support"
176176
swift-runtime-enable-leak-checker "0" "Enable leaks checking routines in the runtime"
177177
use-gold-linker "" "Enable using the gold linker"
178+
darwin-toolchain-bundle-identifier "" "CFBundleIdentifier for xctoolchain info plist"
179+
darwin-toolchain-display-name "" "Display Name for xctoolcain info plist"
180+
darwin-toolchain-name "" "Directory name for xctoolchain"
181+
darwin-toolchain-version "" "Version for xctoolchain info plist and installer pkg"
182+
darwin-toolchain-application-cert "" "Application Cert name to codesign xctoolchain"
183+
darwin-toolchain-installer-cert "" "Installer Cert name to create installer pkg"
184+
darwin-toolchain-installer-package "" "The path to installer pkg"
185+
178186
)
179187

180188
function toupper() {
@@ -2114,6 +2122,36 @@ if [[ "${INSTALLABLE_PACKAGE}" ]] ; then
21142122
echo "--- Copy swift-stdlib-tool ---"
21152123
cp "${SWIFT_SOURCE_DIR}/utils/swift-stdlib-tool-substitute" "${INSTALL_DESTDIR}/${INSTALL_PREFIX}/bin/swift-stdlib-tool"
21162124
fi
2125+
2126+
# Create plist for xctoolchain.
2127+
echo "-- Create Info.plist --"
2128+
PLISTBUDDY_BIN="/usr/libexec/PlistBuddy"
2129+
2130+
DARWIN_TOOLCHAIN_INSTALL_LOCATION="/Library/Developer/Toolchains/${DARWIN_TOOLCHAIN_NAME}.xctoolchain"
2131+
DARWIN_TOOLCHAIN_INFO_PLIST="${INSTALL_DESTDIR}/${TOOLCHAIN_PREFIX}/Info.plist"
2132+
DARWIN_TOOLCHAIN_REPORT_URL="https://bugs.swift.org/"
2133+
2134+
echo "-- Removing: ${DARWIN_TOOLCHAIN_INFO_PLIST}"
2135+
rm -f ${DARWIN_TOOLCHAIN_INFO_PLIST}
2136+
2137+
${PLISTBUDDY_BIN} -c "Add DisplayName string '${DARWIN_TOOLCHAIN_DISPLAY_NAME}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2138+
${PLISTBUDDY_BIN} -c "Add Version string '${DARWIN_TOOLCHAIN_VERSION}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2139+
${PLISTBUDDY_BIN} -c "Add CFBundleIdentifier string '${DARWIN_TOOLCHAIN_BUNDLE_IDENTIFIER}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2140+
${PLISTBUDDY_BIN} -c "Add ReportProblemURL string '${DARWIN_TOOLCHAIN_REPORT_URL}'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2141+
${PLISTBUDDY_BIN} -c "Add OverrideEnvironment::DYLD_LIBRARY_PATH string '${DARWIN_TOOLCHAIN_INSTALL_LOCATION}/usr/lib'" "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2142+
chmod a+r "${DARWIN_TOOLCHAIN_INFO_PLIST}"
2143+
2144+
if [[ "${DARWIN_TOOLCHAIN_APPLICATION_CERT}" ]] ; then
2145+
echo "-- Codesign xctoolchain --"
2146+
"${SWIFT_SOURCE_DIR}/utils/toolchain-codesign" "${DARWIN_TOOLCHAIN_APPLICATION_CERT}" "${INSTALL_DESTDIR}/${TOOLCHAIN_PREFIX}"
2147+
fi
2148+
if [[ "${DARWIN_TOOLCHAIN_INSTALLER_PACKAGE}" ]] ; then
2149+
echo "-- Create Installer --"
2150+
"${SWIFT_SOURCE_DIR}/utils/toolchain-installer" "${INSTALL_DESTDIR}/${TOOLCHAIN_PREFIX}" "${DARWIN_TOOLCHAIN_BUNDLE_IDENTIFIER}" \
2151+
"${DARWIN_TOOLCHAIN_INSTALLER_CERT}" "${DARWIN_TOOLCHAIN_INSTALLER_PACKAGE}" "${DARWIN_TOOLCHAIN_INSTALL_LOCATION}" \
2152+
"${DARWIN_TOOLCHAIN_VERSION}"
2153+
fi
2154+
21172155
(cd "${INSTALL_DESTDIR}" &&
21182156
tar -c -z -f "${INSTALLABLE_PACKAGE}" "${TOOLCHAIN_PREFIX/#\/}")
21192157
else

utils/toolchain-codesign

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
#===--- toolchain-codesign - Creates code signed xctoolchain ---------------===#
3+
#
4+
## This source file is part of the Swift.org open source project
5+
##
6+
## Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
7+
## Licensed under Apache License v2.0 with Runtime Library Exception
8+
##
9+
## See http://swift.org/LICENSE.txt for license information
10+
## See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
11+
#
12+
#===------------------------------------------------------------------------===#
13+
14+
DARWIN_TOOLCHAIN_APPLICATION_CERT=$1
15+
TOOLCHAIN_PREFIX=$2
16+
17+
codesign -f --deep -s "${DARWIN_TOOLCHAIN_APPLICATION_CERT}" "${TOOLCHAIN_PREFIX}"

utils/toolchain-installer

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
#===--- toolchain-installer - Creates installer pkg for OS X ---------------===#
3+
#
4+
## This source file is part of the Swift.org open source project
5+
##
6+
## Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
7+
## Licensed under Apache License v2.0 with Runtime Library Exception
8+
##
9+
## See http://swift.org/LICENSE.txt for license information
10+
## See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
11+
#
12+
#===------------------------------------------------------------------------===#
13+
14+
TOOLCHAIN_PREFIX=$1
15+
DARWIN_BUNDLE_IDENTIFIER=$2
16+
DARWIN_INSTALLER_CERT=$3
17+
DARWIN_INSTALLER_PACKAGE=$4
18+
DARWIN_TOOLCHAIN_INSTALL_LOCATION=$5
19+
DARWIN_TOOLCHAIN_VERSION=$6
20+
21+
pkgbuild --root "${TOOLCHAIN_PREFIX}" --install-location "${DARWIN_TOOLCHAIN_INSTALL_LOCATION}" "${DARWIN_INSTALLER_PACKAGE}" \
22+
--version "${DARWIN_TOOLCHAIN_VERSION}" --identifier "${DARWIN_BUNDLE_IDENTIFIER}" --sign "${DARWIN_INSTALLER_CERT}"

0 commit comments

Comments
 (0)