1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!./miniruby -I.
require "rbconfig.rb"
include Config
destdir = ARGV[0] || ''
$:.unshift CONFIG["srcdir"]+"/lib"
require "ftools"
require "find"
exeext = CONFIG["EXEEXT"]
if ENV["prefix"]
prefix = ENV["prefix"]
else
prefix = CONFIG["prefix"]
end
ruby_install_name = CONFIG["ruby_install_name"]
bindir = destdir+CONFIG["bindir"]
libdir = destdir+CONFIG["libdir"]
#pkglibdir = libdir + "/" + ruby_install_name+"/"+CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
pkglibdir = libdir + "/ruby/"+CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
archdir = pkglibdir + "/" + CONFIG["arch"]
mandir = destdir+CONFIG["mandir"] + "/man1"
wdir = Dir.getwd
File.makedirs bindir, true
File.install ruby_install_name+exeext,
"#{bindir}/#{ruby_install_name}#{exeext}", 0755, true
for dll in Dir['*.dll']
File.install dll, "#{bindir}/#{dll}", 0755, true
end
File.makedirs libdir, true
for lib in ["libruby.so.LIB", CONFIG["LIBRUBY_SO"]]
if File.exist? lib
File.install lib, libdir, 0555, true
end
end
def string_invert(x)
y = []
x.each_byte{|b|
y << 0xFF - b
}
return y.pack('C*')
end
def versplit(x)
return x.split('.').collect{|x|
/^(\d+)(\w*?)(\d*)$/o =~ x
[$1.to_i, if !$2 || $2.size == 0
[0xFF].pack('C')
else
string_invert($2)
end, $3.to_i]
}
end
def vercmp (a,b)
patt = /(?:\.\d+\w*)+$/o
ver_a = a.scan(patt)
ver_b = b.scan(patt)
if ver_a.size == 0
if ver_b.size == 0
return 0
else
return -1
end
elsif ver_b.size == 0
return 1
else
versplit(ver_a[0]) <=> versplit(ver_b[0])
end
end
Dir.chdir libdir
if File.exist? CONFIG["LIBRUBY_SO"]
list = CONFIG["LIBRUBY_ALIASES"].split + CONFIG["LIBRUBY_SO"]
target = nil
list.sort{|a,b| vercmp(b,a)}.each {|link|
if target
if File.exist? link
File.delete link
print "delete #{link}\n"
end
File.symlink target, link
print "link #{target} -> #{link}\n"
end
target = link
}
end
Dir.chdir wdir
File.makedirs pkglibdir, true
File.makedirs archdir, true
File.makedirs pkglibdir+"/site_ruby", true
File.makedirs pkglibdir+"/site_ruby/"+CONFIG["arch"], true
if RUBY_PLATFORM =~ /cygwin/ and File.exist? "import.h"
File.install "import.h", archdir, 0644, true
end
if RUBY_PLATFORM =~ /-aix/
File.install "ruby.imp", archdir, 0644, true
end
Dir.chdir "ext"
system "../miniruby#{exeext} extmk.rb install #{destdir}"
Dir.chdir CONFIG["srcdir"]
Find.find("lib") do |f|
next unless /\.rb$/ =~ f
dir = pkglibdir+"/"+File.dirname(f[4..-1])
File.makedirs dir, true unless File.directory? dir
File.install f, dir, 0644, true
end
for f in Dir["*.h"]
File.install f, archdir, 0644, true
end
if RUBY_PLATFORM =~ /mswin32/
File.makedirs archdir + "/win32", true
File.install "win32/win32.h", archdir + "/win32", 0644, true
if File.exist? wdir+'/rubymw.lib'
File.install wdir+'/rubymw.lib', archdir, 0644, true
end
end
File.install wdir+'/'+CONFIG['LIBRUBY_A'], archdir, 0644, true
File.makedirs mandir, true
File.install "ruby.1", mandir, 0644, true
Dir.chdir wdir
File.install "config.h", archdir, 0644, true
File.install "rbconfig.rb", archdir, 0644, true
# vi:set sw=2:
|