What you will need to do to make this work is to get the "fake toolchain" to 
look like how an actual toolchain looks on disk (e.g., libFoundation in the 
same relative position, in `<something>/../lib/swift/linux`), presumably using 
a symlink. The special rpath is what is causing the built swift-build (in this 
case the stage1 swift-build) to look in that directory for its libraries. If 
libFoundation.so is there, then that should suffice for it to be found and 
loaded.

 - Daniel

> On May 5, 2016, at 2:04 AM, Bouke Haarsma via swift-dev <swift-dev@swift.org> 
> wrote:
> 
> For SwiftPM, I'm looking to replace some POSIX calls with Foundation. NSTask
> and NSFileManager amongst others. I've created a few PRs already for this, see
> [1]. However before these can be merged, the build scripts need to be adjusted
> to allow SwiftPM to build against Foundation.
> 
> There has already been some pointers posted in the comments on one of these 
> PRs,
> see [2]. I tried to implement those, see my changes to the swift build-script 
> in
> [3] and the "fake toolchain" in SwiftPM in [4]. However SwiftPM builds stage1;
> stage2 is still failing. I don't know how to proceed; I've only scratched the 
> surface regarding build systems and the many tools used to build the various 
> swift parts. I would really love some help going forward.
> 
>     $ swift/utils/build-script -R --swiftpm
>     (...)
>     --- bootstrap: note: building self-hosted 'swift-build': env 
> SWIFT_EXEC=/media/sf_Developer/apple/build/Ninja-ReleaseAssert/swiftpm-linux-x86_64/debug/swiftc
>  
> SWIFT_BUILD_PATH=/media/sf_Developer/apple/build/Ninja-ReleaseAssert/swiftpm-linux-x86_64
>  
> /media/sf_Developer/apple/build/Ninja-ReleaseAssert/swiftpm-linux-x86_64/debug/swift-build-stage1
>  -Xlinker -rpath -Xlinker $ORIGIN/../lib/swift/linux -Xlinker -L -Xlinker 
> /media/sf_Developer/apple/build/Ninja-ReleaseAssert/foundation-linux-x86_64/Foundation
>  -Xlinker -rpath -Xlinker 
> /media/sf_Developer/apple/build/Ninja-ReleaseAssert/foundation-linux-x86_64/Foundation
>  -Xswiftc 
> -I/media/sf_Developer/apple/build/Ninja-ReleaseAssert/foundation-linux-x86_64/Foundation
>  -Xswiftc 
> -I/media/sf_Developer/apple/build/Ninja-ReleaseAssert/foundation-linux-x86_64/Foundation/usr/lib/swift
>     
> /media/sf_Developer/apple/build/Ninja-ReleaseAssert/swiftpm-linux-x86_64/debug/swift-build-stage1:
>  error while loading shared libraries: libFoundation.so: cannot open shared 
> object file: No such file or directory
>     --- bootstrap: error: build failed with exit status 127
> 
> - Bouke
> 
> [1]: https://github.com/apple/swift-package-manager/pulls/Bouke 
> <https://github.com/apple/swift-package-manager/pulls/Bouke>
> [2]: 
> https://github.com/apple/swift-package-manager/pull/292#issuecomment-216508823
>  
> <https://github.com/apple/swift-package-manager/pull/292#issuecomment-216508823>
> [3]: https://github.com/apple/swift/compare/master...Bouke:swiftpm-foundation 
> <https://github.com/apple/swift/compare/master...Bouke:swiftpm-foundation>
> [4]: 
> https://github.com/apple/swift-package-manager/compare/ef491db...Bouke:swiftpm-foundation
>  
> <https://github.com/apple/swift-package-manager/compare/ef491db...Bouke:swiftpm-foundation>_______________________________________________
> swift-dev mailing list
> swift-dev@swift.org <mailto:swift-dev@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-dev 
> <https://lists.swift.org/mailman/listinfo/swift-dev>
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to