'SwiftShims': no such file or directory

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?

Thanks,
Eric

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.

- Daniel

···

On Sep 19, 2016, at 6:53 AM, Eric Wing via swift-dev <swift-dev@swift.org> 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?

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

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.

···

on Mon Sep 19 2016, Eric Wing <swift-dev-AT-swift.org> 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?

--
-Dave

Unfortunately no. I didn't use shared folders.

I'm still having problems building corelibs-foundation. Could this be
the reason?

Thanks,
Eric

···

On 9/19/16, Daniel Dunbar <daniel_dunbar@apple.com> 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.

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

···

On 9/19/16, Dave Abrahams via swift-dev <swift-dev@swift.org> wrote:

on Mon Sep 19 2016, Eric Wing <swift-dev-AT-swift.org> 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

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.

···

on Mon Sep 19 2016, Eric Wing <swift-dev-AT-swift.org> wrote:

On 9/19/16, Daniel Dunbar <daniel_dunbar@apple.com> 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?

--
-Dave