Skip to content

Commit 80db9fb

Browse files
committed
Merge pull request swiftlang#1506 from modocache/build-script-xctest-fixmes
[build-script] Only build XCTest once
2 parents f6c5981 + 729e54f commit 80db9fb

File tree

1 file changed

+48
-29
lines changed

1 file changed

+48
-29
lines changed

utils/build-script-impl

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,15 +1855,25 @@ for deployment_target in "${HOST_TARGET}" "${CROSS_TOOLS_DEPLOYMENT_TARGETS[@]}"
18551855
continue
18561856
;;
18571857
xctest)
1858+
XCTEST_BUILD_DIR=$(build_directory ${deployment_target} xctest)
18581859
if [[ "$(uname -s)" == "Darwin" ]] ; then
18591860
set -x
1860-
xcodebuild -project "${XCTEST_SOURCE_DIR}"/XCTest.xcodeproj -scheme SwiftXCTest SKIP_INSTALL=NO DEPLOYMENT_LOCATION=YES DSTROOT="${build_dir}" INSTALL_PATH="/"
1861+
xcodebuild \
1862+
-project "${XCTEST_SOURCE_DIR}"/XCTest.xcodeproj \
1863+
-scheme SwiftXCTest \
1864+
SKIP_INSTALL=NO \
1865+
DEPLOYMENT_LOCATION=YES \
1866+
DSTROOT="${XCTEST_BUILD_DIR}" \
1867+
INSTALL_PATH="/"
18611868
{ set +x; } 2>/dev/null
18621869
else
18631870
SWIFTC_BIN="$(build_directory_bin ${deployment_target} swift)/swiftc"
1864-
SWIFT_BUILD_PATH="$(build_directory ${deployment_target} swift)"
18651871
set -x
1866-
"${XCTEST_SOURCE_DIR}"/build_script.py --swiftc="${SWIFTC_BIN}" --build-dir="${build_dir}" --swift-build-dir="${SWIFT_BUILD_PATH}" --arch="${SWIFT_HOST_VARIANT_ARCH}"
1872+
# FIXME: Use XCTEST_BUILD_TYPE (which is never properly
1873+
# set) to build either --debug or --release.
1874+
"${XCTEST_SOURCE_DIR}"/build_script.py \
1875+
--swiftc="${SWIFTC_BIN}" \
1876+
--build-dir="${XCTEST_BUILD_DIR}"
18671877
{ set +x; } 2>/dev/null
18681878
fi
18691879

@@ -2111,15 +2121,17 @@ for deployment_target in "${STDLIB_DEPLOYMENT_TARGETS[@]}"; do
21112121
echo "--- Running tests for ${product} ---"
21122122
if [[ "$(uname -s)" == "Darwin" ]] ; then
21132123
set -x
2114-
xcodebuild -project "${XCTEST_SOURCE_DIR}"/XCTest.xcodeproj -scheme SwiftXCTestFunctionalTests
2124+
xcodebuild \
2125+
-project "${XCTEST_SOURCE_DIR}"/XCTest.xcodeproj \
2126+
-scheme SwiftXCTestFunctionalTests
21152127
{ set +x; } 2>/dev/null
21162128
else
21172129
SWIFTC_BIN="$(build_directory_bin ${deployment_target} swift)/swiftc"
2118-
SWIFT_BUILD_PATH="$(build_directory ${deployment_target} swift)"
2130+
XCTEST_BUILD_DIR=$(build_directory ${deployment_target} xctest)
21192131
set -x
2120-
# FIXME: This re-builds swift-corelibs-xctest. Instead, 'build_script.py' should take
2121-
# a top-level 'test' command that only tests an already built XCTest.
2122-
"${XCTEST_SOURCE_DIR}"/build_script.py --swiftc="${SWIFTC_BIN}" --build-dir="${build_dir}" --swift-build-dir="${SWIFT_BUILD_PATH}" --arch="${SWIFT_HOST_VARIANT_ARCH}" --test
2132+
"${XCTEST_SOURCE_DIR}"/build_script.py test \
2133+
--swiftc="${SWIFTC_BIN}" \
2134+
"${XCTEST_BUILD_DIR}"
21232135
{ set +x; } 2>/dev/null
21242136
fi
21252137
echo "--- Finished tests for ${product} ---"
@@ -2269,31 +2281,38 @@ for deployment_target in "${HOST_TARGET}" "${CROSS_TOOLS_DEPLOYMENT_TARGETS[@]}"
22692281
if [[ -z "${INSTALL_XCTEST}" ]] ; then
22702282
continue
22712283
fi
2272-
if [[ $(uname -s) == "Linux" ]]; then
2273-
LIB_TARGET="linux"
2274-
ARCH_FLAG="--arch=\"${SWIFT_HOST_VARIANT_ARCH}\""
2275-
fi
2276-
if [[ $(uname -s) == "FreeBSD" ]]; then
2277-
LIB_TARGET="freebsd"
2278-
ARCH_FLAG="--arch=\"${SWIFT_HOST_VARIANT_ARCH}\""
2279-
fi
2280-
if [[ $(uname -s) == "CYGWIN_NT-10.0" ]]; then
2281-
LIB_TARGET="windows"
2282-
fi
2283-
if [[ $(uname -s) == "Darwin" ]]; then
2284-
LIB_TARGET="macosx"
2285-
ARCH_FLAG=""
2284+
if [[ -z "${INSTALL_DESTDIR}" ]] ; then
2285+
echo "error: --install-destdir is required"
2286+
exit 1
22862287
fi
2287-
XCTEST_INSTALL_PREFIX="${INSTALL_DESTDIR}"/"${INSTALL_PREFIX}"/lib/swift/"${LIB_TARGET}"
2288+
case "$(uname -s)" in
2289+
Linux)
2290+
LIB_TARGET="linux"
2291+
;;
2292+
FreeBSD)
2293+
LIB_TARGET="freebsd"
2294+
;;
2295+
CYGWIN_NT-10.0)
2296+
LIB_TARGET="windows"
2297+
;;
2298+
*)
2299+
echo "error: --install-xctest is not supported on this platform"
2300+
exit 1
2301+
;;
2302+
esac
2303+
22882304
echo "--- Installing ${product} ---"
2305+
XCTEST_BUILD_DIR=$(build_directory ${deployment_target} xctest)
2306+
XCTEST_INSTALL_PREFIX="${INSTALL_DESTDIR}/${INSTALL_PREFIX}/lib/swift/${LIB_TARGET}"
2307+
# Note that installing directly to /usr/lib/swift usually
2308+
# requires root permissions.
22892309
set -x
2290-
"${XCTEST_SOURCE_DIR}"/build_script.py --swiftc="${SWIFTC_BIN}" \
2291-
--build-dir="${build_dir}" \
2292-
--library-install-path="${XCTEST_INSTALL_PREFIX}" \
2293-
--module-install-path="${XCTEST_INSTALL_PREFIX}"/"${SWIFT_HOST_VARIANT_ARCH}" \
2294-
--swift-build-dir="${SWIFT_BUILD_PATH}" ${ARCH_FLAG}
2310+
"${XCTEST_SOURCE_DIR}"/build_script.py install \
2311+
--library-install-path="${XCTEST_INSTALL_PREFIX}" \
2312+
--module-install-path="${XCTEST_INSTALL_PREFIX}"/"${SWIFT_HOST_VARIANT_ARCH}" \
2313+
"${XCTEST_BUILD_DIR}"
22952314
{ set +x; } 2>/dev/null
2296-
2315+
22972316
# As XCTest installation is self-contained, we break early here.
22982317
continue
22992318
;;

0 commit comments

Comments
 (0)