[swift-dev] Build failure for Linux: "No such module: SwiftGlibc"

Karl Wagner springsupport at me.com
Wed May 4 03:04:54 CDT 2016


> On 3 May 2016, at 20:12, Jordan Rose <jordan_rose at apple.com> wrote:
> 
> 
>> On May 3, 2016, at 10:40, Karl Wagner via swift-dev <swift-dev at swift.org <mailto:swift-dev at swift.org>> wrote:
>> 
>> 
>>> On 2 May 2016, at 18:42, Joseph Bell <joe at iachieved.it <mailto:joe at iachieved.it>> wrote:
>>> 
>>> Karl,
>>> 
>>> A number of us are on Slack working with ARM support - would you like an invite?
>>> 
>>> Joe
>>> 
>> 
>> Hi, 
>> 
>> yes that would nice.
>> 
>> The modulemap issue can be fixed by adding a -resource-dir flag. Going with a comment in AddSwift.cmake, I switched the include fag to the library output directory to "-resource-dir”, but then SwiftShims wouldn’t build. So I changed the flag back to a standard include and make it *also* specify “-resource-dir” on cross-compile (so the cross command has both -I and -resource-dir). Now the native host builds, but the cross-compiled stdlib won’t because of the same SwiftShims issue.
>> 
>> So I need to look at how the compiler uses -resource-dir what’s going on with SwiftShims.
> 
> -resource-dir covers everything in lib/swift/. I'm not sure we're properly set up to handle more than one architecture on Linux, though: we still link against the .so's in lib/swift/linux/ rather than lib/swift/linux/$ARCH, despite "fat" libraries not being sensible here. Maybe that's the way to go: reorganize lib/swift/linux/ so that there's nothing that's not in an architecture-specific subdirectory.
> 
> Meanwhile, you can probably get things off the ground by copying or symlinking everything in lib/swift/ that's not in lib/swift/linux/ into your custom resource directory. (I think that's just the shims/ folder right now.)
> 
> Jordan

Thanks, that was helpful! Got it to finally complete. I had to set the resource-dir to lib/swift.

A few things get generated to the non-specific lib/swift/linux folder, but they’re also in linux/armv7 (which does seem like something we should fix). The shims and clang headers are the only things that aren’t also in the armv7 folder.

However, it did work after that; compiled both the tools and standard library for the RPi :). I am having some trouble installing, though. There is no “install” build target generated. I’ve been looking at the sources, and I can’t see it, either - I can see how the install components get passed in, how things get added to the components, but not where any copying takes place. What is the intended command to install the built components, “ninja install”?

The things it built do seem to work. I “manually installed” them, and besides needing some massaging to satisfy SwiftGlibc (modulemap obviously needed to be regenerated with correct system root, stddef.h and stdarg.h strangely unable to be found — they were in /usr/include/linux) it seems reasonable. There is a known LLVM bug preventing ‘swift’ (the interpreter) from working, which should definitely be merged in to our clone of LLVM (see https://github.com/hpux735/swift-llvm <https://github.com/hpux735/swift-llvm>), but ‘swiftc’ works.

Karl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160504/479f91dd/attachment.html>


More information about the swift-dev mailing list