ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: "nobu (Nobuyoshi Nakada)" <nobu@ruby-lang.org>
To: ruby-core@ruby-lang.org
Subject: [ruby-core:52856] [Backport 200 - Backport #7948][Feedback] Can not compile pseudo static Ruby binary on OSX
Date: Mon, 25 Feb 2013 09:25:44 +0900	[thread overview]
Message-ID: <redmine.journal-36968.20130225092543@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-7948.20130225033559@ruby-lang.org


Issue #7948 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Open to Feedback

If you want all extension libraries, including encodings and
transcoders, to be statically linked to ruby, then you can use
--with-static-linked-ext configure option.

> What is the preferred way to compile static ruby (with minimal
> external dependencies) on systems like OSX which do not provide
> default package manager so no default library paths can be assumed.

Do you mean external libraries linked to ruby, by "external
dependencies"?

I couldn't get "no default library paths can be assumed", could you
ellaborate?

----------------------------------------
Backport #7948: Can not compile pseudo static Ruby binary on OSX
https://bugs.ruby-lang.org/issues/7948#change-36968

Author: mpapis (Michal Papis)
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 


In ruby 1.9.x I was using `LDFLAGS="-Bstatic $LDFLAGS"` to force pseudo static compilation on OSX (full static is not possible).

This stopped to work with 2.0.0-p0, the binary is compiled but the static flag is not handled properly and the generated binary can not run:

$ ~/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby --version
dyld: Symbol not found: _Init_encinit
  Referenced from: /Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby
  Expected in: flat namespace
 in /Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby
Trace/BPT trap

using `otool -L ~/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby` I can see the binary depends on a lot more external libraries:

/Users/mpapis/.sm/pkg/versions/tokaidoapp/2.0.0-p0/bin/ruby:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
	/Users/mpapis/.sm/pkg/versions/openssl/0.9.8y/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
	/Users/mpapis/.sm/pkg/versions/openssl/0.9.8y/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
	/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
	/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.7)
	/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.7)
	/usr/lib/libffi.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)

compared to `otool -L ~/.sm/pkg/versions/tokaidoapp/1.9.3-p392/bin/ruby`

/Users/mpapis/.sm/pkg/versions/tokaidoapp/1.9.3-p392/bin/ruby:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)

What is the preferred way to compile static ruby (with minimal external dependencies) on systems like OSX which do not provide default package manager so no default library paths can be assumed.



-- 
http://bugs.ruby-lang.org/

  reply	other threads:[~2013-02-25  0:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-24 18:35 [ruby-core:52845] [Backport 200 - Backport #7948][Open] Can not compile pseudo static Ruby binary on OSX mpapis (Michal Papis)
2013-02-25  0:25 ` nobu (Nobuyoshi Nakada) [this message]
2013-02-25  1:37 ` [ruby-core:52860] [Backport 200 - Backport #7948] " nobu (Nobuyoshi Nakada)
2013-02-25  1:38 ` [ruby-core:52861] " mpapis (Michal Papis)
2013-02-25  1:45 ` [ruby-core:52863] " luislavena (Luis Lavena)
2013-05-19 14:50 ` [ruby-core:55055] [ruby-trunk - Bug " mpapis (Michal Papis)
2013-07-25  0:54 ` [ruby-core:56164] " mpapis (Michal Papis)
2013-08-02  1:37 ` [ruby-core:56319] [Backport 200 - Backport " mpapis (Michal Papis)
2013-08-02  7:14 ` [ruby-core:56324] " mpapis (Michal Papis)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-36968.20130225092543@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).