swiftPackages.Dispatch: 5.5 -> 5.7

This commit is contained in:
Stéphan Kochen 2022-07-25 20:36:50 +02:00
parent 8ed924c07a
commit 3c54a5dce6
6 changed files with 91 additions and 43 deletions

View File

@ -57,6 +57,10 @@ let
swift = swift-unwrapped;
};
Dispatch = if stdenv.isDarwin
then null # part of libsystem
else callPackage ./libdispatch { };
};
in self

View File

@ -0,0 +1,46 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, ninja
, useSwift ? true, swift
}:
stdenv.mkDerivation rec {
pname = "swift-corelibs-libdispatch";
# Releases are made as part of the Swift toolchain, so versions should match.
version = "5.7";
src = fetchFromGitHub {
owner = "apple";
repo = "swift-corelibs-libdispatch";
rev = "swift-${version}-RELEASE";
hash = "sha256-1qbXiC1k9+T+L6liqXKg6EZXqem6KEEx8OctuL4Kb2o=";
};
outputs = [ "out" "dev" "man" ];
nativeBuildInputs = [ cmake ]
++ lib.optionals useSwift [ ninja swift ];
patches = [ ./disable-swift-overlay.patch ];
cmakeFlags = lib.optional useSwift "-DENABLE_SWIFT=ON";
postInstall = ''
# Provide a CMake module. This is primarily used to glue together parts of
# the Swift toolchain. Modifying the CMake config to do this for us is
# otherwise more trouble.
mkdir -p $dev/lib/cmake/dispatch
export dylibExt="${stdenv.hostPlatform.extensions.sharedLibrary}"
substituteAll ${./glue.cmake} $dev/lib/cmake/dispatch/dispatchConfig.cmake
'';
meta = {
description = "Grand Central Dispatch";
homepage = "https://github.com/apple/swift-corelibs-libdispatch";
platforms = lib.platforms.linux;
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ cmm dtzWill trepetti dduan trundle stephank ];
};
}

View File

@ -0,0 +1,35 @@
Enabling Swift support is normally intended for building an overlay for a
Swift SDK, which changes the installation layout. Prevent this.
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -287,7 +287,7 @@ configure_file("${PROJECT_SOURCE_DIR}/cmake/config.h.in"
add_compile_definitions($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:HAVE_CONFIG_H>)
-if(ENABLE_SWIFT)
+if(0)
set(INSTALL_TARGET_DIR "${CMAKE_INSTALL_LIBDIR}/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>" CACHE PATH "Path where the libraries will be installed")
set(INSTALL_DISPATCH_HEADERS_DIR "${CMAKE_INSTALL_LIBDIR}/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/dispatch" CACHE PATH "Path where the headers will be installed for libdispatch")
set(INSTALL_BLOCK_HEADERS_DIR "${CMAKE_INSTALL_LIBDIR}/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/Block" CACHE PATH "Path where the headers will be installed for the blocks runtime")
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -1,6 +1,6 @@
# TODO(compnerd) add symlinks
-if(NOT ENABLE_SWIFT)
+if(1)
install(FILES
dispatch.3
dispatch_after.3
--- a/src/swift/CMakeLists.txt
+++ b/src/swift/CMakeLists.txt
@@ -47,7 +47,7 @@ get_swift_host_arch(swift_arch)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftmodule
${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftdoc
- DESTINATION ${INSTALL_TARGET_DIR}/${swift_arch})
+ DESTINATION ${INSTALL_TARGET_DIR}/swift)
set_property(GLOBAL APPEND PROPERTY DISPATCH_EXPORTS swiftDispatch)
install(TARGETS swiftDispatch
EXPORT dispatchExports

View File

@ -0,0 +1,5 @@
add_library(dispatch SHARED IMPORTED)
set_property(TARGET dispatch PROPERTY IMPORTED_LOCATION "@out@/lib/libdispatch@dylibExt@")
add_library(swiftDispatch SHARED IMPORTED)
set_property(TARGET swiftDispatch PROPERTY IMPORTED_LOCATION "@out@/lib/libswiftDispatch@dylibExt@")

View File

@ -1,42 +0,0 @@
{ lib
, clangStdenv
, fetchFromGitHub
, cmake
, ninja
, libbsd
, libsystemtap
}:
let
version = "5.5";
in clangStdenv.mkDerivation {
pname = "swift-corelibs-libdispatch";
inherit version;
outputs = [ "out" "dev" "man" ];
src = fetchFromGitHub {
owner = "apple";
repo = "swift-corelibs-libdispatch";
rev = "swift-${version}-RELEASE";
sha256 = "sha256-MbLgmS6qRSRT+2dGqbYTNb5MTM4Wz/grDXFk1kup+jk=";
};
nativeBuildInputs = [
cmake
ninja
];
buildInputs = [
libbsd
libsystemtap
];
meta = {
description = "Grand Central Dispatch";
homepage = "https://github.com/apple/swift-corelibs-libdispatch";
platforms = lib.platforms.linux;
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.cmm ];
};
}

View File

@ -37567,7 +37567,7 @@ with pkgs;
mictray = callPackage ../tools/audio/mictray { };
swift-corelibs-libdispatch = callPackage ../development/libraries/swift-corelibs-libdispatch { };
swift-corelibs-libdispatch = swiftPackages.Dispatch;
swaysettings = callPackage ../applications/misc/swaysettings { };