Scripts to run the interpreter via debugger.
This commit is contained in:
Nobuyoshi Nakada 2020-06-13 08:09:00 +09:00
Родитель eabdad5e2f
Коммит 1f1b62fb7b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
4 изменённых файлов: 43 добавлений и 3 удалений

Просмотреть файл

@ -550,6 +550,13 @@ do-install-gem: $(PROGRAM) pre-install-gem
post-install-gem::
@$(NULLCMD)
install-dbg: pre-install-dbg do-install-dbg post-install-dbg
pre-install-dbg::
do-install-dbg: $(PROGRAM) pre-install-dbg
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=dbg
post-install-dbg::
@$(NULLCMD)
rdoc: PHONY main
@echo Generating RDoc documentation
$(Q) $(RDOC) --ri --op "$(RDOCOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) "$(srcdir)"

6
template/ruby-gdb.in Executable file
Просмотреть файл

@ -0,0 +1,6 @@
#!/bin/sh
prefix="/${0%/*}"
prefix="${prefix%/*}"
ruby="${bindir}/${RUBY_INSTALL_NAME}"
gdbinit="${rubylibdir}/gdbinit"
exec gdb --command="$gdbinit" --args "$ruby" "$@"

6
template/ruby-lldb.in Executable file
Просмотреть файл

@ -0,0 +1,6 @@
#!/bin/sh
prefix="/${0%/*}"
prefix="${prefix%/*}"
ruby="${bindir}/${RUBY_INSTALL_NAME}"
lldbinit="${rubylibdir}/lldb_cruby.py"
exec lldb -O "command script import $lldbinit" "$ruby" -- "$@"

Просмотреть файл

@ -149,7 +149,9 @@ end
$install_procs = Hash.new {[]}
def install?(*types, &block)
$install_procs[:all] <<= block
unless types.delete(:nodefault)
$install_procs[:all] <<= block
end
types.each do |type|
$install_procs[type] <<= block
end
@ -482,7 +484,12 @@ _=_\\
=end
EOS
installer = Struct.new(:ruby_shebang, :ruby_bin, :ruby_install_name, :stub, :trans)
installer = Struct.new(:ruby_shebang, :ruby_bin, :ruby_install_name, :stub, :trans) do
def transform(name)
RbConfig.expand(trans[name])
end
end
$script_installer = Class.new(installer) do
ruby_shebang = File.join(bindir, ruby_install_name)
if File::ALT_SEPARATOR
@ -527,7 +534,7 @@ $script_installer = Class.new(installer) do
end
def install(src, cmd)
cmd = cmd.sub(/[^\/]*\z/m) {|n| RbConfig.expand(trans[n])}
cmd = cmd.sub(/[^\/]*\z/m) {|n| transform(n)}
shebang, body = open(src, "rb") do |f|
next f.gets, f.read
@ -655,6 +662,20 @@ install?(:local, :comm, :man) do
end
end
install?(:dbg, :nodefault) do
prepare "debugger commands", bindir
prepare "debugger scripts", rubylibdir
conf = RbConfig::MAKEFILE_CONFIG.merge({"prefix"=>"${prefix#/}"})
Dir.glob(File.join(srcdir, "template/ruby-*db.in")) do |src|
cmd = $script_installer.transform(File.basename(src, ".in"))
open_for_install(File.join(bindir, cmd), $script_mode) {
RbConfig.expand(File.read(src), conf)
}
end
install File.join(srcdir, "misc/lldb_cruby.py"), File.join(rubylibdir, "lldb_cruby.py")
install File.join(srcdir, ".gdbinit"), File.join(rubylibdir, "gdbinit")
end
module RbInstall
module Specs
class FileCollector