[swift-dev] libdispatch switched to CMake

Saleem Abdulrasool compnerd at compnerd.org
Sun Sep 24 21:32:24 CDT 2017

On Sat, Sep 23, 2017 at 5:02 AM, David P Grove <groved at us.ibm.com> wrote:

> With autotools, the first time libdispatch was built (for SourceKit), it
> just did the C build of libdispatch. That had to be blown away and rebuilt
> a second time later (once swiftc, etc was available) so that we could build
> libdispatch.so with the Swift overlay built into it.
> Did you manage to change this so that the first time libdispatch is built
> it has a swiftc and Swift standard library it can use for its build?

Yeah, that double configuration should not be needed.  I'll make that
dependency more explicit and clean up some of the usage in the SourceKit
case.  But, there is no reason to do two different builds here.  The only
bits needed to build dispatch AFAICT, is the swift core library and the
swift compiler.  Even if the swift overlay is required, we can add that
build ordering.  The dispatch overlay is constructed in libdispatch
itself.  So, we can just order the compiler build to occur prior to the
libdispatch build, which needs to be built before SourceKit.

Thanks for making me take a second look and notice that the explicit
dependency is missing.

> --dave
> [image: Inactive hide details for Saleem Abdulrasool via swift-dev
> ---09/22/2017 08:59:28 PM---On Fri, Sep 22, 2017 at 2:31 PM, Jordan]Saleem
> Abdulrasool via swift-dev ---09/22/2017 08:59:28 PM---On Fri, Sep 22, 2017
> at 2:31 PM, Jordan Rose <jordan_rose at apple.com> wrote: > Hey, Saleem. I
> don't b
> From: Saleem Abdulrasool via swift-dev <swift-dev at swift.org>
> To: Jordan Rose <jordan_rose at apple.com>
> Cc: swift-dev <swift-dev at swift.org>
> Date: 09/22/2017 08:59 PM
> Subject: Re: [swift-dev] libdispatch switched to CMake
> Sent by: swift-dev-bounces at swift.org
> ------------------------------
> On Fri, Sep 22, 2017 at 2:31 PM, Jordan Rose <*jordan_rose at apple.com*
> <jordan_rose at apple.com>> wrote:
>    Hey, Saleem. I don't build libdispatch that often, but it seems to be
>    broken for me. If I delete the libdispatch-specific build directory and
>    then use build-script with --reconfigure, it doesn't actually attempt to
>    reconfigure.
>    [4/50] Performing build step for 'libdispatch'
>    FAILED: cd /home/jrose/public/build/Ninja-RelWithDebInfoAssert/libdispatch-linux-x86_64
>    && /usr/bin/cmake --build . && /usr/bin/cmake -E touch
>    /home/jrose/public/build/Ninja-RelWithDebInfoAssert/
>    swift-linux-x86_64/tools/SourceKit/libdispatch-prefix/
>    src/libdispatch-stamp/libdispatch-build
>    When I deleted my entire build directory and built from scratch,
>    libdispatch built, but Foundation couldn't see it.
>    Foundation/URLSession/http/HTTPURLProtocol.swift:325:19: error: use of
>    undeclared type 'DispatchData'
>            case data(DispatchData)
>                      ^~~~~~~~~~~~
>    Any ideas what's going wrong?
> So, definitely have an idea for the first case.  When building for Linux,
> the libdispatch build is shared across the swift build and the libdispatch
> build.  libdispatch is built as part of swift to be linked into SourceKit.
> If you disable SourceKit, this dependency will be broken.  The Jenkins
> builds had this exact issue (which we were able to identify between myself,
> mgottesmann, JoeS. and mishal_shah).  With the switch to CMake, the
> dependency should be tracked and you do not need to blow away libdispatch
> inbetween the builds (which is the better option -- just treat the
> incremental builds as incremental, no need to do any clean up).
> As to the Foundation issue, Im not sure ... possibly that the swift module
> is not built?  Ill try to take a look at that (though, honestly, that would
> probably be tomorrow).  Sorry about the trouble there (it built for me and
> on the build bots).
>    Thanks,
>    Jordan
>    On Sep 18, 2017, at 15:28, Saleem Abdulrasool via swift-dev <
>          *swift-dev at swift.org* <swift-dev at swift.org>> wrote:
>          Hello swift-dev,
>          This change should be transparent to everyone, but, it still is
>          a pretty big milestone.
>          As of this afternoon, the non-Darwin builds use CMake to build
>          libdispatch.  This work has been underway for quite some time, and we have
>          finally switched to that as the default on most targets.  This should be
>          more or less transparent to everyone developing with build-script or even
>          invoking CMake for swift directly.
>          This simplifies some of the logic for integrating the projects
>          and avoid unnecessary commands from being run.
>          Thanks particularly to Michael Gottesman, Chris Bieneman, Daniel
>          Steffen, David Grove, and Pierre Habouzit.  Sorry if I accidentally left
>          someone off the list!
>          Saleem
>          --
>          Saleem Abdulrasool
>          compnerd (at) compnerd (dot) org
>          _______________________________________________
>          swift-dev mailing list
> *swift-dev at swift.org* <swift-dev at swift.org>
> *https://lists.swift.org/mailman/listinfo/swift-dev*
>          <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.swift.org_mailman_listinfo_swift-2Ddev&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=Fe4FicGBU_20P2yihxV-apaNSFb6BSj6AlkptSF2gMk&m=590xgA-Zd76OeR8vVa2Bdxi7IWZJV8gYTQUQ1orlCv4&s=S0bCeAScUV4dc_1As6tnAdHurqx2LMbVje6L-vWbo3U&e=>
> --
> Saleem Abdulrasool
> compnerd (at) compnerd (dot) org___________________________
> ____________________
> swift-dev mailing list
> swift-dev at swift.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.
> swift.org_mailman_listinfo_swift-2Ddev&d=DwIGaQ&c=jf_
> iaSHvJObTbx-siA1ZOg&r=Fe4FicGBU_20P2yihxV-apaNSFb6BSj6AlkptSF2gMk&m=
> 590xgA-Zd76OeR8vVa2Bdxi7IWZJV8gYTQUQ1orlCv4&s=S0bCeAScUV4dc_
> 1As6tnAdHurqx2LMbVje6L-vWbo3U&e=

Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170924/f6e6e618/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170924/f6e6e618/attachment.gif>

More information about the swift-dev mailing list