summaryrefslogtreecommitdiff
path: root/instruby.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-02-23 00:09:48 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-02-23 00:09:48 +0000
commitd17841487575836516dc8a319313f6889473b0cb (patch)
treef7201923eaff0762a84c9e4edf06f2d320d2ad52 /instruby.rb
parente10564a578f1824847285063607d46b2cfdb96d7 (diff)
* instruby.rb (parse_args): use optparse instead of getopts.
* instruby.rb (DOSISH): embedded path in batch files should not be prefixed by DESTDIR. [ruby-core:02186] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'instruby.rb')
-rw-r--r--instruby.rb67
1 files changed, 33 insertions, 34 deletions
diff --git a/instruby.rb b/instruby.rb
index 9e3d0d3fd5..e9f6f0aca0 100644
--- a/instruby.rb
+++ b/instruby.rb
@@ -6,27 +6,29 @@ include Config
$:.unshift File.join(CONFIG["srcdir"], "lib")
require 'fileutils'
require 'shellwords'
-require 'getopts'
+require 'optparse'
+require 'optparse/shellwords'
require 'tempfile'
File.umask(0)
def parse_args()
- getopts('n', 'dest-dir:',
- 'make:', 'make-flags:', 'mflags:',
- 'mantype:doc')
-
- $dryrun = $OPT['n']
- $destdir = $OPT['dest-dir'] || ''
- $make = $OPT['make'] || $make || 'make'
- $mantype = $OPT['mantype']
- mflags = ($OPT['make-flags'] || '').strip
- mflags = ($OPT['mflags'] || '').strip if mflags.empty?
-
- $mflags = Shellwords.shellwords(mflags)
- if arg = $mflags.first
- arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ $mantype = 'doc'
+ $destdir = nil
+ $make = 'make'
+ $mflags = []
+ opt = OptionParser.new
+ opt.on('-n') {$dryrun = true}
+ opt.on('--dest-dir=DIR') {|dir| $destdir = dir}
+ opt.on('--make=COMMAND') {|make| $make = make}
+ opt.on('--mantype=MAN') {|man| $mantype = man}
+ opt.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v|
+ if arg = v.first
+ arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ end
+ $mflags.concat(v)
end
+ opt.parse! rescue abort [$!.message, opt].join("\n")
$make, *rest = Shellwords.shellwords($make)
$mflags.unshift(*rest) unless rest.empty?
@@ -71,14 +73,9 @@ def makedirs(dirs)
super(dirs, :mode => 0755, :verbose => true) unless dirs.empty?
end
-def join(dir1, dir2)
- # same scheme as DESTDIR of lib/mkmf.rb
- drive = File::PATH_SEPARATOR == ';' ? /\A\w:/ : /\A/
- if dir1.empty? || dir2.scan(drive).empty?
- dir1 + dir2
- else
- dir1 + $'
- end
+def with_destdir(dir)
+ dir = dir.sub(/\A\w:/, '') if File::PATH_SEPARATOR == ';'
+ $destdir + dir
end
exeext = CONFIG["EXEEXT"]
@@ -87,13 +84,13 @@ ruby_install_name = CONFIG["ruby_install_name"]
rubyw_install_name = CONFIG["rubyw_install_name"]
version = CONFIG["ruby_version"]
-bindir = join($destdir, CONFIG["bindir"])
-libdir = join($destdir, CONFIG["libdir"])
-rubylibdir = join($destdir, CONFIG["rubylibdir"])
-archlibdir = join($destdir, CONFIG["archdir"])
-sitelibdir = join($destdir, CONFIG["sitelibdir"])
-sitearchlibdir = join($destdir, CONFIG["sitearchdir"])
-mandir = File.join(join($destdir, CONFIG["mandir"]), "man")
+bindir = with_destdir(CONFIG["bindir"])
+libdir = with_destdir(CONFIG["libdir"])
+rubylibdir = with_destdir(CONFIG["rubylibdir"])
+archlibdir = with_destdir(CONFIG["archdir"])
+sitelibdir = with_destdir(CONFIG["sitelibdir"])
+sitearchlibdir = with_destdir(CONFIG["sitearchdir"])
+mandir = with_destdir(File.join(CONFIG["mandir"], "man"))
configure_args = Shellwords.shellwords(CONFIG["configure_args"])
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
dll = CONFIG["LIBRUBY_SO"]
@@ -128,6 +125,9 @@ end
Dir.chdir CONFIG["srcdir"]
ruby_shebang = File.join(CONFIG["bindir"], ruby_install_name)
+if File::ALT_SEPARATOR
+ ruby_bin_dosish = ruby_shebang.tr(File::SEPARATOR, File::ALT_SEPARATOR)
+end
for src in Dir["bin/*"]
next unless File.file?(src)
next if /\/[.#]|(\.(old|bak|orig|rej|diff|patch|core)|~|\/core)$/i =~ src
@@ -152,10 +152,9 @@ for src in Dir["bin/*"]
end
}
- if RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/
- ruby_bin_dosish = ruby_bin.gsub(Regexp.compile(File::SEPARATOR), File::ALT_SEPARATOR)
- batfile = dest + ".bat"
- open(batfile, "w") { |b|
+ if ruby_bin_dosish
+ batfile = File.join(CONFIG["bindir"], name + ".bat")
+ open(with_destdir(batfile), "w") { |b|
b.print <<EOH, shebang, body, <<EOF
@echo off
if "%OS%" == "Windows_NT" goto WinNT