io/console: win32_vk dependencies
* ext/io/console/depend: check if VK table is modified by the checksum. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fe6c545d43
commit
81c83f55e7
@ -1,3 +1,5 @@
|
|||||||
|
WIN32_VK_HEADER = {$(srcdir)}win32_vk.chksum
|
||||||
|
|
||||||
$(OBJS): $(HDRS) $(ruby_headers) \
|
$(OBJS): $(HDRS) $(ruby_headers) \
|
||||||
$(VK_HEADER) \
|
$(VK_HEADER) \
|
||||||
$(hdrdir)/ruby/io.h \
|
$(hdrdir)/ruby/io.h \
|
||||||
@ -6,5 +8,12 @@ $(OBJS): $(HDRS) $(ruby_headers) \
|
|||||||
|
|
||||||
win32_vk.h: win32_vk.list
|
win32_vk.h: win32_vk.list
|
||||||
|
|
||||||
.list.h:
|
{$(srcdir)}.list.h:
|
||||||
gperf --ignore-case -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k* --output-file=$@ $<
|
gperf --ignore-case -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k* --output-file=$(@F) $<
|
||||||
|
|
||||||
|
.SUFFIXES: .chksum .list
|
||||||
|
|
||||||
|
{$(srcdir)}.list.chksum:
|
||||||
|
@$(RUBY) -I$(top_srcdir)/tool -rchecksum \
|
||||||
|
-e "Checksum.update(ARGV) {|k,f|k.copy(f) rescue k.make(f)}" \
|
||||||
|
-- --make=$(MAKE) -I$(srcdir) $(<F) $(@F:.chksum=.h)
|
||||||
|
@ -5,7 +5,7 @@ hdr = nil
|
|||||||
case
|
case
|
||||||
when macro_defined?("_WIN32", "")
|
when macro_defined?("_WIN32", "")
|
||||||
# rb_w32_map_errno: 1.8.7
|
# rb_w32_map_errno: 1.8.7
|
||||||
vk_header = "win32_vk.h"
|
vk_header = "$(WIN32_VK_HEADER)"
|
||||||
when hdr = %w"termios.h termio.h".find {|h| have_header(h)}
|
when hdr = %w"termios.h termio.h".find {|h| have_header(h)}
|
||||||
have_func("cfmakeraw", hdr)
|
have_func("cfmakeraw", hdr)
|
||||||
when have_header(hdr = "sgtty.h")
|
when have_header(hdr = "sgtty.h")
|
||||||
|
1
ext/io/console/win32_vk.chksum
Normal file
1
ext/io/console/win32_vk.chksum
Normal file
@ -0,0 +1 @@
|
|||||||
|
src="win32_vk.list", len=3269, checksum=34076
|
65
tool/checksum.rb
Executable file
65
tool/checksum.rb
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!ruby
|
||||||
|
|
||||||
|
require_relative 'vpath'
|
||||||
|
|
||||||
|
class Checksum
|
||||||
|
def initialize(vpath)
|
||||||
|
@vpath = vpath
|
||||||
|
end
|
||||||
|
|
||||||
|
def source=(source)
|
||||||
|
@source = source
|
||||||
|
@checksum = File.basename(source, ".*") + ".chksum"
|
||||||
|
end
|
||||||
|
|
||||||
|
def update?
|
||||||
|
src = @vpath.read(@source)
|
||||||
|
@len = src.length
|
||||||
|
@sum = src.sum
|
||||||
|
begin
|
||||||
|
data = @vpath.read(@checksum)
|
||||||
|
rescue
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return false unless data[/src="([0-9a-z_.-]+)",/, 1] == @source
|
||||||
|
return false unless @len == data[/\blen=(\d+)/, 1].to_i
|
||||||
|
return false unless @sum == data[/\bchecksum=(\d+)/, 1].to_i
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update!
|
||||||
|
open(@checksum, "wb") {|f|
|
||||||
|
f.puts("src=\"#{@source}\", len=#{@len}, checksum=#{@sum}")
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
return true if update?
|
||||||
|
update! if ret = yield(self)
|
||||||
|
ret
|
||||||
|
end
|
||||||
|
|
||||||
|
def copy(name)
|
||||||
|
@vpath.open(name, "rb") {|f|
|
||||||
|
IO.copy_stream(f, name)
|
||||||
|
}
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def make(arg)
|
||||||
|
system([@make, arg].compact.join(' '))
|
||||||
|
end
|
||||||
|
|
||||||
|
def def_options(opt = (require 'optparse'; OptionParser.new))
|
||||||
|
@vpath.def_options(opt)
|
||||||
|
opt.on("--make=PATH") {|v| @make = v}
|
||||||
|
opt
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.update(argv)
|
||||||
|
k = new(VPath.new)
|
||||||
|
k.source, *argv = k.def_options.parse(*argv)
|
||||||
|
k.update {|k| yield(k, *argv)}
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user