Re: [swift-dev] 'SwiftShims': no such file or directory

2016-09-20 Thread Eric Wing via swift-dev
On 9/19/16, Dave Abrahams via swift-dev  wrote:
>
> on Mon Sep 19 2016, Eric Wing  wrote:
>
>> I've been trying to build Swift for Linux with --installable-package
>> to build a swift-package.tar.gz that I can install to another Linux
>> machine.
>>
>> When I extract my package on the other machine, and try either
>> compiling a simple print("hello world") program either with swiftc, or
>> doing this in the swift repl, I get the error message:
>> opening import file for module 'SwiftShims': No such file or directory
>>
>> I don't seem to get this problem on the machine I built Swift on.
>>
>> I didn't have this problem with Swift 2.3, but I'm always getting it
>> now with Swift 3.
>>
>> What am I doing wrong?
>
> There may be a bug in the build-script.  FWIW, the instructions in the
> build-script seem to indicate the correct syntax is
> installable_package="/tmp/xcode-xyz-root.tar.gz" but that's probably not
> the issue.  It seems more likely that the code building the tarball is
> leaving out the SwiftShims module.
>
> --
> -Dave


I did more digging on this. I believe the Swift build-script is
correct, and the problem has something to do with my environment.

I am using something called Steam-Runtime as my build environment.
Essentially, it uses schroot to create a mini Linux environment inside
your Linux distro which comes supplied with its own version of shared
libraries. The idea is that anybody who builds in this environment can
ship a Linux binary that is guaranteed to work in any Steam
environment. Steam-Runtime is derived from Ubuntu 12.04, so as a
side-effect, because the libraries and GLIBC are kind of old, the
binaries produced in Steam-Runtime generally work on most modern Linux
distros (if you are careful about dependencies).

So I've been building a Swift compiler that works on most Linux
distros, without having to make separate builds for each distro and
version. Then compiling Swift programs inside Steam-Runtime will also
produce binaries that work on most Linux distros.

This worked fine for me before Swift 3, but now with 3.0, there seems
to be something different now. I discovered that if I run my built
Swift compiler inside Steam-Runtime on another computer it works. But
if I do not run inside Steam-Runtime, then I get the 'SwiftShims': no
such file or directory at runtime. (This used to work before 3.0.) To
be clear, swift and swiftc actually do run in this case which means
all the symbols in all the dependent dynamic libraries resolved on my
system (without Steam-Runtime). The Swift REPL starts correctly and
shows me a prompt. It is only when I try to do some code do I get the
'SwiftShims' message. So the strange part is why it can't find the
SwiftShims stuff.

Can you tell me what file(s) Swift looking for when it produces this
error?  What does it use to determine the search path (hardcoded at
build time?, relative to something?, environmental variable?). And is
there a way to print out debug information of what search paths it is
using?

Thanks,
Eric
___
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev


Re: [swift-dev] 'SwiftShims': no such file or directory

2016-09-20 Thread Dave Abrahams via swift-dev

on Mon Sep 19 2016, Eric Wing  wrote:

> I've been trying to build Swift for Linux with --installable-package
> to build a swift-package.tar.gz that I can install to another Linux
> machine.
>
> When I extract my package on the other machine, and try either
> compiling a simple print("hello world") program either with swiftc, or
> doing this in the swift repl, I get the error message:
> opening import file for module 'SwiftShims': No such file or directory
>
> I don't seem to get this problem on the machine I built Swift on.
>
> I didn't have this problem with Swift 2.3, but I'm always getting it
> now with Swift 3.
>
> What am I doing wrong?

There may be a bug in the build-script.  FWIW, the instructions in the
build-script seem to indicate the correct syntax is
installable_package="/tmp/xcode-xyz-root.tar.gz" but that's probably not
the issue.  It seems more likely that the code building the tarball is
leaving out the SwiftShims module.

-- 
-Dave

___
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev


Re: [swift-dev] 'SwiftShims': no such file or directory

2016-09-20 Thread Dave Abrahams via swift-dev

on Mon Sep 19 2016, Eric Wing  wrote:

> On 9/19/16, Daniel Dunbar  wrote:
>> Are you building within a shared folder? We have heard reports of this
>> happening in such an environment, but we don't have a handle on the exact
>> steps to reproduce. Getting that information would be very useful.
>>
>
> Unfortunately no. I didn't use shared folders.
>
> I'm still having problems building corelibs-foundation. Could this be
> the reason?

SwiftShims is part of the standard library, and you shouldn't expect to
be able to build corelibs-foundation without having first built the
standard library.

-- 
-Dave

___
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev