swiftPackages.XCTest: init at 5.7

This commit is contained in:
Stéphan Kochen 2022-07-25 21:45:15 +02:00
parent 89f9790858
commit 0b877d85e5
2 changed files with 66 additions and 0 deletions

View File

@ -65,6 +65,13 @@ let
then apple_sdk.frameworks.Foundation
else callPackage ./foundation { };
# TODO: Apple distributes a binary XCTest with Xcode, but it is not part of
# CLTools (or SUS), so would have to figure out how to fetch it. The binary
# version has several extra features, like a test runner and ObjC support.
XCTest = callPackage ./xctest {
inherit (darwin) DarwinTools;
};
};
in self

View File

@ -0,0 +1,59 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, ninja
, swift
, Foundation
, DarwinTools
}:
stdenv.mkDerivation rec {
pname = "swift-corelibs-xctest";
# Releases are made as part of the Swift toolchain, so versions should match.
version = "5.7";
src = fetchFromGitHub {
owner = "apple";
repo = "swift-corelibs-xctest";
rev = "swift-${version}-RELEASE";
hash = "sha256-qLUO9/3tkJWorDMEHgHd8VC3ovLLq/UWXJWMtb6CMN0=";
};
outputs = [ "out" ];
nativeBuildInputs = [ cmake ninja swift ]
++ lib.optional stdenv.isDarwin DarwinTools; # sw_vers
buildInputs = [ Foundation ];
postPatch = lib.optionalString stdenv.isDarwin ''
# On Darwin only, Swift uses arm64 as cpu arch.
substituteInPlace cmake/modules/SwiftSupport.cmake \
--replace '"aarch64" PARENT_SCOPE' '"arm64" PARENT_SCOPE'
'';
preConfigure = ''
# On aarch64-darwin, our minimum target is 11.0, but we can target lower,
# and some dependants require a lower target. Harmless on non-Darwin.
export MACOSX_DEPLOYMENT_TARGET=10.12
'';
cmakeFlags = lib.optional stdenv.isDarwin "-DUSE_FOUNDATION_FRAMEWORK=ON";
postInstall = lib.optionalString stdenv.isDarwin ''
# Darwin normally uses the Xcode version of XCTest. Installing
# swift-corelibs-xctest is probably not officially supported, but we have
# no alternative. Fix up the installation here.
mv $out/lib/swift/darwin/${swift.swiftArch}/* $out/lib/swift/darwin
rmdir $out/lib/swift/darwin/${swift.swiftArch}
mv $out/lib/swift/darwin $out/lib/swift/${swift.swiftOs}
'';
meta = {
description = "Framework for writing unit tests in Swift";
homepage = "https://github.com/apple/swift-corelibs-xctest";
platforms = lib.platforms.all;
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ dtzWill trepetti dduan trundle stephank ];
};
}