blob: 65a256d6684d869c6dc69dbc607e2d349bdf72c3 [file] [log] [blame]
#!/usr/bin/env ruby
require 'ostruct';
$CONFIG = OpenStruct.new
$CONFIG.root = File.dirname(__FILE__)
$CONFIG.frameworks = "#{$CONFIG.root}/Frameworks"
class Framework
attr_reader :libs,:id
def initialize(framework)
@path = "#{$CONFIG.frameworks}/#{framework}.framework/Versions/Current/#{framework}"
reload
puts @libs.inspect
end
def id=(name)
system(
"install_name_tool",
"-id",
name,
@path)
reload
end
def get_install_name(lib)
return @libs[lib]
end
def set_install_name(lib,val)
puts "lib=#{lib}/#{@libs[lib]}, val=#{val}"
system(
"install_name_tool",
"-change",
@libs[lib],
val,
@path)
reload
end
private
def reload
@libs = IO.popen("otool -L '#{@path}'") { |fh|
fh.readline
if fh.readline =~ /([^(]*)/
@id = $1.strip
else
raise "Unable to read otool of framework (#{@path})"
end
fh.inject({}) { |coll,line|
if line =~ /(\w+)\.framework/
name = $1
if line =~ /([^(]*)/
coll.update(name => $1.strip)
else
raise "Unable to read otool of framework (#{@path})"
end
end
coll
}
}.freeze
end
end
def create_frameworks
["WebKit","WebCore","JavaScriptCore"].map { |name|
Framework.new(name)
}
end
def localize_install_names
wk_fr, wc_fr, js_fr = create_frameworks
wk_id, wc_id, js_id = "gwt/WebKit.framework", "gwt/WebCore.framework", "gwt/JavaScriptCore.framework"
js_fr.id = js_id
wc_fr.id = wc_id
wc_fr.set_install_name "JavaScriptCore", js_id
wk_fr.id = wk_id
wk_fr.set_install_name "JavaScriptCore", js_id
wk_fr.set_install_name "WebCore", wc_id
end
localize_install_names