File: instruby.rb

package info (click to toggle)
ruby 1.4.3-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,068 kB
  • ctags: 7,509
  • sloc: ansic: 60,668; ruby: 23,106; yacc: 4,122; sh: 1,753; lisp: 997; makefile: 597; sed: 68; awk: 36; tcl: 31; perl: 17; python: 6
file content (138 lines) | stat: -rwxr-xr-x 3,149 bytes parent folder | download
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: