[macruby-changes] [764] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Dec 2 23:29:05 PST 2008
Revision: 764
http://trac.macosforge.org/projects/ruby/changeset/764
Author: lsansonetti at apple.com
Date: 2008-12-02 23:29:05 -0800 (Tue, 02 Dec 2008)
Log Message:
-----------
deprecate the 'build_as_embeddable' build config variable, refactor HotCocoa's ApplicationBuilder to support a direct deploy facility, introduce a 'Embed MacRuby' Xcode target that calls HotCocoa's ApplicationBuilder's deploy facility
Modified Paths:
--------------
MacRuby/trunk/Rakefile
MacRuby/trunk/lib/hotcocoa/application_builder.rb
Added Paths:
-----------
MacRuby/trunk/misc/xcode-templates/Target Templates/
MacRuby/trunk/misc/xcode-templates/Target Templates/Embed MacRuby.trgttmpl
Modified: MacRuby/trunk/Rakefile
===================================================================
--- MacRuby/trunk/Rakefile 2008-12-03 06:07:05 UTC (rev 763)
+++ MacRuby/trunk/Rakefile 2008-12-03 07:29:05 UTC (rev 764)
@@ -1,6 +1,6 @@
# User customizable variables.
# These variables can be set from the command line. Example:
-# $ rake build_as_embeddable=true
+# $ rake framework_instdir=~/Library/Frameworks sym_instdir=~/bin
def do_option(name, default)
val = ENV[name]
@@ -28,7 +28,6 @@
FRAMEWORK_INSTDIR = do_option('framework_instdir', '/Library/Frameworks')
SYM_INSTDIR = do_option('sym_instdir', '/usr/local')
NO_WARN_BUILD = !do_option('allow_build_warnings', false)
-BUILD_AS_EMBEDDABLE = do_option('build_as_embeddable', false)
ENABLE_STATIC_LIBRARY = do_option('enable_static_library', 'no') { 'yes' }
ENABLE_DEBUG_LOGGING = do_option('enable_debug_logging', true) { |x| x == 'true' }
@@ -36,6 +35,11 @@
# Everything below this comment should *not* be modified.
+if ENV['build_as_embeddable']
+ $stderr.puts "The 'build_as_embeddable' build configuration has been removed because it is no longer necessary. To package a full version of MacRuby inside your application, please use `macrake deploy` for HotCocoa apps and the `Embed MacRuby` target for Xcode apps."
+ exit 1
+end
+
verbose(true)
if `sw_vers -productVersion`.strip.to_f < 10.5
@@ -69,15 +73,7 @@
RUBY_VENDOR_LIB2 = File.join(RUBY_VENDOR_LIB, NEW_RUBY_VERSION)
RUBY_VENDOR_ARCHLIB = File.join(RUBY_VENDOR_LIB2, NEW_RUBY_PLATFORM)
-INSTALL_NAME =
- if BUILD_AS_EMBEDDABLE
- File.join("@executable_path/../Frameworks", FRAMEWORK_NAME + '.framework',
- 'Versions', MACRUBY_VERSION, 'usr/lib',
- 'lib' + RUBY_SO_NAME + '.dylib')
- else
- File.join(FRAMEWORK_USR_LIB, 'lib' + RUBY_SO_NAME + '.dylib')
- end
-
+INSTALL_NAME = File.join(FRAMEWORK_USR_LIB, 'lib' + RUBY_SO_NAME + '.dylib')
ARCHFLAGS = ARCHS.map { |a| '-arch ' + a }.join(' ')
CFLAGS = "-I. -I./include -I/usr/include/libxml2 #{ARCHFLAGS} -fno-common -pipe -O2 -g -Wall"
CFLAGS << " -Wno-parentheses -Wno-deprecated-declarations -Werror" if NO_WARN_BUILD
Modified: MacRuby/trunk/lib/hotcocoa/application_builder.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/application_builder.rb 2008-12-03 06:07:05 UTC (rev 763)
+++ MacRuby/trunk/lib/hotcocoa/application_builder.rb 2008-12-03 07:29:05 UTC (rev 764)
@@ -64,7 +64,18 @@
end
builder.build
end
-
+
+ # Used by the "Embed MacRuby" Xcode target.
+ def self.deploy(path)
+ raise "Given path `#{path}' does not exist" unless File.exist?(path)
+ raise "Given path `#{path}' does not look like an application bundle" unless File.extname(path) == '.app'
+ deployer = new
+ Dir.chdir(File.dirname(path)) do
+ deployer.name = File.basename(path, '.app')
+ deployer.deploy
+ end
+ end
+
def initialize
@sources = []
@resources = []
@@ -76,11 +87,15 @@
write_bundle_files
copy_sources
copy_resources
- copy_framework if deploy?
- copy_bs_dylibs if deploy?
+ deploy if deploy?
copy_icon_file if icon
end
-
+
+ def deploy
+ copy_framework
+ copy_bs_dylibs
+ end
+
def deploy?
@deploy
end
@@ -129,7 +144,10 @@
end
def copy_framework
- FileUtils.cp_r macruby_framework_path, frameworks_root
+ unless File.exist?(File.join(frameworks_root, 'MacRuby.framework'))
+ FileUtils.mkdir_p frameworks_root
+ FileUtils.cp_r macruby_framework_path, frameworks_root
+ end
`install_name_tool -change #{current_macruby_path}/usr/lib/libmacruby.dylib @executable_path/../Frameworks/MacRuby.framework/Versions/#{current_macruby_version}/usr/lib/libmacruby.dylib '#{macos_root}/#{objective_c_executable_file}'`
end
Added: MacRuby/trunk/misc/xcode-templates/Target Templates/Embed MacRuby.trgttmpl
===================================================================
--- MacRuby/trunk/misc/xcode-templates/Target Templates/Embed MacRuby.trgttmpl (rev 0)
+++ MacRuby/trunk/misc/xcode-templates/Target Templates/Embed MacRuby.trgttmpl 2008-12-03 07:29:05 UTC (rev 764)
@@ -0,0 +1,13 @@
+{
+ Class = Aggregate;
+ Description = "Target that embeds MacRuby.framework inside the current application bundle.";
+ CustomBuildSettings = {
+ };
+ BuildPhases = (
+ {
+ Class = ShellScript;
+ ShellPath = "/bin/sh";
+ ShellScript = "PATH=\"$PATH:/usr/local/bin\" /usr/bin/env macruby -r hotcocoa/application_builder -e \"HotCocoa::ApplicationBuilder.deploy(ARGV[0])\" $TARGET_BUILD_DIR/$PROJECT_NAME.app";
+ },
+ );
+}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20081202/621def3b/attachment.html>
More information about the macruby-changes
mailing list