--- ruby1.9.2-1.9.2.z1.orig/debian/rdoc1.9.2.rd +++ ruby1.9.2-1.9.2.z1/debian/rdoc1.9.2.rd @@ -0,0 +1,147 @@ +=begin += NAME + +rdoc1.9 - Generate documentation from Ruby script files + += SYNOPSIS + + rdoc1.9 [options] [names...] + += DESCRIPTION + +Files are parsed, and the information they contain collected, before any +output is produced. This allows cross references between all files to be +resolved. If a name is a directory, it is traversed. If no names are +specified, all Ruby files in the current directory (and subdirectories) are +processed. + +Available output formatters: chm, html, ri, xml + +For information on where the output goes, use: + + rdoc --help-output + += OPTIONS + +: --accessor, -A ((|accessorname[,..]|)) + comma separated list of additional class methods that should be treated + like 'attr_reader' and friends. Option may be repeated. Each accessorname + may have '=text' appended, in which case that text appears where the + r/w/rw appears for normal accessors. + +: --all, -a + include all methods (not just public) in the output. + +: --charset, -c ((|charset|)) + specifies HTML character-set + +: --debug, -D + displays lots on internal stuff + +: --diagram, -d + generate diagrams showing modules and classes. You need dot V1.8.6 or + later to use the --diagram option correctly. Dot is available from + (()). + +: --exclude, -x ((|pattern|)) + do not process files or directories matching pattern. Files given + explicitly on the command line will never be excluded. + +: --extension, -E ((|new|))=((|old|)) + treat files ending with .new as if they ended with .old. Using '-E cgi=rb' + will cause xxx.cgi to be parsed as a Ruby file + +: --fileboxes, -F + classes are put in boxes which represents files, where these classes + reside. Classes shared between more than one file are shown with list of + files that sharing them. Silently discarded if --diagram is not given + Experimental. + +: --fmt, -f ((|formatname|)) + set the output formatter (see below). + +: --help, -h + print usage. + +: --help-output, -O + explain the various output options. + +: --image-format, -I ((|(('gif|png|jpg|jpeg'))|)) + sets output image format for diagrams. Can be png, gif, jpeg, jpg. If this + option is omitted, png is used. Requires --diagram. + +: --include, -i ((|dir[,dir...]|)) + set (or add to) the list of directories to be searched when satisfying + ((':include:')) requests. Can be used more than once. + +: --inline-source, -S + show method source code inline, rather than via a popup link. + +: --line-numbers, -N + include line numbers in the source code + +: --main, -m ((|name|)) + ((|name|)) will be the initial page displayed. + +: --merge, -M + when creating ri output, merge processed classes into previously + documented classes of the name name. + +: --one-file, -1 + put all the output into a single file. + +: --op, -o ((|dir|)) + set the output directory. + +: --opname, -n ((|name|)) + set the ((|name|)) of the output. Has no effect for HTML. + +: --promiscuous, -p + When documenting a file that contains a module or class also defined in + other files, show all stuff for that module/class in each files page. By + default, only show stuff defined in that particular file. + +: --quiet, -q + don't show progress as we parse. + +: --ri, -r + generate output for use by 'ri.' The files are stored in the '.rdoc' + directory under your home directory unless overridden by a subsequent --op + parameter, so no special privileges are needed. + +: --ri-site, -R + generate output for use by 'ri.' The files are stored in a site-wide + directory, making them accessible to others, so special privileges are + needed. + +: --ri-system, -Y + generate output for use by 'ri.' The files are stored in a system-level + directory, making them accessible to others, so special privileges are + needed. This option is intended to be used during Ruby installations. + +: --show-hash, -H + a name of the form #name in a comment is a possible hyperlink to an + instance method name. When displayed, the '#' is removed unless this + option is specified. + +: --style, -s ((|stylesheet-url|)) + specifies the URL of a separate stylesheet. + +: --tab-width, -w ((|n|)) + set the width of tab characters (default 8). + +: --template, -T ((|template-name|)) + set the template used when generating output. + +: --title, -t ((|text|)) + set ((|text|)) as the title for the output. + +: --version, -v + display RDoc's version. + +: --webcvs, -W ((|url|)) + specify a URL for linking to a web frontend to CVS. If the URL contains a + '%s', the name of the current file will be substituted; if the URL doesn't + contain a '%s', the filename will be appended to it. + +=end --- ruby1.9.2-1.9.2.z1.orig/debian/NEWS +++ ruby1.9.2-1.9.2.z1/debian/NEWS @@ -0,0 +1,66 @@ +ruby1.9 (1.9.1.0-1) experimental; urgency=low + + $LOAD_PATH is changed in Ruby 1.9.1-p0 as the following: + + ["/usr/local/lib/site_ruby/1.9.1", + "/usr/local/lib/site_ruby/1.9.1/i486-linux", + "/usr/local/lib/site_ruby", + "/usr/lib/ruby1.9/vendor_ruby/1.9.1", + "/usr/lib/ruby1.9/vendor_ruby/1.9.1/i486-linux", + "/usr/lib/ruby1.9/vendor_ruby", + "/usr/lib/ruby1.9/1.9.1", + "/usr/lib/ruby1.9/1.9.1/i486-linux", + "."] + + This changes was introduced by the upstream author. Ruby 1.9.1 may be + incompatible with older version of Ruby. So we reject old "i386-linux" + directory from $LOAD_PATH. + + If you have libraries in old $LOAD_PATH, please rebuild it with this version + of ruby1.9-dev package. + + -- akira yamada Tue, 03 Feb 2009 14:03:04 +0900 + +ruby1.9 (1.9.0.0-1) unstable; urgency=low + + $LOAD_PATH is changed in Ruby 1.9.0-0 as the following: + + ["/usr/local/lib/site_ruby/1.9.0", + "/usr/local/lib/site_ruby/1.9.0/i486-linux", + "/usr/local/lib/site_ruby/1.9/i386-linux", + "/usr/local/lib/site_ruby", + "/usr/lib/ruby/vendor_ruby/1.9.0", + "/usr/lib/ruby/vendor_ruby/1.9.0/i486-linux", + "/usr/lib/ruby/vendor_ruby", + "/usr/lib/ruby/1.9.0", + "/usr/lib/ruby/1.9.0/i486-linux", + "/usr/lib/ruby/1.9/i386-linux", + "."] + + This changes was introduced because Ruby 1.9.1 (or later version) may be + incompatible with this version of Ruby. If you have libraries in old + $LOAD_PATH, please rebuild it with this version of ruby1.9-dev package. + + -- akira yamada Wed, 26 Dec 2007 10:34:48 +0900 + +ruby1.9 (1.9.0+20050623-2) unstable; urgency=high + + On ix86 architecutre, $LOAD_PATH is changed as follows: + + /usr/local/lib/site_ruby/1.9 + /usr/local/lib/site_ruby/1.9/i486-linux + /usr/local/lib/site_ruby + /usr/lib/ruby/1.9 + /usr/lib/ruby/1.9/i486-linux + . + + This change is brought to follow the change of dpkg 1.13. It changed + architecture name to "i486-linux-gnu" from "i386-linux". + + If you locally build extension libraries, please rebuild it with this + version of ruby1.9-dev package. + + NOTE: In this version, ruby1.9 temporally searches files in + /usr/local/lib/site_ruby/1.9/i386-linux and /usr/lib/ruby/1.9/i386-linux. + + -- akira yamada Wed, 29 Jun 2005 23:50:58 +0900 --- ruby1.9.2-1.9.2.z1.orig/debian/libruby1.9.2.postinst.in +++ ruby1.9.2-1.9.2.z1/debian/libruby1.9.2.postinst.in @@ -0,0 +1,50 @@ +#! /bin/sh +# postinst script for ruby +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see /usr/share/doc/packaging-manual/ +# +# quoting from the policy: +# Any necessary prompting should almost always be confined to the +# post-installation script, and should be protected with a conditional +# so that unnecessary prompting doesn't happen if a package's +# installation fails and the `postinst' is called with `abort-upgrade', +# `abort-remove' or `abort-deconfigure'. + +case "$1" in + configure) + if [ -w /usr/local/lib -a ! -e /usr/local/lib/site_ruby/@@verdir@@ ] + then + mkdir -p /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true + chown root:staff /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true + chmod 2775 /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 --- ruby1.9.2-1.9.2.z1.orig/debian/README.source +++ ruby1.9.2-1.9.2.z1/debian/README.source @@ -0,0 +1,2 @@ +This package uses dpatch. See /usr/share/doc/dpatch/README.source.gz +It also uses cdbs. --- ruby1.9.2-1.9.2.z1.orig/debian/libruby1.9.2.prerm.in +++ ruby1.9.2-1.9.2.z1/debian/libruby1.9.2.prerm.in @@ -0,0 +1,38 @@ +#! /bin/sh +# postrm script for ruby +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' overwrit>r> +# for details, see /usr/share/doc/packaging-manual/ + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + if [ -w /usr/local/lib -a -e /usr/local/lib/site_ruby/@@verdir@@ ] + then + rmdir /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true + rmdir /usr/local/lib/site_ruby/@@verdir@@ 2>/dev/null || true + rmdir /usr/local/lib/site_ruby 2>/dev/null || true + fi + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 0 + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/rules +++ ruby1.9.2-1.9.2.z1/debian/rules @@ -0,0 +1,353 @@ +#!/usr/bin/make -f + +ruby_ver = 1.9.2 +ruby_ver_major = 1.9 +ruby_ver_dir = $(ruby_ver) +ruby_libpkgsfx = $(ruby_ver) +tcltk_ver = 8.4 + +arch_name = $(subst linux-gnu,linux-,$(patsubst %linux-gnu,%linux,$(DEB_HOST_GNU_TYPE))) +ifeq (i686-linux-lp,$(arch_name)) + arch_name = i686-linux +endif + +ruby_name = ruby$(ruby_ver) +ruby_libbase = usr/lib/ruby +ruby_libdir = $(ruby_libbase)/$(ruby_ver_dir) +ruby_archdir = $(ruby_libbase)/$(ruby_ver_dir)/$(arch_name) +bin_dir = usr/bin +man_dir = usr/share/man/man1 + +el_dir = usr/share/emacs/site-lisp/ruby$(ruby_ver)-elisp +el_etc = etc/emacs/site-start.d + +examples_dir = $(CURDIR)/debian/ruby$(ruby_ver)-examples/usr/share/doc/ruby$(ruby_ver)-examples/examples + +insns_cache_dir = debian/generated-incs + +#deb_ver = $(shell dpkg-parsechangelog | awk '/^Version:/{print $2}') + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/makefile.mk +include /usr/share/cdbs/1/class/autotools.mk +include /usr/share/cdbs/1/rules/patchsys-quilt.mk + + +DEB_AUTO_UPDATE_AUTOCONF = YES + +CFLAGS := -fno-strict-aliasing -g +CXXFLAGS := -fno-strict-aliasing -g +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -g -O0 +else + CFLAGS += -g -O2 +endif +ifneq (,$(findstring $(DEB_HOST_GNU_CPU),ia64)) + CFLAGS := $(patsubst -O1,,$(CFLAGS)) + CFLAGS := $(patsubst -O2,,$(CFLAGS)) + CFLAGS := $(patsubst -O3,,$(CFLAGS)) + CFLAGS += -O0 + CXXFLAGS := $(patsubst -O1,,$(CFLAGS)) + CXXFLAGS := $(patsubst -O2,,$(CFLAGS)) + CXXFLAGS := $(patsubst -O3,,$(CFLAGS)) + CXXFLAGS += -O0 +endif + +ifeq ($(DEB_HOST_GNU_CPU),i386) + DEB_CONFIGURE_USER_FLAGS += --enable-frame-address +endif +ifneq (,$(filter $(DEB_HOST_GNU_CPU),i486 i586 i686)) + DEB_CONFIGURE_USER_FLAGS += --enable-frame-address +endif +DEB_CONFIGURE_USER_FLAGS += --enable-pthread +DEB_CONFIGURE_USER_FLAGS += --enable-shared +DEB_CONFIGURE_USER_FLAGS += --disable-rpath +DEB_CONFIGURE_USER_FLAGS += --disable-install-doc +DEB_CONFIGURE_USER_FLAGS += --with-vendordir='/$(ruby_libbase)/vendor_ruby' +DEB_CONFIGURE_USER_FLAGS += --with-sitedir='/usr/local/lib/site_ruby' +DEB_CONFIGURE_USER_FLAGS += --program-suffix=1.9.2 +# the following are ignored by ./configure, but used by some extconf.rb scripts +DEB_CONFIGURE_USER_FLAGS += --enable-ipv6 +DEB_CONFIGURE_USER_FLAGS += --with-lookup-order-hack=INET +DEB_CONFIGURE_USER_FLAGS += --with-dbm-type=gdbm_compat +DEB_CONFIGURE_USER_FLAGS += --with-tklib=tk$(tcltk_ver) +DEB_CONFIGURE_USER_FLAGS += --with-tcllib=tcl$(tcltk_ver) +DEB_CONFIGURE_USER_FLAGS += --with-tcl-include=/usr/include/tcl$(tcltk_ver) +DEB_CONFIGURE_USER_FLAGS += --with-bundled-sha1 +DEB_CONFIGURE_USER_FLAGS += --with-bundled-md5 +DEB_CONFIGURE_USER_FLAGS += --with-bundled-rmd160 + +DEB_MAKE_BUILD_TARGET = all + +DEB_INSTALL_DIRS_ruby$(ruby_ver)-elisp += $(el_dir) +DEB_INSTALL_DIRS_ruby$(ruby_ver)-elisp += $(el_etc) +DEB_INSTALL_DOCS_ruby$(ruby_ver)-elisp += $(DEB_SRCDIR)/misc/README + +DEB_INSTALL_DIRS_ri$(ruby_ver) += $(bin_dir) +DEB_INSTALL_DIRS_ri$(ruby_ver) += $(man_dir) +DEB_INSTALL_MANPAGES_ri$(ruby_ver) += debian/manpages/ri$(ruby_ver).1 + +DEB_INSTALL_DIRS_rdoc$(ruby_ver) += $(bin_dir) +DEB_INSTALL_DIRS_rdoc$(ruby_ver) += $(man_dir) +DEB_INSTALL_DIRS_rdoc$(ruby_ver) += $(ruby_libdir) +DEB_INSTALL_MANPAGES_rdoc$(ruby_ver) += debian/manpages/rdoc$(ruby_ver).1 + +DEB_INSTALL_DIRS_irb$(ruby_ver) += $(bin_dir) +DEB_INSTALL_DIRS_irb$(ruby_ver) += $(man_dir) +DEB_INSTALL_DIRS_irb$(ruby_ver) += $(ruby_libdir) +DEB_INSTALL_DOCS_irb$(ruby_ver) += $(DEB_SRCDIR)/doc/irb/* +DEB_INSTALL_MANPAGES_irb$(ruby_ver) += debian/manpages/irb$(ruby_ver).1 + +DEB_INSTALL_DOCS_libgdbm-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/gdbm/README* + +DEB_INSTALL_DOCS_libreadline-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/readline/README* + +DEB_INSTALL_DOCS_libtcltk-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/tk/README* +DEB_INSTALL_DOCS_libtcltk-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/tk/MANUAL* + +DEB_INSTALL_DIRS_ruby$(ruby_ver) += $(bin_dir) +DEB_INSTALL_DIRS_ruby$(ruby_ver) += $(man_dir) +DEB_INSTALL_DOCS_ruby$(ruby_ver) += +DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/LEGAL +DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/README +DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/README.ja +DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/ToDo +DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/doc/NEWS-1.8.7 +DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/testrb$(ruby_ver).1 +DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/erb$(ruby_ver).1 +DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/rake$(ruby_ver).1 + +DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/lib/README +DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/doc/NEWS-1.8.7 +DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/doc/*.rd* + + +DEB_INSTALL_DOCS_ruby$(ruby_ver)-dev += $(DEB_SRCDIR)/README.EXT* + +DEB_COMPRESS_EXCLUDE = .rb .pl .py .scm .awk .dat +DEB_SHLIBDEPS_INCLUDE = $(CURDIR)/debian/libruby$(ruby_libpkgsfx)/usr/lib +DEB_DH_MAKESHLIBS_ARGS_libruby$(ruby_libpkgsfx) = -V + +#pre-build:: + #(find $(insns_cache_dir) -type f -print; \ + #echo configure; \ + #echo parse.c; \ + #) | \ + #while read f; \ + #do \ + #bf=`basename $$f`; \ + #if [ ! -e $$bf.upstream-orig ] && [ -e $$bf ]; then \ + #cp -p $$bf $$bf.upstream-orig; \ + #fi; \ + #if [ "$$f" != "$$bf" ]; then \ + #cp -p $$f $$bf; \ + #fi; \ + #done + #echo -n "uname -a: " + #uname -a + #echo "/proc/cpuinfo: ----------" + #-cat /proc/cpuinfo + #echo "-------------------------" + +common-post-build-arch:: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) +# Do not run the test suite on hppa, since hppa currently has strange +# signal semantics that cause the test suite to fail. Could be +# re-enabled when hppa switches to NPTL for threads. +ifneq ($(DEB_HOST_GNU_TYPE),hppa-linux-gnu) +# On FreeBSD, do not consider test suite failures as fatal +ifeq ($(DEB_HOST_GNU_SYSTEM),kfreebsd-gnu) + -make OPTS=-v test +else + make OPTS=-v test +endif + -make test-all +endif +endif + +binary-install/libdbm-ruby$(ruby_ver) \ +binary-install/libgdbm-ruby$(ruby_ver) \ +binary-install/libreadline-ruby$(ruby_ver) \ +binary-install/libopenssl-ruby$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) \ + $(ruby_archdir)/$(patsubst lib%-ruby$(ruby_ver),%,$(cdbs_curpkg)).so + sh $(CURDIR)/debian/extfixup_rubylibs.sh $(ruby_libdir) $(cdbs_curpkg) \ + $(DEB_SRCDIR)/ext/$(patsubst lib%-ruby$(ruby_ver),%,$(cdbs_curpkg)) + sh $(CURDIR)/debian/extfixup_examples.sh $(cdbs_curpkg) \ + $(DEB_SRCDIR)/ext/$(patsubst lib%-ruby$(ruby_ver),%,$(cdbs_curpkg)) +binary-install/libopenssl-ruby$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) \ + $(ruby_libdir)/drb/ssl.rb \ + $(ruby_libdir)/net/https.rb \ + $(ruby_libdir)/webrick/ssl.rb + +binary-install/libtcltk-ruby$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) \ + $(ruby_archdir)/tcltklib.so \ + $(ruby_archdir)/tkutil.so + sh $(CURDIR)/debian/extfixup_rubylibs.sh $(ruby_libdir) $(cdbs_curpkg) \ + $(DEB_SRCDIR)/ext/tk + + install -d \ + $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples + (cd $(DEB_SRCDIR)/ext/tk/sample && \ + tar cf - .) | \ + (cd $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples && tar xf -) + mv $(CURDIR)/debian/tmp/$(ruby_libdir)/tkextlib/SUPPORT_STATUS \ + $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/ + install \ + $(DEB_SRCDIR)/ext/tk/lib/README \ + $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.lib + install \ + $(DEB_SRCDIR)/ext/tk/lib/tkextlib/tcllib/README \ + $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.tcllib + install \ + $(DEB_SRCDIR)/ext/tk/lib/tkextlib/tkimg/README \ + $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.tkimg + +binary-install/libruby$(ruby_libpkgsfx):: $(patsubst %,binary-install/%,$(filter-out libruby$(ruby_libpkgsfx),$(DEB_PACKAGES))) + install -d $(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_archdir) + for s in $(CURDIR)/debian/$(cdbs_curpkg).*.in; do \ + sed -e 's/@@arch@@/$(arch_name)/g' \ + -e 's/@@verdir@@/$(ruby_ver_dir)/g' \ + < $$s > `expr $$s : '\(.*\)\.in$$'`; \ + done + + (cd $(CURDIR)/debian/tmp/usr/lib && \ + for f in libruby-$(ruby_ver).so.$(ruby_ver) libruby-$(ruby_ver).so.$(ruby_ver_major); do \ + echo usr/lib/$$f; \ + done) | xargs dh_movefiles -p$(cdbs_curpkg) + dh_movefiles -p$(cdbs_curpkg) $(ruby_libdir) + + cd $(DEB_SRCDIR)/ext && \ + for dir in \ + bigdecimal continuation curses digest dl etc \ + fcntl iconv io json nkf pty racc ripper sdbm socket \ + stringio strscan syck syslog zlib \ + ; \ + do \ + install -d "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir"; \ + find $$dir \ + -name '*README*' -or -name '*.html*' -or \ + -name '*.txt*' -or -name '*.rd*' | \ + while read fname; \ + do \ + cp "$$fname" \ + "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir"; \ + done; \ + rmdir "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir" 2>/dev/null || :; \ + done + + rm -rf $(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_libdir)/*ubygems* + +binary-install/ruby$(ruby_ver)-dev:: + dh_movefiles -p$(cdbs_curpkg) \ + usr/lib/libruby-$(ruby_ver).so \ + usr/lib/libruby-$(ruby_ver)-static.a \ + $(ruby_libdir)/mkmf.rb + (cd $(CURDIR)/debian/tmp && \ + find usr/include/ruby-$(ruby_ver) -name '*.h' -type f) | \ + xargs dh_movefiles -p$(cdbs_curpkg) + +binary-install/ruby$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) \ + usr/bin/ruby1.9.2 \ + usr/bin/erb1.9.2 \ + usr/bin/testrb1.9.2 \ + usr/bin/rake1.9.2 \ + usr/share/man/man1/ruby1.9.2.1 + +binary-post-install/ruby$(ruby_ver)-elisp:: + install -m444 $(DEB_SRCDIR)/misc/*.el \ + $(CURDIR)/debian/$(cdbs_curpkg)/$(el_dir) + +binary-install/ri$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) $(bin_dir)/ri1.9.2 + +binary-post-install/ri$(ruby_ver):: + $(DEB_MAKE_INVOKE) install-doc DESTDIR=$(CURDIR)/debian/$(cdbs_curpkg) + +binary-install/rdoc$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) \ + $(bin_dir)/rdoc1.9.2 \ + $(ruby_libdir)/rdoc + +binary-install/irb$(ruby_ver):: + dh_movefiles -p$(cdbs_curpkg) $(bin_dir)/irb1.9.2 \ + $(ruby_libdir)/irb.rb $(ruby_libdir)/irb + +binary-post-install/ruby$(ruby_ver)-examples:: + install -d $(examples_dir)/bigdecimal + cp -a $(DEB_SRCDIR)/ext/bigdecimal/sample/* $(examples_dir)/bigdecimal + install -d $(examples_dir)/curses + cd $(DEB_SRCDIR)/ext/curses && \ + cp hello.rb mouse.rb rain.rb view.rb view2.rb \ + $(examples_dir)/curses +# install -d $(examples_dir)/digest +# install -d $(examples_dir)/dl +# install -d $(examples_dir)/enumerator +# install -d $(examples_dir)/etc +# install -d $(examples_dir)/fcntl +# install -d $(examples_dir)/iconv +# install -d $(examples_dir)/io +# install -d $(examples_dir)/nkf + install -d $(examples_dir)/pty + cd $(DEB_SRCDIR)/sample/pty && \ + cp expect_sample.rb script.rb shl.rb \ + $(examples_dir)/pty +# install -d $(examples_dir)/racc + install -d $(examples_dir)/ripper + cd $(DEB_SRCDIR)/ext/ripper && \ + cp tools/* $(examples_dir)/ripper +# install -d $(examples_dir)/sdbm +# install -d $(examples_dir)/socket +# install -d $(examples_dir)/stringio +# install -d $(examples_dir)/strscan +# install -d $(examples_dir)/syck +# install -d $(examples_dir)/syslog +# install -d $(examples_dir)/zlib + + (cd $(DEB_SRCDIR)/sample && tar cf - .) | \ + (cd $(examples_dir) && tar xf -) + cd $(examples_dir) && rm -rf openssl + find $(examples_dir) -type f -name '*.rb' -perm /111 -exec chmod a-x {} \+ + +$(patsubst %,binary-post-install/%,$(DEB_PACKAGES)):: + bash $(CURDIR)/debian/fixshebang.sh ruby$(ruby_ver) \ + '$(CURDIR)/debian/$(cdbs_curpkg)/$(bin_dir)' + bash $(CURDIR)/debian/fixshebang.sh ruby$(ruby_ver) \ + '$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples' + sh $(CURDIR)/debian/rmshebang.sh \ + '$(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_libdir)' + +clean:: + rm -rf \ + .installed.list \ + .ext \ + prelude.c \ + debian/libruby$(ruby_libpkgsfx).postinst \ + debian/libruby$(ruby_libpkgsfx).prerm \ + debian/libruby$(ruby_libpkgsfx).postrm + (find $(insns_cache_dir) -type f -print; \ + echo configure; \ + echo parse.c; \ + ) | \ + while read f; \ + do \ + bf=`basename $$f`; \ + if [ -e $$bf.upstream-orig ]; then \ + mv -f $$bf.upstream-orig $$bf; \ + fi; \ + done + echo -n "uname -a: " + + if [ -f $(DEB_SRCDIR)/config.guess.cdbs-orig ]; \ + then \ + mv $(DEB_SRCDIR)/config.guess.cdbs-orig \ + $(DEB_SRCDIR)/config.guess; \ + fi + if [ -f $(DEB_SRCDIR)/config.sub.cdbs-orig ]; \ + then \ + mv $(DEB_SRCDIR)/config.sub.cdbs-orig \ + $(DEB_SRCDIR)/config.sub; \ + fi --- ruby1.9.2-1.9.2.z1.orig/debian/control +++ ruby1.9.2-1.9.2.z1/debian/control @@ -0,0 +1,172 @@ +Source: ruby1.9.2 +Section: ruby +Priority: optional +Maintainer: akira yamada +Uploaders: Daigo Moriwaki , Lucas Nussbaum +Build-Depends: debhelper (>= 5), cdbs, dpatch, patch, autoconf, m4, bison, binutils (>= 2.14.90.0.7), libgdbm-dev, libncurses5-dev, libreadline5-dev, tcl8.4-dev, tk8.4-dev, zlib1g-dev, libssl-dev (>= 0.9.6b), procps, file, quilt +Standards-Version: 3.8.3 +Homepage: http://www.ruby-lang.org/ +Vcs-Browser: http://svn.debian.org/wsvn/pkg-ruby/ruby1.9/trunk/ +Vcs-Svn: svn://svn.debian.org/pkg-ruby/ruby1.9/trunk/ + +Package: ruby1.9.2 +Architecture: any +Depends: libruby1.9.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: ruby1.9.2-examples, rdoc1.9.2, ri1.9.2, rubygems1.9.2 +Description: Interpreter of object-oriented scripting language Ruby 1.9.2 + Ruby is the interpreted scripting language for quick and easy + object-oriented programming. It has many features to process text + files and to do system management tasks (as in perl). It is simple, + straight-forward, and extensible. + . + This package provides version 1.9.2 series of Ruby. + +Package: libruby1.9.2 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Libraries necessary to run Ruby 1.9.2 + Ruby is the interpreted scripting language for quick and easy + object-oriented programming. It has many features to process text + files and to do system management tasks (as in perl). It is simple, + straight-forward, and extensible. + . + This package includes the libruby, necessary to run Ruby 1.9. (API version + 1.9.2) + +Package: libruby1.9.2-dbg +Section: debug +Priority: extra +Architecture: any +Depends: libruby1.9.2 (= ${binary:Version}), ${misc:Depends} +Description: Debugging symbols for Ruby 1.9.2 + Contains debugging symbols for libruby1.9. + . + This package is provided primarily to provide a backtrace with names + in a debugger, this makes it somewhat easier to interpret core + dumps. Most people will not need this package. + +Package: ruby1.9.2-dev +Architecture: any +Depends: libruby1.9.2 (= ${binary:Version}), libc6-dev, ${misc:Depends} +Recommends: ruby1.9.2 (= ${binary:Version}) +Description: Header files for compiling extension modules for the Ruby 1.9.2 + Ruby is the interpreted scripting language for quick and easy + object-oriented programming. It has many features to process text + files and to do system management tasks (as in perl). It is simple, + straight-forward, and extensible. + . + This package contains the header files and the mkmf library, necessary + to make extension library for Ruby 1.9.2. + +Package: libdbm-ruby1.9.2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: DBM interface for Ruby 1.9.2 + This package provides an extension library "dbm" for Ruby 1.9.2. The + library makes Ruby programs to be able to access to a DBM file. + . + On Debian, the extension library is built with GDBM. + +Package: libgdbm-ruby1.9.2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: GDBM interface for Ruby 1.9.2 + This package provides an extension library "gdbm" for Ruby 1.9.2. The + library makes Ruby 1.9.2 programs to be able to access to a DBM file. + +Package: libreadline-ruby1.9.2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Readline interface for Ruby 1.9.2 + This package provides an extension library "readline" for Ruby 1.9.2. + The library makes Ruby programs to be able to use functions (line + editing, history, completion, etc.) of the readline library(3). + +Package: libtcltk-ruby1.9.2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Tcl/Tk interface for Ruby 1.9.2 + tcltklib is an extension library for Ruby 1.9.2. It makes Ruby 1.9.2 + programs to be able to use low level interface for the Tcl/Tk. + +Package: libopenssl-ruby1.9.2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: OpenSSL interface for Ruby 1.9.2 + This package provides OpenSSL support for Ruby 1.9.2. It includes SSL and + TLS support for the HTTP and TELNET protocols. + +Package: ruby1.9.2-examples +Architecture: all +Depends: ${misc:Depends} +Suggests: ruby1.9.2 (>= ${source:Version}) +Description: Examples for Ruby 1.9 + This package provides example programs about Ruby 1.9.2. + . + Ruby is the interpreted scripting language for quick and easy + object-oriented programming. It has many features to process text + files and to do system management tasks (as in perl). It is simple, + straight-forward, and extensible. + +Package: ruby1.9.2-elisp +Architecture: all +Depends: emacs22 | emacsen, ${misc:Depends} +Suggests: ruby1.9.2 (>= ${source:Version}), irb1.9.2 (>= ${source:Version}) +Conflicts: ruby-elisp (<< 1.8), ruby1.6-elisp, ruby1.7-elisp, ruby-beta-elisp, ruby1.8-elisp +Description: ruby-mode for Emacsen + This package provides major-mode for editing Ruby scripts and some + emacs-lisp programs for Ruby programmers. + +Package: ri1.9.2 +Priority: optional +Architecture: all +Depends: ruby1.9.2, rdoc1.9.2 (= ${source:Version}), ${misc:Depends} +Description: Ruby Interactive reference (for Ruby 1.9.2) + ri is a command line tool that displays descriptions of built-in Ruby + methods, classes, and modules. For methods, it shows you the calling + sequence and a description. For classes and modules, it shows a + synopsis along with a list of the methods the class or module + implements. + . + This package provides ri command and descriptions about Ruby 1.9.2. + +Package: rdoc1.9.2 +Section: doc +Architecture: all +Depends: ruby1.9.2 (>= ${source:Version}), irb1.9.2 (>= ${source:Version}), libruby1.9.2 (>= ${source:Version}), ${misc:Depends} +Suggests: graphviz +Description: Generate documentation from Ruby source files (for Ruby 1.9.2) + RDoc - Documentation from Ruby Source Files: + * Generates structured HTML and XML documentation from Ruby source + and C extensions. + * Automatically extracts class, module, method, and attribute + definitions. These can be annotated using inline comments. + * Analyzes method visibility. + * Handles aliasing. + * Uses non-intrusive and implicit markup in the comments. Readers of + the original source needn't know that it is marked up at all. + . + This package provides the RDoc tool which uses Ruby 1.9.2. + +Package: irb1.9.2 +Architecture: all +Depends: ruby1.9.2 (>= ${source:Version}), libreadline-ruby1.9.2 (>= ${source:Version}), ${misc:Depends} +Description: Interactive Ruby (for Ruby 1.9.2) + The irb is acronym for Interactive RuBy. It evaluates Ruby expression from + the terminal. + . + This package provides the irb which uses Ruby 1.9.2. + +Package: ruby1.9.2-full +Architecture: all +Depends: ruby1.9.2 (>= ${source:Version}), libruby1.9.2-dbg (>= ${source:Version}), ruby1.9.2-dev (>= ${source:Version}), libdbm-ruby1.9.2 (>= ${source:Version}), libgdbm-ruby1.9.2 (>= ${source:Version}), libreadline-ruby1.9.2 (>= ${source:Version}), libopenssl-ruby1.9.2 (>= ${source:Version}), ruby1.9.2-examples (>= ${source:Version}), ri1.9.2 (>= ${source:Version}), rdoc1.9.2 (>= ${source:Version}), irb1.9.2 (>= ${source:Version}), ${misc:Depends} +Recommends: libtcltk-ruby1.9.2 (>= ${source:Version}) +Suggests: ruby1.9.2-elisp +Description: Ruby 1.9.2 full installation + For many good reasons, the Ruby programming language is split in many + small different packages. Installing this package will make sure you have + all the packages that add up to a full Ruby installation, with the exception + of the Tcl/Tk bindings for Ruby, which are only recommended. + . + This package installs the dependencies for Ruby 1.9.2. --- ruby1.9.2-1.9.2.z1.orig/debian/ri1.9.2.postinst +++ ruby1.9.2-1.9.2.z1/debian/ri1.9.2.postinst @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +update-alternatives --install /usr/bin/ri ri /usr/bin/ri1.9.2 400 \ +--slave /usr/share/man/man1/ri.1.gz ri.1.gz /usr/share/man/man1/ri1.9.2.1.gz \ + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/rdoc1.9.2.prerm +++ ruby1.9.2-1.9.2.z1/debian/rdoc1.9.2.prerm @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove rdoc /usr/bin/rdoc1.9.2 +fi + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/ruby1.9.2-elisp.emacsen-install +++ ruby1.9.2-1.9.2.z1/debian/ruby1.9.2-elisp.emacsen-install @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/ruby-beta-elisp + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=ruby1.9.2-elisp + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +FLAVORTEST=`echo $FLAVOR | cut -c-6` +if [ ${FLAVORTEST} = xemacs ] ; then + SITEFLAG="-no-site-file" +else + SITEFLAG="--no-site-file" +fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +#if test -x /usr/sbin/install-info-altdir; then +# echo install/${PACKAGE}: install Info links for ${FLAVOR} +# install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +#fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 --- ruby1.9.2-1.9.2.z1.orig/debian/compat +++ ruby1.9.2-1.9.2.z1/debian/compat @@ -0,0 +1 @@ +5 --- ruby1.9.2-1.9.2.z1.orig/debian/irb1.9.2.postinst +++ ruby1.9.2-1.9.2.z1/debian/irb1.9.2.postinst @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +update-alternatives --install /usr/bin/irb irb /usr/bin/irb1.9.2 400 \ +--slave /usr/share/man/man1/irb.1.gz irb.1.gz /usr/share/man/man1/irb1.9.2.1.gz \ + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/ri1.9.2.prerm +++ ruby1.9.2-1.9.2.z1/debian/ri1.9.2.prerm @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove ri /usr/bin/ri1.9.2 +fi + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/copyright +++ ruby1.9.2-1.9.2.z1/debian/copyright @@ -0,0 +1,81 @@ +This package was debianized by akira yamada on +Sun, 13 Apr 2003 13:04:13 +0900. + +It was downloaded from + +Upstream Author: Yukihiro Matsumoto + +Copyright: + +Ruby's License: + +Ruby is copyrighted free software by Yukihiro Matsumoto . +You can redistribute it and/or modify it under either the terms of the GPL +(see the file GPL), or the conditions below: + + 1. You may make and give away verbatim copies of the source form of the + software without restriction, provided that you duplicate all of the + original copyright notices and associated disclaimers. + + 2. You may modify your copy of the software in any way, provided that + you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise + make them Freely Available, such as by posting said + modifications to Usenet or an equivalent medium, or by allowing + the author to include your modifications in the software. + + b) use the modified software only within your corporation or + organization. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 3. You may distribute the software in object code or binary form, + provided that you do at least ONE of the following: + + a) distribute the binaries and library files of the software, + together with instructions (in the manual page or equivalent) + on where to get the original distribution. + + b) accompany the distribution with the machine-readable source of + the software. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 4. You may modify and include the part of the software into any other + software (possibly commercial). But some files in the distribution + are not written by the author, so that they are not under these terms. + + For the list of those files and their copying conditions, see the + file LEGAL. + + 5. The scripts and library files supplied as input to or produced as + output from the software do not automatically fall under the + copyright of the software, but belong to whomever generated them, + and may be sold commercially, and may be aggregated with this + software. + + 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. + + +GNU General Public License: + +On Debian systems, the complete text of the GNU General Public License can +be found in `/usr/share/common-licenses/GPL'. + + +Note for using libopenssl-ruby1.9.1 (openssl.so): + +Ruby is distributed under dual-license which is "Ruby's License" or GPL. +libopenssl-ruby1.9.1 (openssl.so) can link OpenSSL library with ruby1.9.1 +(libruby-1.9.1). So we cannot use openssl.so together with programs which are +under the standard unmodified GPL. --- ruby1.9.2-1.9.2.z1.orig/debian/testrb1.9.2.rd +++ ruby1.9.2-1.9.2.z1/debian/testrb1.9.2.rd @@ -0,0 +1,57 @@ +=begin + += NAME + +testrb1.9 - Automatic runnter for Test::Unit of Ruby + += SYNOPSIS + +testrb1.9 [options] [-- untouched arguments] test ... + += DESCRIPTION + +testrb1.9 loads and runs unit-tests. If test is directory name, testrb1.9 +testrb1.9 traverses the directory. + += OPTIONS + +: -r, --runner=RUNNER + + Use the given RUNNER. (t[k], c[onsole], g[tk], f[ox]) + +: -a, --add=TORUN + + Add TORUN to the list of things to run; can be a file or a directory. + +: -p, --pattern=PATTERN + + Match files to collect against PATTERN. (default pattern is + /\Atest_.*\.rb\Z/.) + +: -n, --name=NAME + + Runs tests matching NAME. (patterns may be used.) + +: -t, --testcase=TESTCASE + + Runs tests in TestCases matching TESTCASE. (patterns may be used.) + +: -v, --verbose=[LEVEL] + + Set the output level (default is verbose). (p[rogress], n[ormal], + v[erbose], s[ilent]) + +: -- + + Stop processing options so that the remaining options will be passed to + the test. + +: -h, --help + + Display help. + += AUTHOR + +This manpage was contributed by akira yamada + +=end --- ruby1.9.2-1.9.2.z1.orig/debian/rmshebang.sh +++ ruby1.9.2-1.9.2.z1/debian/rmshebang.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +target_dir=$1 +[ -d $target_dir ] || exit 0 +find "$target_dir" -name '*.rb' -type f -exec sed -i -e '1,1{ /^#!/d }' {} \+ --- ruby1.9.2-1.9.2.z1.orig/debian/ruby1.9.2.postinst +++ ruby1.9.2-1.9.2.z1/debian/ruby1.9.2.postinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.2 400 \ +--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby1.9.2.1.gz \ +--slave /usr/share/man/man1/erb.1.gz erb.1.gz /usr/share/man/man1/erb1.9.2.1.gz \ +--slave /usr/share/man/man1/rake.1.gz rake.1.gz /usr/share/man/man1/rake1.9.2.1.gz \ +--slave /usr/share/man/man1/testrb.1.gz testrb.1.gz /usr/share/man/man1/testrb1.9.2.1.gz \ +--slave /usr/bin/erb erb /usr/bin/erb1.9.2 \ +--slave /usr/bin/rake rake /usr/bin/rake1.9.2 \ +--slave /usr/bin/testrb testrb /usr/bin/testrb1.9.2 \ + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/fixshebang.sh +++ ruby1.9.2-1.9.2.z1/debian/fixshebang.sh @@ -0,0 +1,36 @@ +#!/bin/bash +ruby="$1" +target_dir="$2" + +for f in `find "$target_dir" -type f 2>/dev/null` +do + textflag=0 + filetype="`file -b $f`" + for ft in $filetype + do + if [ "${#ft}" -lt 4 ] + then + continue + fi + if [ "${ft:0:4}" == "text" ] + then + textflag=1 + break + fi + done + + if [ "$textflag" -eq 0 ] + then + continue + fi + + cp -pf $f $f.tmp + sed -e '1,1s,^#![ ]*\([^ ]*\)/\(ruby\|env ruby\)$,#!/usr/bin/'$ruby',' \ + -e '1,1s,^#![ ]*\([^ ]*\)/\(wish\|perl\)$,#!/usr/bin/\2,' < $f > $f.tmp + if ! cmp $f $f.tmp >/dev/null + then + mv -f $f.tmp $f + else + rm -f $f.tmp + fi +done --- ruby1.9.2-1.9.2.z1.orig/debian/extfixup_examples.sh +++ ruby1.9.2-1.9.2.z1/debian/extfixup_examples.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +pkg_name="$1" +ext_dir="$2" + +for f in `find "$ext_dir" -name '*.rb' -type f -not -name 'extconf.rb' -not -path ' */lib/*'` +do + dh_installexamples -p"$pkg_name" $f +done + --- ruby1.9.2-1.9.2.z1.orig/debian/irb1.9.2.prerm +++ ruby1.9.2-1.9.2.z1/debian/irb1.9.2.prerm @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove irb /usr/bin/irb1.9.2 +fi + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/changelog +++ ruby1.9.2-1.9.2.z1/debian/changelog @@ -0,0 +1,685 @@ +ruby1.9.2 (1.9.2.z1-1ppa1~lucid) lucid; urgency=medium + + * Missed out the 'quilt' dependency + + -- Pratik Sinha Fri, 27 Aug 2010 18:34:34 +0700 + +ruby1.9.2 (1.9.2.z0-1ppa1~lucid) lucid; urgency=low + + * Adding the final ruby 1.9.2 release, the weird version number is because I used rc1 and preview3 in the previous release version numbers, and now a plain "1.9.2" will be a lower version than those + + -- Pratik Sinha Sat, 21 Aug 2010 10:37:53 +0700 + +ruby1.9.2 (1.9.2.rc1-1ppa1~lucid) lucid; urgency=low + + * Ruby 1.9.2 rc1 added + + -- Pratik Sinha Tue, 03 Aug 2010 14:15:34 +0700 + +ruby1.9.2 (1.9.2.preview3-2ppa1~lucid) lucid; urgency=medium + + * Fixed typos in the post install script + + -- Pratik Sinha Mon, 28 Jun 2010 19:12:41 +0700 + +ruby1.9.2 (1.9.2.preview3-1ppa1~lucid) lucid; urgency=low + + * Removed all symlinks and replaced it with the update-alternative system + * Removed ruby as a dependency + + -- Pratik Sinha Mon, 28 Jun 2010 12:23:56 +0700 + +ruby1.9.2 (1.9.2-preview3ppa1~lucid1) lucid; urgency=medium + + * Adding ruby all over again, also fixed a bug in the rules file regarding the path + * Previously ported the debian directory to ruby1.9.2 along with the patches. Some patches are not applicable anymore and are commented in the dpatch list 00list + + -- Pratik Sinha Wed, 09 Jun 2010 13:13:25 +0700 + +ruby1.9.1 (1.9.1.378-1ppa3~lucid1) lucid; urgency=low + + * Backported a change to fix a failing test (r27534) + + -- Pratik Sinha Sun, 06 Jun 2010 16:22:43 +0700 + +ruby1.9.1 (1.9.1.378-1ppa2~lucid1) lucid; urgency=low + + * Corrected a typo, ri instead of ril + + -- Pratik Sinha Sun, 06 Jun 2010 09:44:51 +0700 + +ruby1.9.1 (1.9.1.378-1ppa1~lucid1) lucid; urgency=low + + * Added symlinks for ruby irb rdoc ril rake testrb erb + + -- Pratik Sinha Sun, 06 Jun 2010 07:40:20 +0700 + +ruby1.9.1 (1.9.1.378-1) unstable; urgency=medium + + * New upstream release + * The upstream has fixed a vulnerability in WEBrick, a part of Ruby's + standard library. WEBrick lets attackers to inject malicious escape + sequences to its logs, making it possible for dangerous control characters + to be executed on a victim's terminal emulator. (Closes: #564646) + + -- Daigo Moriwaki Mon, 11 Jan 2010 09:46:28 +0900 + +ruby1.9.1 (1.9.1.376-1) unstable; urgency=low + + * New upstream release + + -- Daigo Moriwaki Mon, 07 Dec 2009 22:34:25 +0900 + +ruby1.9.1 (1.9.1.375-1) unstable; urgency=low + + * Interim upstream 1.9.1-p375 (26021) + * removed debian/patches/090908_regexp_unicode_class.dpatch: it is included + upstream release. + + -- akira yamada Mon, 07 Dec 2009 08:24:55 +0900 + +ruby1.9.1 (1.9.1.339-1) unstable; urgency=low + + * Interim upstream 1.9.1-p339 (r25816) + * Updated debian/generated-incs/*. + * Updated patches + - 909_update_lib_README + * Updated debian/copyright. (s/ruby1\.9/ruby1.9.1/g) + * Added debian/libopenssl-ruby1.9.1.lintian-overrides. + + -- akira yamada Wed, 18 Nov 2009 09:51:36 +0900 + +ruby1.9.1 (1.9.1.243-2) unstable; urgency=low + + [ Lucas Nussbaum ] + * Removed Fumitoshi UKAI from Uploaders. Thanks a + lot for the past help! + * Removed obsolete Build-Conflicts: on gcc-3.3 (<< 1:3.3.2-0pre1) + * Add ${misc:Depends} to Depends of all binary packages. + Avoids debhelper-but-no-misc-depends lintian warning. + * Add build-dependency on debhelper >= 5, since that's the compatibility + level with request in debian/compat. + Avoids package-lacks-versioned-build-depends-on-debhelper lintian + warning. + * Fix menu file for irb1.9.1. Avoids two menu-related lintian warnings. + * Optimized debian/rmshebang.sh a bit. + * Removed outdated option from DEB_CONFIGURE_USER_FLAGS: + --with-default-kcode=none + * Remove 901_extra_search_path: no longer needed. + * Use --program-suffix=1.9.1 and hack configure.in so that all the + paths except the ri path match what was done before. + * Added debian/README.source. Avoids lintian warning. + * Added a ruby1.9.1-full meta-package that depends on all the ruby 1.9.1 + binary packages. Closes: #503580. + * Ignore failures of test suite on FreeBSD. + * Bumped Standards-Version to 3.8.3. No changes needed. + * Remove executable mode on all example scripts. (fix lintian warning) + * Run all tests, not just the ones in ruby/. + + [ akira yamada ] + * Added debian/patches/090908_regexp_unicode_class.dpatch: + - \d, \s and \w are now non Unicode class. [ruby-dev:39026] + - warn duplicated characters in character class. [ruby-core:24593] + (backported from r24387 and r24544.) + + -- Lucas Nussbaum Wed, 09 Sep 2009 21:55:24 +0200 + +ruby1.9.1 (1.9.1.243-1) unstable; urgency=low + + [ Daigo Moriwaki ] + * debian/watch: corrected to follow the new versioning by the upstream such + as 1.9.1-p0.tar.gz + * Added debian/patches/090301_r22440_OCSP_basic_verify.dpatch Not properly + checking the return value of OCSP_basic_verify (Closes: #513528) + * Added debian/patches/090803_exclude_rdoc.dpatch to avoid errors to + for generating RDoc documents. + * debian/fixshebang.sh: skip non-text files, which works around hanging of + sed on scanning gif images. + * The upstream's COPYING* is no longer installed (due to Debian policy). + That informatin is included in debian/copyright. + * debian/ruby1.9.1-elisp.emacsen-{remove|startup|install}: Corrected the + package name. + + [ Lucas Nussbaum ] + * Build-Depends on procps. Closes: #510914. + * Added patch 940_test_thread_mutex_sync_shorter: makes + test_mutex_synchronize much shorter to deal with slow arches. + Closes: #514696. + * Added patch 940_hppa_disable_test_propag_signal: disable + test_should_propagate signal on hppa. + Closes: #514695. + * Checked that 1.9.1.0 fixes CVE-2008-3905. Closes: #498977. + * debian/patches cleanups. Removed obsolete patches. + * Added 940_test_file_exhaustive_fails_as_root and + 940_test_priority_fails to deal with test suite failures. + * Disable 102_skip_test_copy_stream and 104_skip_btest_io: + I couldn't reproduce the failure on x86-64. Is it arch-specific? + * common-post-build-arch:: fail if the test suites fail. + * Fix location of vendor dir in configure option. + /usr/lib[...], not usr/lib[...]. + * New upstream release: 1.9.1.243. + + 090301_r22440_OCSP_basic_verify.dpatch no longer needed (was a + backport) + + Updated debian/generated-incs/*. + * Added 090729_fix_Makefile_deps.dpatch: add dependency in common.mk + between do-install-nodoc and $(PROGRAM). + * Handle DEB_BUILD_OPTIONS="nocheck" to allow to skip the test suite. + * Move manpages to debian/manpages/ + * Started the rename from *1.9 to *1.9.1: source package and binary + packages done. + * Fix building on lpia (Fixes: #532057). + * Disable the test suite on hppa since it blocks because of strange + signal semantics. + * Bumped Standards-Version to 3.8.2. No changes needed. + * Agree with ftpmaster's overrides. + + -- Lucas Nussbaum Thu, 30 Jul 2009 01:24:03 +0200 + +ruby1.9 (1.9.1.0-1) experimental; urgency=low + + * new upstream version. + * updated debian/generated-incs/*. + * change package name to libruby1.9.1 from librub1.9-1.9. Here "1.9.1" + indicates Ruby API version. libruby1.9.1 conflicts/replaces: + libruby1.9. (No confilcts/replaces for libruby1.9-1.9 because these + packages are note relased to Debian.) It is preparations for ABI changes + in the future version of Ruby 1.9. + * adjusted 903_skip_base_ruby_check. + * updated 931_libruby_suffix. ruby runtime library is libRUBYNAME-1.9.1.so*. + * updated debian/NEWS. + + -- akira yamada Tue, 03 Feb 2009 22:23:42 +0900 + +ruby1.9 (1.9.1~rc2-1) experimental; urgency=low + + * new upstream release. + * updated debian/generated-incs/*. + * updated 202_gem_default_dir. + * change package name to libruby1.9-1.9 from librub1.9. (libruby1.9-1.9 + conflicts/replaces: libruby1.9.) It is preparations for ABI changes in + the future version of Ruby 1.9. + * added 931_libruby_suffix. It filechanges name of ruby runtime library to + libRUBYNAME-1.9.so* from libRUBYNAME.so. + + -- akira yamada Thu, 22 Jan 2009 10:08:27 +0900 + +ruby1.9 (1.9.1~rc1-1) experimental; urgency=low + + * new upstream release. + * updated 202_gem_default_dir. + * updated 201_gem_prelude and re-entered to 00list. + * removed unneeded dpatches: + - 308_r20120_rexml_DoS_fix_regression + - 920_rexml_document_transitive.dpatch + * added 203_adjust_base_of_search_path: it changes base directory of search + path to /usr/lib/ruby from /usr/lib/ruby1.9 for compatibility. ("ruby1.9" + come from ruby_install_name.) [experimental] + * debian/rules: configure with --vendor-ruby=/usr/lib/ruby/vendor_ruby for + compatibility. [experimental] + + -- akira yamada Thu, 15 Jan 2009 11:17:40 +0900 + +ruby1.9 (1.9.1~preview1-1) experimental; urgency=low + + * new upstream release. + * old "i386-linux" directory is no longer supported. + * updated debian/generated-incs/*. + * removed unneeded dpatch from 00list: + - 101_parse_rb.dpatch + - 103_array_c_r17570_to_r17756.dpatch + - 201_gem_prelude.dpatch + - 301_dns_spoofing_r18424 + - 302_r18220_webrick_DoS + - 303_r17726_syslog_safeleve4 + - 304_r17577_trace_var_safeleve4 + - 305_r18496_dl_tain + - 306_r17586_methods_called_safelevel13 + - 307_r19033_rexml_DoS + - 930_zero_tainted + * applied patches: + - 202_gem_default_dir: regenerated from 201_gem_prelude. + - 308_r20120_rexml_DoS_fix_regression: fixes regression. + + -- akira yamada Thu, 13 Nov 2008 16:06:57 +0900 + +ruby1.9 (1.9.0.2-9) unstable; urgency=high + + * fixes regression: + - 307_r19033_rexml_DoS.dpatch: fixed DoS vulnerability in REXML. + (ref: #502535) + + -- akira yamada Thu, 13 Nov 2008 13:26:36 +0900 + +ruby1.9 (1.9.0.2-8) unstable; urgency=high + + * Added patch: 930_zero_tainted.dpatch + backport of upstream r17612. Closes: #501408 (RC bug). + + -- Lucas Nussbaum Thu, 16 Oct 2008 22:15:33 +0200 + +ruby1.9 (1.9.0.2-7) unstable; urgency=low + + * debian/rules: Fixed a FTBFS on hurd-i386: failure of + cat /proc/cpuinfo no more stops the build process. + (Closes: #497737) + + -- Daigo Moriwaki Fri, 05 Sep 2008 12:07:57 +0900 + +ruby1.9 (1.9.0.2-6) unstable; urgency=low + + * Added patches under debian/patches which were backported from the + upstream and fixed multiple vulnerabilities: + - 301_dns_spoofing_r18424.dpatch: fixed DNS spoofing vulnerability + in resolv.rb. (CVE-2008-1447) + - 302_r18220_webrick_DoS.dpatch: fixed DoS vulnerability in WEBrick. + - 303_r17726_syslog_safeleve4.dpatch: syslog operations should be + protected from $SAFE level 4. + - 304_r17577_trace_var_safeleve4.dpatch: rb_f_trace_var should not + be allowed at safe level 4. + - 305_r18496_dl_tain.dpatch: dl doesn't check taintness, so it could + allow attackers to call dangerous functions. + - 306_r17586_methods_called_safelevel13.dpatch: Insecure methods may + be called at safe level 1-3. + (Closes: #494402) + - 307_r19033_rexml_DoS.dpatch: fixed DoS vulnerability in REXML. + (CVE-2008-3790) (Closes: #497610) + + -- Daigo Moriwaki Tue, 02 Sep 2008 22:11:34 -0400 + +ruby1.9 (1.9.0.2-5) unstable; urgency=low + + [ Lucas Nussbaum ] + * Because of make's dependency handling on phony targets after the addition + of the watch in 1.9.0.1-4, parse.o was rebuilt three times during the + build process. Build it only once, which should reduce the build time + significantly. + + [ Daigo Moriwaki ] + * RubyGems did not work completely due to a gem_relude mechanism . This + issue has been fixed. (Closes: #492206) + - debian/patches/201_gem_prelude.dpatch + - debian/rules + + -- Daigo Moriwaki Thu, 31 Jul 2008 00:54:00 +0900 + +ruby1.9 (1.9.0.2-4) unstable; urgency=low + + * Modified computing of arch_name to cope with armel. This was broken + because of the change for lpia. We are now using the same code as + ruby1.8's debian/rules. Closes: #490663. + * Cleaned up debian/rules to use DEB_HOST_* instead of DEB_BUILD_*. + + -- Lucas Nussbaum Sun, 13 Jul 2008 16:30:24 +0200 + +ruby1.9 (1.9.0.2-3) unstable; urgency=low + + * Updated 102_skip_test_copy_stream.dpatch to also ignore + test_copy_stream_socket. + + -- Lucas Nussbaum Sat, 12 Jul 2008 16:12:53 +0200 + +ruby1.9 (1.9.0.2-2) unstable; urgency=low + + * applied debian/patches/103_array_c_r17570_to_r17756.dpatch: + - fixed an integer overflow bug. + + -- Daigo Moriwaki Wed, 09 Jul 2008 00:06:50 +0900 + +ruby1.9 (1.9.0.2-1) unstable; urgency=high + + * New upstream release. + * debian/generated-incs/*.inc: updated. They were created directly from the + source using ruby1.8. + * Fixed vulnerability: arbitrary code execution vulnerability and so on + (Closes: #487239) + * debian/watch: supported the version numbering of the upstream. + * removed patches that the upstream has applied: + - debian/patches/800_parse_shebang_in_usascii.dpatch + - debian/patches/801_too_strict_encoding_check.dpatch + - debian/patches/802_hash_compare_by_identity.dpatch + - debian/patches/803_syntaxerror_irb_bug.dpatch + - debian/patches/804_debug.rb_is_bloken.dpatch + - debian/patches/805_webrick_file_access_vulnerability.dpatch + * removed patches since this package no longer provides rubygems. + - debian/patches/910_gem_prelude.dpatch + - debian/patches/911_default_gem_path.dpatch + - debian/patches/913_disable_update_system.dpatch + - debian/patches/917_avoid_ioseek.dpatch + - debian/patches/918_tighter_search_regex.dpatch + * Added debian/patches/101_parse_rb.dpatch: RDoc might have failed to parse. + * Added debian/patches/102_skip_test_copy_stream.dpatch: skip a test + + -- Daigo Moriwaki Sat, 21 Jun 2008 16:02:58 +0900 + +ruby1.9 (1.9.0.1-5) experimental; urgency=low + + * The gem1.9 package is removed. Use rubygems1.9 instead. + + -- Daigo Moriwaki Sun, 08 Jun 2008 22:58:14 +0900 + +ruby1.9 (1.9.0.1-4) experimental; urgency=low + + * Improved 919_common.mk_tweaks.dpatch: outputs the result of "ps" on a + regular basis, so the build doesn't timeout on slow arches like mips(el). + * Move gem1.9 to a seperate package. This is necessary because gem1.9 + requires rdoc1.9 (see + https://bugs.launchpad.net/ubuntu/+source/ruby1.9/+bug/228345 ), so there + are two solutions: + - keep gem1.9 in ruby1.9, and merge back rdoc1.9. This cause people + interested in running ruby apps (not developing ruby scripts) to install + lots of unnecessary stuff. + - move rubygems to a separate package. + + -- Lucas Nussbaum Sat, 24 May 2008 11:25:34 +0200 + +ruby1.9 (1.9.0.1-3) experimental; urgency=low + + * Add uname and /proc/cpuinfo output to the build log. + * Added 919_common.mk_tweaks.dpatch: build more + verbosely. Needed to avoid a timeout on mips(el). + * Added 904_linux_target_os.dpatch from Ubuntu. Robustifies check for + target_os. + * debian/rules: Improved substitutions in arch_name (also from Ubuntu). + + -- Lucas Nussbaum Sat, 17 May 2008 18:04:13 +0200 + +ruby1.9 (1.9.0.1-2) experimental; urgency=low + + * Build with -O2 everywhere by default. + * Upload to experimental to see how things work out. + + -- Lucas Nussbaum Wed, 07 May 2008 15:45:40 +0200 + +ruby1.9 (1.9.0.1-1) unstable; urgency=low + + [ akira yamada ] + * new upstream snapshot 1.9.0-1. + * debian/generated-incs/*: updated. + * applied some bug fix patches: + - 800_parse_shebang_in_usascii: [ruby-dev:33955] --encoding affects script + encoding + - 801_too_strict_encoding_check: [ruby-dev:33966] remove too strict + encoding check + - 802_hash_compare_by_identity: [ruby-dev:33989] Hash#compare_by_identity + breaks commutativity of Hash#== + - 803_syntaxerror_irb_bug: [ruby-dev:33991] SyntaxError should not be + considered as IRB bug + - 804_debug.rb_is_bloken: [ruby-dev:33992] debug.rb causes NoMethodError + - 805_webrick_file_access_vulnerability: fixes vulnerbility of WEBrick + which is described at + + - 900_ri_pager: updated. + + [ Lucas Nussbaum ] + * debian/control: Added myself to Uploaders:. + * debian/control: Added Homepage and Vcs-* fields. + * added 909_update_lib_README.dpatch, backported from ruby1.8. + * Improved description of ruby1.9-dev. + * No longer build using gcc-4.1 on m68k. Use the default gcc version. + (Closes: #463294) + * debian/control: bumped Standards-Version to 3.7.3. No changes needed. + * added watch file. + + [ Daigo Moriwaki ] + * debian/control: + - imporoved the description for libopenssl-ruby1.8. + - ruby1.9-dev now depends on libc6-dev. + + -- Lucas Nussbaum Fri, 07 Mar 2008 17:35:14 +0100 + +ruby1.9 (1.9.0.0-2) unstable; urgency=low + + * Added debian/patches/910_gem_prelude.dpatch: changed the default + rubygems home directory in prelude as well. (Closes: #458620) + + -- Daigo Moriwaki Wed, 02 Jan 2008 18:09:03 +0900 + +ruby1.9 (1.9.0.0-1) unstable; urgency=low + + [Akira Yamada] + * new upstream version, 1.9.0-0. (closes: #457519, #446220) + * added manpages for gem1.9 and rake1.9. + * debian/generated-incs/*.inc: updated by files in upstream tarball. + * debian/patches/801_update_sample_README.dpatch: removed. + * debian/patches/903_skip_base_ruby_check.dpatch: updated. + * debian/NEWS, debian/README.Debian: updated. + + [Daigo Moriwaki] + * supported rubygems that has been merged with the upstream. + I imported files and changes from libgems-ruby1.8_1.0.1.deb package. + - added debian/patches/911_default_gem_path.dpatch + - added debian/patches/913_disable_update_system.dpatch + - added debian/patches/918_tighter_search_regex.dpatch + - added debian/patches/917_avoid_ioseek.dpatch + - added debian/libruby1.9.postrm.in + - debian/patches/00list: applied above changes. + - debian/README.Debian: added a note for rubygems + - debian/libruby1.9.postinst.in: script to remove a cache file. + - debian/rules: applied above changes. + + -- akira yamada Wed, 26 Dec 2007 12:46:09 +0900 + +ruby1.9 (1.9.0+20071225-1) unstable; urgency=low + + * new upstream snapshot. (r14640) + * updated debian/generated-incs/* files. + + -- akira yamada Tue, 25 Dec 2007 10:49:38 +0900 + +ruby1.9 (1.9.0+20071016-1) unstable; urgency=high + + * new upstream snapshot. (r13713) + - fixed CVE-2007-5162. + - fixed illegal instructions at runtime on sparc. (closes: #366444) + Thanks to Lucas Nussbaum. + * updated debian/generated-incs/* files. + * debian/rules: fixed wrong arch_name for arm-linux-gnueabi. + (closes: #445433) Thanks to Riku Voipio. + * debian/ruby1.9-elisp.emacsen-startup: uses "\\\\'" for ignore newlines in + filenames. (closes: #446180) Thanks to Trent W. Buck. + * debian/control: added Daigo Moriwaki to uploaders and removed Akira Tagoh + from uploaders. + + -- akira yamada Thu, 18 Oct 2007 09:36:36 +0900 + +ruby1.9 (1.9.0+20070910-1) unstable; urgency=low + + * new upstream snapshot. (r13426) + * debian/rules: added -g option to CPPFLAGS and CXXFLAGS. + + -- akira yamada Tue, 11 Sep 2007 10:46:09 +0900 + +ruby1.9 (1.9.0+20070830-2) unstable; urgency=low + + * configure.in: skip host ruby check. + * debian/generated-incs/prelude.c: added. (closes: #440480) + + -- akira yamada Sun, 02 Sep 2007 09:20:54 +0900 + +ruby1.9 (1.9.0+20070830-1) unstable; urgency=low + + * new upstream snapshot. (r13318) (closes: #426134, #426267) + * updated debian/generated-incs/* files. + * added debian/patches/902_define_YAML_in_yaml_stringio.rb.dpatch. + + -- akira yamada Thu, 30 Aug 2007 13:53:44 +0900 + +ruby1.9 (1.9.0+20070606-1) unstable; urgency=low + + * new upstream snapshot. (2006-06-06) + * updated debian/generated-incs/* files. + + -- akira yamada Wed, 06 Jun 2007 11:58:24 +0900 + +ruby1.9 (1.9.0+20070526-1) unstable; urgency=low + + * new upstream snapshot. (2006-05-26) + + -- akira yamada Sat, 26 May 2007 21:02:58 +0900 + +ruby1.9 (1.9.0+20070523-1) unstable; urgency=low + + * new upstream snapshot. (2006-07-23) + * added debian/generated-incs/* files: They are are generated by "make + incs". Updating these files is needed when the source is updated. + (Closes: #425607) + + -- akira yamada Wed, 23 May 2007 13:21:02 +0900 + +ruby1.9 (1.9.0+20070521-1) unstable; urgency=low + + * new upstream snapshot. (2006-07-21) (Closes: #414856, #388344) + + -- akira yamada Mon, 21 May 2007 14:00:19 +0900 + +ruby1.9 (1.9.0+20060609-1) unstable; urgency=low + + * new upstream snapshot. (2006-06-09) + * configure with -fno-strict-aliasing (Bug#370553) + * rdoc1.9 suggests graphviz (Bug#339524) + * debian/copyright: added a note for using libopenssl-ruby1.9. (Bug#367024) + * debian/README.Debian: updated. (Closes: #344294) + * added debian/patches/802_mkconfig.dpatch + + -- akira yamada Thu, 13 Jul 2006 22:43:47 +0900 + +ruby1.9 (1.9.0+20060423-4) unstable; urgency=low + + * reverted to 1.9.0+20060423-3. + - 1.9.0+20060423-3.1 is not enough to fix the probleam and + - 1.9.0+20060423-3.1 ignores dpatch :-< + + -- akira yamada Thu, 7 Jul 2006 22:44:23 +0900 + +ruby1.9 (1.9.0+20060423-3.1) unstable; urgency=low + + * Non-maintainer upload. + * Make mkconfig.rb understand autoconf >2.59a's new way of doing + config.status; it inserts #|_!!_|# into the sed lines temporarily, then + removes them at the end. Since mkconfig.rb only parses these lines instead + of executing the entire sed script, it has to remove #|_!!_|# by itself. + This fixes FTBFS with newer autoconf. (Closes: #373953) + + -- Steinar H. Gunderson Sun, 25 Jun 2006 16:05:24 +0200 + +ruby1.9 (1.9.0+20060423-3) unstable; urgency=low + + * akira yamada + - debian/control, debian/rules: uses gcc-4.1 for m68k. (Closes: #360745) + + -- akira yamada Tue, 25 Apr 2006 23:00:39 +0900 + +ruby1.9 (1.9.0+20060423-2) unstable; urgency=medium + + * akira yamada + - debian/rules: CFLAGS=-O0 for avoiding a bug of gcc-4.0 on m68k. + (Closes: #360745) + + -- akira yamada Tue, 25 Apr 2006 12:46:34 +0900 + +ruby1.9 (1.9.0+20060423-1) unstable; urgency=low + + * akira yamada + - new upstream snapshot. (2006-04-23) + + -- akira yamada Sun, 23 Apr 2006 18:14:31 +0900 + +ruby1.9 (1.9.0+20050921-1) unstable; urgency=high + + * akira yamada + - new upstream snapshot. (2005-09-21) + - [security] JVN#62914675 CVE-2005-2337 + - preserve safe level in the environment where a method is defined. + - prohibit calling tainted method (>2) when $SAFE == 0. + - removed debian/patches/802_workaround_for_send.dpatch: + - the patch is in upstream. + - debian/control: build-depends on libreadline5-dev. (closes: #326333) + + -- akira yamada Wed, 21 Sep 2005 13:16:19 +0900 + +ruby1.9 (1.9.0+20050902-1) unstable; urgency=high + + * akira yamada + - new upstream snapshot. (2005-09-02) + - [security] preserve safe level in the environment where a method is + defined. + - added debian/patches/802_workaround_for_send.dpatch: + - workaround for changed behavior of __send__. [ruby-dev:26935] + + -- akira yamada Fri, 2 Sep 2005 15:21:10 +0900 + +ruby1.9 (1.9.0+20050727-1) unstable; urgency=low + + * akira yamada + - new upstream snapshot. (2005-07-27) + - removed debian/patches/803_runruby.rb_loadpath.dpatch: + - the patch is in upstream source. + + -- akira yamada Wed, 3 Aug 2005 19:56:18 +0900 + +ruby1.9 (1.9.0+20050623-2) unstable; urgency=high + + * akira yamada + - debian/rules: supported to build with dpkg-dev_1.13. + (ref: ) + - changed arch-name for Ruby to i486-linux from i386-linux because + DEB_BUILD_GNU_TYPE is changed to i486-linux-gnu from i386-linux. + - (urgency high) used -linux instead of -linux-gnu for paths + in debian/*.files. (ref: Bug#315566) + - added patches/902_extra_search_path.patch: + - temporally added "/usr/local/lib/site_ruby/1.8/i386-linux" and + "/usr/lib/ruby/1.8/i386-linux" as extra search paths to Ruby on ix86 + arch. + - added debian/NEWS. + + -- akira yamada Wed, 29 Jun 2005 23:53:01 +0900 + +ruby1.9 (1.9.0+20050623-1) unstable; urgency=high + + * akira yamada + - new upstream snapshot. + - (urgency high) fixed arbitrary command execution on XMLRPC server. + [ruby-core:5237] (see: CAN-2005-1992, Bug#315064) + - added debian/patches/803_runruby.rb_loadpath.dpatch: + - runruby.rb should require rbconfig.rb in source directory. + (it is for make install-doc.) + + -- akira yamada Thu, 23 Jun 2005 20:33:03 +0900 + +ruby1.9 (1.9.0+20050412-4) unstable; urgency=low + + * akira yamada + - debian/rules: CFLAGS=-O0 is for ia64 not for i386. + + -- akira yamada Sun, 17 Apr 2005 03:30:22 +0900 + +ruby1.9 (1.9.0+20050412-3) unstable; urgency=high + + * akira yamada + - debian/rules: fixed wrong filename conversion. (closes: #304809) + - debian/libruby1.9.*.in: should not be empty. + + -- akira yamada Sat, 16 Apr 2005 01:44:05 +0900 + +ruby1.9 (1.9.0+20050412-2) unstable; urgency=high + + * akira yamada + - debian/rules: binary-install/ should contain dh_movefiles + only, because "debian/rules binary-arch" cannot create some directories. + + -- akira yamada Fri, 15 Apr 2005 06:47:44 +0900 + +ruby1.9 (1.9.0+20050412-1) unstable; urgency=low + + * akira yamada + - uploaded to Debian. (closes: #256004) + + -- akira yamada Wed, 13 Apr 2005 18:06:34 +0900 + +ruby1.9 (1.9.0+20050412-0+1) unstable; urgency=low + + * akira yamada + - initial packaging. + + -- akira yamada Wed, 13 Apr 2005 07:28:16 +0900 + --- ruby1.9.2-1.9.2.z1.orig/debian/irb1.9.2.menu +++ ruby1.9.2-1.9.2.z1/debian/irb1.9.2.menu @@ -0,0 +1 @@ +?package(irb1.9.2):needs="text" section="Applications/Programming" title="Ruby (irb1.9.2)" command="/usr/bin/irb1.9.2" --- ruby1.9.2-1.9.2.z1.orig/debian/extfixup_rubylibs.sh +++ ruby1.9.2-1.9.2.z1/debian/extfixup_rubylibs.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +ruby_libdir=$1 +pkg_name=$2 +ext_dir=$3 + +if [ -d "$ext_dir/lib" ] +then + for f in `find "$ext_dir/lib" -type f -name '*.rb'` + do + dh_movefiles -p"$pkg_name" "$ruby_libdir"/`expr "$f" : "$ext_dir/lib/\(.*\)"` + done +fi + --- ruby1.9.2-1.9.2.z1.orig/debian/README.Debian +++ ruby1.9.2-1.9.2.z1/debian/README.Debian @@ -0,0 +1,59 @@ +Ruby 1.9 for Debian GNU/Linux +----------------------------- + +This is Ruby 1.9 package for Debian GNU/Linux. + +Ruby is the interpreted scripting language for quick and easy +object-oriented programming. It has many features to process text files and +to do system management tasks (as in perl). It is simple, straight-forward, +and extensible. + +Ruby 1.9.0 is the development version of Ruby. + +Homepage of Ruby is: + + (English and Japanese) + +And you can find helpful library or tools from RAA: + + (English) + + +For Debian users: + + * You can use /usr/bin/ruby1.9. + + * ``sitedir'' is /usr/local/lib/site_ruby, so ``$:'' (or ``$LOAD_PATH'') + contains the following: + + ["/usr/local/lib/site_ruby/1.9.0", + "/usr/local/lib/site_ruby/1.9.0/i486-linux", + "/usr/local/lib/site_ruby/1.9/i386-linux", + "/usr/local/lib/site_ruby", + "/usr/lib/ruby/vendor_ruby/1.9.0", + "/usr/lib/ruby/vendor_ruby/1.9.0/i486-linux", + "/usr/lib/ruby/vendor_ruby", + "/usr/lib/ruby/1.9.0", + "/usr/lib/ruby/1.9.0/i486-linux", + "/usr/lib/ruby/1.9/i386-linux", + "."] + + ("1.9.0" means "#{major}.#{minor}.#{teeny}" and "i486-linux" means "#{arch}-#{os}".) + + * Debian ruby policy is available in /usr/share/doc/ruby/ruby-policy.txt.gz + (ruby package) + + * Some libraries are in sub-packages. + * irb1.9 - irb program and libraries + * ri1.9 - ri program + * rdoc1.9 - rdoc program and libraries + * libdbm-ruby1.9 - dbm.so + * libdbm-gruby1.9 - gdbm.so + * libreadline-ruby1.9 - readline.so + * libtcltk-ruby1.9 - tkutil.so, tcltklib.so and related libraries + * libopenssl-ruby1.9 - openssl.so and libraries which use openssl + * ruby1.9-dev - header files and mkmf.rb. + * ruby1.9-elisp - ruby-mode, etc + * ruby1.9-examples - example programs + + -- akira yamada , Thu, 25 Dec 2007 15:44:00 +0900 --- ruby1.9.2-1.9.2.z1.orig/debian/watch +++ ruby1.9.2-1.9.2.z1/debian/watch @@ -0,0 +1,5 @@ +version=3 + +opts="pasv,uversionmangle=s/-p/\./" \ +ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-(1\.9\..*)-p(\d*)\.tar\.gz debian uupdate + --- ruby1.9.2-1.9.2.z1.orig/debian/ruby1.9.2-elisp.emacsen-startup +++ ruby1.9.2-1.9.2.z1/debian/ruby1.9.2-elisp.emacsen-startup @@ -0,0 +1,31 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file for the Debian GNU/Linux ruby package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The ruby package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(setq load-path (cons (concat "/usr/share/" + (symbol-name debian-emacs-flavor) + "/site-lisp/ruby1.9.2-elisp") load-path)) + +(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) +(setq auto-mode-alist + (cons '("\\.rb\\'" . ruby-mode) auto-mode-alist)) +(setq interpreter-mode-alist + (cons '("ruby" . ruby-mode) interpreter-mode-alist)) + +(autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") +(autoload 'inf-ruby-keys "inf-ruby" + "Set local key defs for inf-ruby in ruby-mode") + +(add-hook 'ruby-mode-hook + '(lambda () + (inf-ruby-keys) + )) --- ruby1.9.2-1.9.2.z1.orig/debian/libopenssl-ruby1.9.2.lintian-overrides +++ ruby1.9.2-1.9.2.z1/debian/libopenssl-ruby1.9.2.lintian-overrides @@ -0,0 +1,2 @@ +# After discussions at Bug#367024, a note is mentioned in debian/copyright. +libopenssl-ruby1.9.2 binary: possible-gpl-code-linked-with-openssl --- ruby1.9.2-1.9.2.z1.orig/debian/ri1.9.2.rd +++ ruby1.9.2-1.9.2.z1/debian/ri1.9.2.rd @@ -0,0 +1,68 @@ +=begin += NAME + +ri1.9 - Ruby Information at your fingertips + += SYNOPSIS + +ri1.9 [options] [names...] + += DESCRIPTION + +((*ri1.9*)) displaies information on Ruby classes, modules, and methods. +You can give the names of classes or methods to see their documentation. +Partial names may be given: if the names match more than +one entity, a list will be shown, otherwise details on +that entity will be displayed. + +Nested classes and modules can be specified using the normal +Name::Name notation, and instance methods can be distinguished +from class methods using "." (or "#") instead of "::". + +For example: + + ri1.9 File + ri1.9 File.new + ri1.9 F.n + ri1.9 zip + +Note that shell quoting may be required for method names +containing punctuation: + + ri1.9 'Array.[]' + ri1.9 compact\! + += OPTIONS + +: --classes, -c + Display the names of classes and modules we know about. + +: --doc-dir, -d ((|dirname|)) + A directory to search for documentation. If not specified, we search the + standard rdoc/ri directories. + +: --format, -f ((|name|)) + Format to use when displaying output: ansi, bs, html, plain, simple. Use + 'bs' (backspace) with most pager programs. To use ANSI, either also use + the -T option, or tell your pager to allow control characters. (for + example using the -R option to less.) + +: --list-names, -l + List all the names known to RDoc, one per line. + +: --no-pager, -T + Send output directly to stdout. + +: --width, -w ((|width|)) + Set the width of the output. + +: --version, -v + Display the version of ri1.9. + +: --help, -h + Display help. + +Options may also be passed in the 'RI' environment variable + + +=end --- ruby1.9.2-1.9.2.z1.orig/debian/ruby1.9.2-elisp.emacsen-remove +++ ruby1.9.2-1.9.2.z1/debian/ruby1.9.2-elisp.emacsen-remove @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/ruby-beta-elisp + +FLAVOR=$1 +PACKAGE=ruby1.9.2-elisp + +if [ ${FLAVOR} != emacs ]; then +# if test -x /usr/sbin/install-info-altdir; then +# echo remove/${PACKAGE}: removing Info links for ${FLAVOR} +# install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/ruby.info.gz +# fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi --- ruby1.9.2-1.9.2.z1.orig/debian/ruby1.9.2.prerm +++ ruby1.9.2-1.9.2.z1/debian/ruby1.9.2.prerm @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove ruby /usr/bin/ruby1.9.2 +fi + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/rdoc1.9.2.postinst +++ ruby1.9.2-1.9.2.z1/debian/rdoc1.9.2.postinst @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +update-alternatives --install /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.2 400 \ +--slave /usr/share/man/man1/rdoc.1.gz rdoc.1.gz /usr/share/man/man1/rdoc1.9.2.1.gz \ + +exit 0 +#DEBHELPER# --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/known_errors.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/known_errors.inc @@ -0,0 +1,616 @@ +/** -*-c-*- + * DO NOT EDIT + * This file is automatically generated by tools/generic_erb.rb from + * template/known_errors.inc.tmpl and defs/known_errors.def. + */ + +#ifdef EPERM + set_syserr(EPERM, "EPERM"); +#else + set_syserr(0, "EPERM"); +#endif +#ifdef ENOENT + set_syserr(ENOENT, "ENOENT"); +#else + set_syserr(0, "ENOENT"); +#endif +#ifdef ESRCH + set_syserr(ESRCH, "ESRCH"); +#else + set_syserr(0, "ESRCH"); +#endif +#ifdef EINTR + set_syserr(EINTR, "EINTR"); +#else + set_syserr(0, "EINTR"); +#endif +#ifdef EIO + set_syserr(EIO, "EIO"); +#else + set_syserr(0, "EIO"); +#endif +#ifdef ENXIO + set_syserr(ENXIO, "ENXIO"); +#else + set_syserr(0, "ENXIO"); +#endif +#ifdef E2BIG + set_syserr(E2BIG, "E2BIG"); +#else + set_syserr(0, "E2BIG"); +#endif +#ifdef ENOEXEC + set_syserr(ENOEXEC, "ENOEXEC"); +#else + set_syserr(0, "ENOEXEC"); +#endif +#ifdef EBADF + set_syserr(EBADF, "EBADF"); +#else + set_syserr(0, "EBADF"); +#endif +#ifdef ECHILD + set_syserr(ECHILD, "ECHILD"); +#else + set_syserr(0, "ECHILD"); +#endif +#ifdef EAGAIN + set_syserr(EAGAIN, "EAGAIN"); +#else + set_syserr(0, "EAGAIN"); +#endif +#ifdef ENOMEM + set_syserr(ENOMEM, "ENOMEM"); +#else + set_syserr(0, "ENOMEM"); +#endif +#ifdef EACCES + set_syserr(EACCES, "EACCES"); +#else + set_syserr(0, "EACCES"); +#endif +#ifdef EFAULT + set_syserr(EFAULT, "EFAULT"); +#else + set_syserr(0, "EFAULT"); +#endif +#ifdef ENOTBLK + set_syserr(ENOTBLK, "ENOTBLK"); +#else + set_syserr(0, "ENOTBLK"); +#endif +#ifdef EBUSY + set_syserr(EBUSY, "EBUSY"); +#else + set_syserr(0, "EBUSY"); +#endif +#ifdef EEXIST + set_syserr(EEXIST, "EEXIST"); +#else + set_syserr(0, "EEXIST"); +#endif +#ifdef EXDEV + set_syserr(EXDEV, "EXDEV"); +#else + set_syserr(0, "EXDEV"); +#endif +#ifdef ENODEV + set_syserr(ENODEV, "ENODEV"); +#else + set_syserr(0, "ENODEV"); +#endif +#ifdef ENOTDIR + set_syserr(ENOTDIR, "ENOTDIR"); +#else + set_syserr(0, "ENOTDIR"); +#endif +#ifdef EISDIR + set_syserr(EISDIR, "EISDIR"); +#else + set_syserr(0, "EISDIR"); +#endif +#ifdef EINVAL + set_syserr(EINVAL, "EINVAL"); +#else + set_syserr(0, "EINVAL"); +#endif +#ifdef ENFILE + set_syserr(ENFILE, "ENFILE"); +#else + set_syserr(0, "ENFILE"); +#endif +#ifdef EMFILE + set_syserr(EMFILE, "EMFILE"); +#else + set_syserr(0, "EMFILE"); +#endif +#ifdef ENOTTY + set_syserr(ENOTTY, "ENOTTY"); +#else + set_syserr(0, "ENOTTY"); +#endif +#ifdef ETXTBSY + set_syserr(ETXTBSY, "ETXTBSY"); +#else + set_syserr(0, "ETXTBSY"); +#endif +#ifdef EFBIG + set_syserr(EFBIG, "EFBIG"); +#else + set_syserr(0, "EFBIG"); +#endif +#ifdef ENOSPC + set_syserr(ENOSPC, "ENOSPC"); +#else + set_syserr(0, "ENOSPC"); +#endif +#ifdef ESPIPE + set_syserr(ESPIPE, "ESPIPE"); +#else + set_syserr(0, "ESPIPE"); +#endif +#ifdef EROFS + set_syserr(EROFS, "EROFS"); +#else + set_syserr(0, "EROFS"); +#endif +#ifdef EMLINK + set_syserr(EMLINK, "EMLINK"); +#else + set_syserr(0, "EMLINK"); +#endif +#ifdef EPIPE + set_syserr(EPIPE, "EPIPE"); +#else + set_syserr(0, "EPIPE"); +#endif +#ifdef EDOM + set_syserr(EDOM, "EDOM"); +#else + set_syserr(0, "EDOM"); +#endif +#ifdef ERANGE + set_syserr(ERANGE, "ERANGE"); +#else + set_syserr(0, "ERANGE"); +#endif +#ifdef EDEADLK + set_syserr(EDEADLK, "EDEADLK"); +#else + set_syserr(0, "EDEADLK"); +#endif +#ifdef ENAMETOOLONG + set_syserr(ENAMETOOLONG, "ENAMETOOLONG"); +#else + set_syserr(0, "ENAMETOOLONG"); +#endif +#ifdef ENOLCK + set_syserr(ENOLCK, "ENOLCK"); +#else + set_syserr(0, "ENOLCK"); +#endif +#ifdef ENOSYS + set_syserr(ENOSYS, "ENOSYS"); +#else + set_syserr(0, "ENOSYS"); +#endif +#ifdef ENOTEMPTY + set_syserr(ENOTEMPTY, "ENOTEMPTY"); +#else + set_syserr(0, "ENOTEMPTY"); +#endif +#ifdef ELOOP + set_syserr(ELOOP, "ELOOP"); +#else + set_syserr(0, "ELOOP"); +#endif +#ifdef EWOULDBLOCK + set_syserr(EWOULDBLOCK, "EWOULDBLOCK"); +#else + set_syserr(0, "EWOULDBLOCK"); +#endif +#ifdef ENOMSG + set_syserr(ENOMSG, "ENOMSG"); +#else + set_syserr(0, "ENOMSG"); +#endif +#ifdef EIDRM + set_syserr(EIDRM, "EIDRM"); +#else + set_syserr(0, "EIDRM"); +#endif +#ifdef ECHRNG + set_syserr(ECHRNG, "ECHRNG"); +#else + set_syserr(0, "ECHRNG"); +#endif +#ifdef EL2NSYNC + set_syserr(EL2NSYNC, "EL2NSYNC"); +#else + set_syserr(0, "EL2NSYNC"); +#endif +#ifdef EL3HLT + set_syserr(EL3HLT, "EL3HLT"); +#else + set_syserr(0, "EL3HLT"); +#endif +#ifdef EL3RST + set_syserr(EL3RST, "EL3RST"); +#else + set_syserr(0, "EL3RST"); +#endif +#ifdef ELNRNG + set_syserr(ELNRNG, "ELNRNG"); +#else + set_syserr(0, "ELNRNG"); +#endif +#ifdef EUNATCH + set_syserr(EUNATCH, "EUNATCH"); +#else + set_syserr(0, "EUNATCH"); +#endif +#ifdef ENOCSI + set_syserr(ENOCSI, "ENOCSI"); +#else + set_syserr(0, "ENOCSI"); +#endif +#ifdef EL2HLT + set_syserr(EL2HLT, "EL2HLT"); +#else + set_syserr(0, "EL2HLT"); +#endif +#ifdef EBADE + set_syserr(EBADE, "EBADE"); +#else + set_syserr(0, "EBADE"); +#endif +#ifdef EBADR + set_syserr(EBADR, "EBADR"); +#else + set_syserr(0, "EBADR"); +#endif +#ifdef EXFULL + set_syserr(EXFULL, "EXFULL"); +#else + set_syserr(0, "EXFULL"); +#endif +#ifdef ENOANO + set_syserr(ENOANO, "ENOANO"); +#else + set_syserr(0, "ENOANO"); +#endif +#ifdef EBADRQC + set_syserr(EBADRQC, "EBADRQC"); +#else + set_syserr(0, "EBADRQC"); +#endif +#ifdef EBADSLT + set_syserr(EBADSLT, "EBADSLT"); +#else + set_syserr(0, "EBADSLT"); +#endif +#ifdef EDEADLOCK + set_syserr(EDEADLOCK, "EDEADLOCK"); +#else + set_syserr(0, "EDEADLOCK"); +#endif +#ifdef EBFONT + set_syserr(EBFONT, "EBFONT"); +#else + set_syserr(0, "EBFONT"); +#endif +#ifdef ENOSTR + set_syserr(ENOSTR, "ENOSTR"); +#else + set_syserr(0, "ENOSTR"); +#endif +#ifdef ENODATA + set_syserr(ENODATA, "ENODATA"); +#else + set_syserr(0, "ENODATA"); +#endif +#ifdef ETIME + set_syserr(ETIME, "ETIME"); +#else + set_syserr(0, "ETIME"); +#endif +#ifdef ENOSR + set_syserr(ENOSR, "ENOSR"); +#else + set_syserr(0, "ENOSR"); +#endif +#ifdef ENONET + set_syserr(ENONET, "ENONET"); +#else + set_syserr(0, "ENONET"); +#endif +#ifdef ENOPKG + set_syserr(ENOPKG, "ENOPKG"); +#else + set_syserr(0, "ENOPKG"); +#endif +#ifdef EREMOTE + set_syserr(EREMOTE, "EREMOTE"); +#else + set_syserr(0, "EREMOTE"); +#endif +#ifdef ENOLINK + set_syserr(ENOLINK, "ENOLINK"); +#else + set_syserr(0, "ENOLINK"); +#endif +#ifdef EADV + set_syserr(EADV, "EADV"); +#else + set_syserr(0, "EADV"); +#endif +#ifdef ESRMNT + set_syserr(ESRMNT, "ESRMNT"); +#else + set_syserr(0, "ESRMNT"); +#endif +#ifdef ECOMM + set_syserr(ECOMM, "ECOMM"); +#else + set_syserr(0, "ECOMM"); +#endif +#ifdef EPROTO + set_syserr(EPROTO, "EPROTO"); +#else + set_syserr(0, "EPROTO"); +#endif +#ifdef EMULTIHOP + set_syserr(EMULTIHOP, "EMULTIHOP"); +#else + set_syserr(0, "EMULTIHOP"); +#endif +#ifdef EDOTDOT + set_syserr(EDOTDOT, "EDOTDOT"); +#else + set_syserr(0, "EDOTDOT"); +#endif +#ifdef EBADMSG + set_syserr(EBADMSG, "EBADMSG"); +#else + set_syserr(0, "EBADMSG"); +#endif +#ifdef EOVERFLOW + set_syserr(EOVERFLOW, "EOVERFLOW"); +#else + set_syserr(0, "EOVERFLOW"); +#endif +#ifdef ENOTUNIQ + set_syserr(ENOTUNIQ, "ENOTUNIQ"); +#else + set_syserr(0, "ENOTUNIQ"); +#endif +#ifdef EBADFD + set_syserr(EBADFD, "EBADFD"); +#else + set_syserr(0, "EBADFD"); +#endif +#ifdef EREMCHG + set_syserr(EREMCHG, "EREMCHG"); +#else + set_syserr(0, "EREMCHG"); +#endif +#ifdef ELIBACC + set_syserr(ELIBACC, "ELIBACC"); +#else + set_syserr(0, "ELIBACC"); +#endif +#ifdef ELIBBAD + set_syserr(ELIBBAD, "ELIBBAD"); +#else + set_syserr(0, "ELIBBAD"); +#endif +#ifdef ELIBSCN + set_syserr(ELIBSCN, "ELIBSCN"); +#else + set_syserr(0, "ELIBSCN"); +#endif +#ifdef ELIBMAX + set_syserr(ELIBMAX, "ELIBMAX"); +#else + set_syserr(0, "ELIBMAX"); +#endif +#ifdef ELIBEXEC + set_syserr(ELIBEXEC, "ELIBEXEC"); +#else + set_syserr(0, "ELIBEXEC"); +#endif +#ifdef EILSEQ + set_syserr(EILSEQ, "EILSEQ"); +#else + set_syserr(0, "EILSEQ"); +#endif +#ifdef ERESTART + set_syserr(ERESTART, "ERESTART"); +#else + set_syserr(0, "ERESTART"); +#endif +#ifdef ESTRPIPE + set_syserr(ESTRPIPE, "ESTRPIPE"); +#else + set_syserr(0, "ESTRPIPE"); +#endif +#ifdef EUSERS + set_syserr(EUSERS, "EUSERS"); +#else + set_syserr(0, "EUSERS"); +#endif +#ifdef ENOTSOCK + set_syserr(ENOTSOCK, "ENOTSOCK"); +#else + set_syserr(0, "ENOTSOCK"); +#endif +#ifdef EDESTADDRREQ + set_syserr(EDESTADDRREQ, "EDESTADDRREQ"); +#else + set_syserr(0, "EDESTADDRREQ"); +#endif +#ifdef EMSGSIZE + set_syserr(EMSGSIZE, "EMSGSIZE"); +#else + set_syserr(0, "EMSGSIZE"); +#endif +#ifdef EPROTOTYPE + set_syserr(EPROTOTYPE, "EPROTOTYPE"); +#else + set_syserr(0, "EPROTOTYPE"); +#endif +#ifdef ENOPROTOOPT + set_syserr(ENOPROTOOPT, "ENOPROTOOPT"); +#else + set_syserr(0, "ENOPROTOOPT"); +#endif +#ifdef EPROTONOSUPPORT + set_syserr(EPROTONOSUPPORT, "EPROTONOSUPPORT"); +#else + set_syserr(0, "EPROTONOSUPPORT"); +#endif +#ifdef ESOCKTNOSUPPORT + set_syserr(ESOCKTNOSUPPORT, "ESOCKTNOSUPPORT"); +#else + set_syserr(0, "ESOCKTNOSUPPORT"); +#endif +#ifdef EOPNOTSUPP + set_syserr(EOPNOTSUPP, "EOPNOTSUPP"); +#else + set_syserr(0, "EOPNOTSUPP"); +#endif +#ifdef EPFNOSUPPORT + set_syserr(EPFNOSUPPORT, "EPFNOSUPPORT"); +#else + set_syserr(0, "EPFNOSUPPORT"); +#endif +#ifdef EAFNOSUPPORT + set_syserr(EAFNOSUPPORT, "EAFNOSUPPORT"); +#else + set_syserr(0, "EAFNOSUPPORT"); +#endif +#ifdef EADDRINUSE + set_syserr(EADDRINUSE, "EADDRINUSE"); +#else + set_syserr(0, "EADDRINUSE"); +#endif +#ifdef EADDRNOTAVAIL + set_syserr(EADDRNOTAVAIL, "EADDRNOTAVAIL"); +#else + set_syserr(0, "EADDRNOTAVAIL"); +#endif +#ifdef ENETDOWN + set_syserr(ENETDOWN, "ENETDOWN"); +#else + set_syserr(0, "ENETDOWN"); +#endif +#ifdef ENETUNREACH + set_syserr(ENETUNREACH, "ENETUNREACH"); +#else + set_syserr(0, "ENETUNREACH"); +#endif +#ifdef ENETRESET + set_syserr(ENETRESET, "ENETRESET"); +#else + set_syserr(0, "ENETRESET"); +#endif +#ifdef ECONNABORTED + set_syserr(ECONNABORTED, "ECONNABORTED"); +#else + set_syserr(0, "ECONNABORTED"); +#endif +#ifdef ECONNRESET + set_syserr(ECONNRESET, "ECONNRESET"); +#else + set_syserr(0, "ECONNRESET"); +#endif +#ifdef ENOBUFS + set_syserr(ENOBUFS, "ENOBUFS"); +#else + set_syserr(0, "ENOBUFS"); +#endif +#ifdef EISCONN + set_syserr(EISCONN, "EISCONN"); +#else + set_syserr(0, "EISCONN"); +#endif +#ifdef ENOTCONN + set_syserr(ENOTCONN, "ENOTCONN"); +#else + set_syserr(0, "ENOTCONN"); +#endif +#ifdef ESHUTDOWN + set_syserr(ESHUTDOWN, "ESHUTDOWN"); +#else + set_syserr(0, "ESHUTDOWN"); +#endif +#ifdef ETOOMANYREFS + set_syserr(ETOOMANYREFS, "ETOOMANYREFS"); +#else + set_syserr(0, "ETOOMANYREFS"); +#endif +#ifdef ETIMEDOUT + set_syserr(ETIMEDOUT, "ETIMEDOUT"); +#else + set_syserr(0, "ETIMEDOUT"); +#endif +#ifdef ECONNREFUSED + set_syserr(ECONNREFUSED, "ECONNREFUSED"); +#else + set_syserr(0, "ECONNREFUSED"); +#endif +#ifdef EHOSTDOWN + set_syserr(EHOSTDOWN, "EHOSTDOWN"); +#else + set_syserr(0, "EHOSTDOWN"); +#endif +#ifdef EHOSTUNREACH + set_syserr(EHOSTUNREACH, "EHOSTUNREACH"); +#else + set_syserr(0, "EHOSTUNREACH"); +#endif +#ifdef EALREADY + set_syserr(EALREADY, "EALREADY"); +#else + set_syserr(0, "EALREADY"); +#endif +#ifdef EINPROGRESS + set_syserr(EINPROGRESS, "EINPROGRESS"); +#else + set_syserr(0, "EINPROGRESS"); +#endif +#ifdef ESTALE + set_syserr(ESTALE, "ESTALE"); +#else + set_syserr(0, "ESTALE"); +#endif +#ifdef EUCLEAN + set_syserr(EUCLEAN, "EUCLEAN"); +#else + set_syserr(0, "EUCLEAN"); +#endif +#ifdef ENOTNAM + set_syserr(ENOTNAM, "ENOTNAM"); +#else + set_syserr(0, "ENOTNAM"); +#endif +#ifdef ENAVAIL + set_syserr(ENAVAIL, "ENAVAIL"); +#else + set_syserr(0, "ENAVAIL"); +#endif +#ifdef EISNAM + set_syserr(EISNAM, "EISNAM"); +#else + set_syserr(0, "EISNAM"); +#endif +#ifdef EREMOTEIO + set_syserr(EREMOTEIO, "EREMOTEIO"); +#else + set_syserr(0, "EREMOTEIO"); +#endif +#ifdef EDQUOT + set_syserr(EDQUOT, "EDQUOT"); +#else + set_syserr(0, "EDQUOT"); +#endif --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/optinsn.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/optinsn.inc @@ -0,0 +1,30 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is for threaded code. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/optinsn.inc.tmpl' + or rb/insns2vm.rb + */ + +static INSN * +insn_operands_unification(INSN *insnobj){ +#ifdef OPT_OPERANDS_UNIFICATION + /* optimize rule */ + switch(insnobj->insn_id){ + + + + default: + /* do nothing */; + break; + } +#endif + return insnobj; +} + --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/vm.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/vm.inc @@ -0,0 +1,2850 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is VM main loop. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'insns.c' + */ + + +INSN_ENTRY(nop){ +{ + + + DEBUG_ENTER_INSN("nop"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_nop 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_nop_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(nop)); +{ +#line 40 "insns.def" + /* none */ + +#line 32 "vm.inc" +#undef CURRENT_INSN_nop +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(nop);}}} +INSN_ENTRY(getlocal){ +{ + VALUE val; + lindex_t idx = (lindex_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getlocal"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getlocal 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getlocal_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getlocal)); + USAGE_ANALYSIS_OPERAND(BIN(getlocal), 0, idx); +{ +#line 58 "insns.def" + val = *(GET_LFP() - idx); + +#line 56 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getlocal +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getlocal);}}} +INSN_ENTRY(setlocal){ +{ + lindex_t idx = (lindex_t)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setlocal"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setlocal 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setlocal_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setlocal)); + USAGE_ANALYSIS_OPERAND(BIN(setlocal), 0, idx); +{ +#line 72 "insns.def" + (*(GET_LFP() - idx)) = val; + +#line 81 "vm.inc" +#undef CURRENT_INSN_setlocal +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setlocal);}}} +INSN_ENTRY(getspecial){ +{ + VALUE val; + rb_num_t type = (rb_num_t)GET_OPERAND(2); + VALUE key = (VALUE)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getspecial"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getspecial 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getspecial_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getspecial)); + USAGE_ANALYSIS_OPERAND(BIN(getspecial), 0, key); + USAGE_ANALYSIS_OPERAND(BIN(getspecial), 1, type); +{ +#line 86 "insns.def" + val = vm_getspecial(th, GET_LFP(), key, type); + +#line 107 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getspecial +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getspecial);}}} +INSN_ENTRY(setspecial){ +{ + VALUE key = (VALUE)GET_OPERAND(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("setspecial"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setspecial 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setspecial_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setspecial)); + USAGE_ANALYSIS_OPERAND(BIN(setspecial), 0, key); +{ +#line 100 "insns.def" + lfp_svar_set(th, GET_LFP(), key, obj); + +#line 132 "vm.inc" +#undef CURRENT_INSN_setspecial +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setspecial);}}} +INSN_ENTRY(getdynamic){ +{ + VALUE val; + rb_num_t level = (rb_num_t)GET_OPERAND(2); + dindex_t idx = (dindex_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getdynamic"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getdynamic 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getdynamic_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getdynamic)); + USAGE_ANALYSIS_OPERAND(BIN(getdynamic), 0, idx); + USAGE_ANALYSIS_OPERAND(BIN(getdynamic), 1, level); +{ +#line 116 "insns.def" + int i; + VALUE *dfp2 = GET_DFP(); + for (i = 0; i < level; i++) { + dfp2 = GET_PREV_DFP(dfp2); + } + val = *(dfp2 - idx); + +#line 163 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getdynamic +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getdynamic);}}} +INSN_ENTRY(setdynamic){ +{ + rb_num_t level = (rb_num_t)GET_OPERAND(2); + dindex_t idx = (dindex_t)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setdynamic"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setdynamic 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setdynamic_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setdynamic)); + USAGE_ANALYSIS_OPERAND(BIN(setdynamic), 0, idx); + USAGE_ANALYSIS_OPERAND(BIN(setdynamic), 1, level); +{ +#line 137 "insns.def" + int i; + VALUE *dfp2 = GET_DFP(); + for (i = 0; i < level; i++) { + dfp2 = GET_PREV_DFP(dfp2); + } + *(dfp2 - idx) = val; + +#line 195 "vm.inc" +#undef CURRENT_INSN_setdynamic +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setdynamic);}}} +INSN_ENTRY(getinstancevariable){ +{ + VALUE val; + ID id = (ID)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getinstancevariable"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getinstancevariable 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getinstancevariable_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getinstancevariable)); + USAGE_ANALYSIS_OPERAND(BIN(getinstancevariable), 0, id); +{ +#line 157 "insns.def" + val = rb_ivar_get(GET_SELF(), id); + +#line 219 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getinstancevariable +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getinstancevariable);}}} +INSN_ENTRY(setinstancevariable){ +{ + ID id = (ID)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setinstancevariable"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setinstancevariable 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setinstancevariable_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setinstancevariable)); + USAGE_ANALYSIS_OPERAND(BIN(setinstancevariable), 0, id); +{ +#line 172 "insns.def" + rb_ivar_set(GET_SELF(), id, val); + +#line 244 "vm.inc" +#undef CURRENT_INSN_setinstancevariable +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setinstancevariable);}}} +INSN_ENTRY(getclassvariable){ +{ + VALUE val; + ID id = (ID)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getclassvariable"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getclassvariable 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getclassvariable_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getclassvariable)); + USAGE_ANALYSIS_OPERAND(BIN(getclassvariable), 0, id); +{ +#line 186 "insns.def" + NODE * const cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP()); + val = rb_cvar_get(vm_get_cvar_base(cref), id); + +#line 269 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getclassvariable +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getclassvariable);}}} +INSN_ENTRY(setclassvariable){ +{ + ID id = (ID)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setclassvariable"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setclassvariable 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setclassvariable_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setclassvariable)); + USAGE_ANALYSIS_OPERAND(BIN(setclassvariable), 0, id); +{ +#line 201 "insns.def" + NODE * const cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP()); + rb_cvar_set(vm_get_cvar_base(cref), id, val); + +#line 295 "vm.inc" +#undef CURRENT_INSN_setclassvariable +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setclassvariable);}}} +INSN_ENTRY(getconstant){ +{ + VALUE val; + ID id = (ID)GET_OPERAND(1); + VALUE klass = TOPN(0); + DEBUG_ENTER_INSN("getconstant"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_getconstant 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getconstant_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getconstant)); + USAGE_ANALYSIS_OPERAND(BIN(getconstant), 0, id); +{ +#line 223 "insns.def" + val = vm_get_ev_const(th, GET_ISEQ(), klass, id, 0); + +#line 320 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getconstant +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getconstant);}}} +INSN_ENTRY(setconstant){ +{ + ID id = (ID)GET_OPERAND(1); + VALUE val = TOPN(1); + VALUE cbase = TOPN(0); + DEBUG_ENTER_INSN("setconstant"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_setconstant 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setconstant_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setconstant)); + USAGE_ANALYSIS_OPERAND(BIN(setconstant), 0, id); +{ +#line 245 "insns.def" + vm_check_if_namespace(cbase); + rb_const_set(cbase, id, val); + INC_VM_STATE_VERSION(); + +#line 348 "vm.inc" +#undef CURRENT_INSN_setconstant +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setconstant);}}} +INSN_ENTRY(getglobal){ +{ + VALUE val; + GENTRY entry = (GENTRY)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getglobal"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getglobal 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getglobal_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getglobal)); + USAGE_ANALYSIS_OPERAND(BIN(getglobal), 0, entry); +{ +#line 261 "insns.def" + val = GET_GLOBAL(entry); + +#line 372 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getglobal +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getglobal);}}} +INSN_ENTRY(setglobal){ +{ + GENTRY entry = (GENTRY)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setglobal"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setglobal 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setglobal_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setglobal)); + USAGE_ANALYSIS_OPERAND(BIN(setglobal), 0, entry); +{ +#line 275 "insns.def" + SET_GLOBAL(entry, val); + +#line 397 "vm.inc" +#undef CURRENT_INSN_setglobal +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setglobal);}}} +INSN_ENTRY(putnil){ +{ + VALUE val; + + + DEBUG_ENTER_INSN("putnil"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putnil 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putnil_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putnil)); +{ +#line 294 "insns.def" + val = Qnil; + +#line 420 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_putnil +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putnil);}}} +INSN_ENTRY(putself){ +{ + VALUE val; + + + DEBUG_ENTER_INSN("putself"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putself 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putself_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putself)); +{ +#line 308 "insns.def" + val = GET_SELF(); + +#line 444 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_putself +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putself);}}} +INSN_ENTRY(putobject){ +{ + VALUE val = (VALUE)GET_OPERAND(1); + + DEBUG_ENTER_INSN("putobject"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putobject 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putobject_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putobject)); + USAGE_ANALYSIS_OPERAND(BIN(putobject), 0, val); +{ +#line 324 "insns.def" + /* */ + +#line 468 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_putobject +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putobject);}}} +INSN_ENTRY(putspecialobject){ +{ + VALUE val; + rb_num_t value_type = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("putspecialobject"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putspecialobject 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putspecialobject_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putspecialobject)); + USAGE_ANALYSIS_OPERAND(BIN(putspecialobject), 0, value_type); +{ +#line 339 "insns.def" + switch (value_type) { + case VM_SPECIAL_OBJECT_VMCORE: + val = rb_mRubyVMFrozenCore; + break; + case VM_SPECIAL_OBJECT_CBASE: + val = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP()); + break; + default: + rb_bug("putspecialobject insn: unknown value_type"); + } + +#line 502 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_putspecialobject +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putspecialobject);}}} +INSN_ENTRY(putiseq){ +{ + VALUE ret; + ISEQ iseq = (ISEQ)GET_OPERAND(1); + + DEBUG_ENTER_INSN("putiseq"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putiseq 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putiseq_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putiseq)); + USAGE_ANALYSIS_OPERAND(BIN(putiseq), 0, iseq); +{ +#line 362 "insns.def" + ret = iseq->self; + +#line 527 "vm.inc" + PUSH(ret); +#undef CURRENT_INSN_putiseq +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putiseq);}}} +INSN_ENTRY(putstring){ +{ + VALUE val; + VALUE str = (VALUE)GET_OPERAND(1); + + DEBUG_ENTER_INSN("putstring"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_putstring 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_putstring_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(putstring)); + USAGE_ANALYSIS_OPERAND(BIN(putstring), 0, str); +{ +#line 376 "insns.def" + val = rb_str_replace(rb_str_new(0, 0), str); + +#line 552 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_putstring +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(putstring);}}} +INSN_ENTRY(concatstrings){ +{ + VALUE val; + rb_num_t num = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("concatstrings"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_concatstrings 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_concatstrings_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(concatstrings)); + USAGE_ANALYSIS_OPERAND(BIN(concatstrings), 0, num); +{ +#line 390 "insns.def" + int i; + + val = rb_str_new(0, 0); + for (i = num - 1; i >= 0; i--) { + const VALUE v = TOPN(i); + rb_str_append(val, v); + } + POPN(num); + +#line 584 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_concatstrings +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(concatstrings);}}} +INSN_ENTRY(tostring){ +{ + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("tostring"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_tostring 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_tostring_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(tostring)); +{ +#line 411 "insns.def" + val = rb_obj_as_string(val); + +#line 608 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_tostring +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(tostring);}}} +INSN_ENTRY(toregexp){ +{ + VALUE val; + rb_num_t cnt = (rb_num_t)GET_OPERAND(2); + rb_num_t opt = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("toregexp"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_toregexp 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_toregexp_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(toregexp)); + USAGE_ANALYSIS_OPERAND(BIN(toregexp), 0, opt); + USAGE_ANALYSIS_OPERAND(BIN(toregexp), 1, cnt); +{ +#line 426 "insns.def" + VALUE rb_reg_new_ary(VALUE ary, int options); + int i; + const VALUE ary = rb_ary_new2(cnt); + RBASIC(ary)->klass = 0; + for (i = 0; i < cnt; i++) { + rb_ary_store(ary, cnt-i-1, TOPN(i)); + } + POPN(cnt); + val = rb_reg_new_ary(ary, opt); + +#line 643 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_toregexp +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(toregexp);}}} +INSN_ENTRY(newarray){ +{ + VALUE val; + rb_num_t num = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("newarray"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_newarray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_newarray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(newarray)); + USAGE_ANALYSIS_OPERAND(BIN(newarray), 0, num); +{ +#line 448 "insns.def" + val = rb_ary_new4((long)num, STACK_ADDR_FROM_TOP(num)); + POPN(num); + +#line 669 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_newarray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(newarray);}}} +INSN_ENTRY(duparray){ +{ + VALUE val; + VALUE ary = (VALUE)GET_OPERAND(1); + + DEBUG_ENTER_INSN("duparray"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_duparray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_duparray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(duparray)); + USAGE_ANALYSIS_OPERAND(BIN(duparray), 0, ary); +{ +#line 463 "insns.def" + val = rb_ary_replace(rb_ary_new2(0), ary); + +#line 694 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_duparray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(duparray);}}} +INSN_ENTRY(expandarray){ +{ + rb_num_t flag = (rb_num_t)GET_OPERAND(2); + rb_num_t num = (rb_num_t)GET_OPERAND(1); + VALUE ary = TOPN(0); + DEBUG_ENTER_INSN("expandarray"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_expandarray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_expandarray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(expandarray)); + USAGE_ANALYSIS_OPERAND(BIN(expandarray), 0, num); + USAGE_ANALYSIS_OPERAND(BIN(expandarray), 1, flag); +{ +#line 484 "insns.def" + vm_expandarray(GET_CFP(), ary, num, flag); + +#line 721 "vm.inc" +#undef CURRENT_INSN_expandarray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(expandarray);}}} +INSN_ENTRY(concatarray){ +{ + VALUE ary; + + VALUE ary1 = TOPN(1); + VALUE ary2st = TOPN(0); + DEBUG_ENTER_INSN("concatarray"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_concatarray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_concatarray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(concatarray)); +{ +#line 498 "insns.def" + const VALUE ary2 = ary2st; + VALUE tmp1 = rb_check_convert_type(ary1, T_ARRAY, "Array", "to_a"); + VALUE tmp2 = rb_check_convert_type(ary2, T_ARRAY, "Array", "to_a"); + + if (NIL_P(tmp1)) { + tmp1 = rb_ary_new3(1, ary1); + } + + if (NIL_P(tmp2)) { + tmp2 = rb_ary_new3(1, ary2); + } + + if (tmp1 == ary1) { + tmp1 = rb_ary_dup(ary1); + } + ary = rb_ary_concat(tmp1, tmp2); + +#line 761 "vm.inc" + PUSH(ary); +#undef CURRENT_INSN_concatarray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(concatarray);}}} +INSN_ENTRY(splatarray){ +{ + VALUE obj; + + VALUE ary = TOPN(0); + DEBUG_ENTER_INSN("splatarray"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_splatarray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_splatarray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(splatarray)); + USAGE_ANALYSIS_OPERAND(BIN(splatarray), 0, flag); +{ +#line 527 "insns.def" + VALUE tmp = rb_check_convert_type(ary, T_ARRAY, "Array", "to_a"); + if (NIL_P(tmp)) { + tmp = rb_ary_new3(1, ary); + } + obj = tmp; + +#line 791 "vm.inc" + PUSH(obj); +#undef CURRENT_INSN_splatarray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(splatarray);}}} +INSN_ENTRY(checkincludearray){ +{ + VALUE result; + VALUE flag = (VALUE)GET_OPERAND(1); + VALUE obj = TOPN(1); + VALUE ary = TOPN(0); + DEBUG_ENTER_INSN("checkincludearray"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_checkincludearray 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_checkincludearray_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(checkincludearray)); + USAGE_ANALYSIS_OPERAND(BIN(checkincludearray), 0, flag); +{ +#line 545 "insns.def" + int i; + result = Qfalse; + + if (TYPE(ary) != T_ARRAY) { + ary = rb_Array(ary); + } + + if (flag == Qtrue) { + /* NODE_CASE */ + for (i = 0; i < RARRAY_LEN(ary); i++) { + /* TODO: fix me (use another method dispatch) */ + if (RTEST(rb_funcall2(RARRAY_PTR(ary)[i], idEqq, 1, &obj))) { + result = Qtrue; + break; + } + } + } + else { + obj = Qfalse; + /* NODE_WHEN */ + for (i = 0; i < RARRAY_LEN(ary); i++) { + if (RTEST(RARRAY_PTR(ary)[i])) { + obj = result = Qtrue; + break; + } + } + } + +#line 844 "vm.inc" + PUSH(obj); + PUSH(result); +#undef CURRENT_INSN_checkincludearray +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(checkincludearray);}}} +INSN_ENTRY(newhash){ +{ + VALUE val; + rb_num_t num = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("newhash"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_newhash 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_newhash_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(newhash)); + USAGE_ANALYSIS_OPERAND(BIN(newhash), 0, num); +{ +#line 586 "insns.def" + int i; + val = rb_hash_new(); + + for (i = num; i > 0; i -= 2) { + const VALUE v = TOPN(i - 2); + const VALUE k = TOPN(i - 1); + rb_hash_aset(val, k, v); + } + POPN(num); + +#line 878 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_newhash +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(newhash);}}} +INSN_ENTRY(newrange){ +{ + VALUE val; + rb_num_t flag = (rb_num_t)GET_OPERAND(1); + VALUE low = TOPN(1); + VALUE high = TOPN(0); + DEBUG_ENTER_INSN("newrange"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_newrange 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_newrange_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(newrange)); + USAGE_ANALYSIS_OPERAND(BIN(newrange), 0, flag); +{ +#line 608 "insns.def" + val = rb_range_new(low, high, flag); + +#line 905 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_newrange +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(newrange);}}} +INSN_ENTRY(pop){ +{ + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("pop"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_pop 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_pop_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(pop)); +{ +#line 626 "insns.def" + val = val; + /* none */ + +#line 930 "vm.inc" +#undef CURRENT_INSN_pop +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(pop);}}} +INSN_ENTRY(dup){ +{ + VALUE val2; + VALUE val1; + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("dup"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_dup 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_dup_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(dup)); +{ +#line 641 "insns.def" + val1 = val2 = val; + +#line 955 "vm.inc" + PUSH(val1); + PUSH(val2); +#undef CURRENT_INSN_dup +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(dup);}}} +INSN_ENTRY(dupn){ +{ + rb_num_t n = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("dupn"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_dupn 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_dupn_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(dupn)); + USAGE_ANALYSIS_OPERAND(BIN(dupn), 0, n); +{ +#line 655 "insns.def" + int i; + VALUE *sp = STACK_ADDR_FROM_TOP(n); + for (i = 0; i < n; i++) { + GET_SP()[i] = sp[i]; + } + INC_SP(n); + +#line 985 "vm.inc" +#undef CURRENT_INSN_dupn +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(dupn);}}} +INSN_ENTRY(swap){ +{ + + VALUE val = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("swap"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_swap 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_swap_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(swap)); +{ +#line 675 "insns.def" + /* none */ + +#line 1009 "vm.inc" + PUSH(obj); + PUSH(val); +#undef CURRENT_INSN_swap +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(swap);}}} +INSN_ENTRY(reput){ +{ + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("reput"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_reput 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_reput_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(reput)); +{ +#line 689 "insns.def" + /* none */ + +#line 1034 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_reput +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(reput);}}} +INSN_ENTRY(topn){ +{ + VALUE val; + rb_num_t n = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("topn"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_topn 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_topn_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(topn)); + USAGE_ANALYSIS_OPERAND(BIN(topn), 0, n); +{ +#line 703 "insns.def" + val = TOPN(n); + +#line 1059 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_topn +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(topn);}}} +INSN_ENTRY(setn){ +{ + rb_num_t n = (rb_num_t)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setn"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setn 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setn_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setn)); + USAGE_ANALYSIS_OPERAND(BIN(setn), 0, n); +{ +#line 717 "insns.def" + TOPN(n-1) = val; + +#line 1084 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_setn +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setn);}}} +INSN_ENTRY(adjuststack){ +{ + rb_num_t n = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("adjuststack"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_adjuststack 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_adjuststack_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(adjuststack)); + USAGE_ANALYSIS_OPERAND(BIN(adjuststack), 0, n); +{ +#line 731 "insns.def" + DEC_SP(n); + +#line 1108 "vm.inc" +#undef CURRENT_INSN_adjuststack +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(adjuststack);}}} +INSN_ENTRY(defined){ +{ + VALUE val; + VALUE needstr = (VALUE)GET_OPERAND(3); + VALUE obj = (VALUE)GET_OPERAND(2); + rb_num_t type = (rb_num_t)GET_OPERAND(1); + VALUE v = TOPN(0); + DEBUG_ENTER_INSN("defined"); + ADD_PC(1+3); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_defined 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_defined_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(defined)); + USAGE_ANALYSIS_OPERAND(BIN(defined), 0, type); + USAGE_ANALYSIS_OPERAND(BIN(defined), 1, obj); + USAGE_ANALYSIS_OPERAND(BIN(defined), 2, needstr); +{ +#line 750 "insns.def" + VALUE klass; + const char *expr_type = 0; + val = Qnil; + + switch (type) { + case DEFINED_IVAR: + if (rb_ivar_defined(GET_SELF(), SYM2ID(obj))) { + expr_type = "instance-variable"; + } + break; + case DEFINED_IVAR2: + klass = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP()); + break; + case DEFINED_GVAR: + if (rb_gvar_defined((struct global_entry *)(obj & ~1))) { + expr_type = "global-variable"; + } + break; + case DEFINED_CVAR: + klass = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP()); + if (rb_cvar_defined(klass, SYM2ID(obj))) { + expr_type = "class variable"; + } + break; + case DEFINED_CONST: + klass = v; + if (vm_get_ev_const(th, GET_ISEQ(), klass, SYM2ID(obj), 1)) { + expr_type = "constant"; + } + break; + case DEFINED_FUNC: + klass = CLASS_OF(v); + if (rb_method_boundp(klass, SYM2ID(obj), 0)) { + expr_type = "method"; + } + break; + case DEFINED_METHOD:{ + VALUE klass = CLASS_OF(v); + NODE *method = (NODE *) rb_method_node(klass, SYM2ID(obj)); + + if (method) { + if (!(method->nd_noex & NOEX_PRIVATE)) { + if (!((method->nd_noex & NOEX_PROTECTED) && + !rb_obj_is_kind_of(GET_SELF(), + rb_class_real(klass)))) { + expr_type = "method"; + } + } + } + break; + } + case DEFINED_YIELD: + if (GET_BLOCK_PTR()) { + expr_type = "yield"; + } + break; + case DEFINED_ZSUPER:{ + rb_iseq_t *ip = GET_ISEQ(); + while (ip) { + if (ip->defined_method_id) { + break; + } + ip = ip->parent_iseq; + } + if (ip) { + VALUE klass = vm_search_normal_superclass(ip->klass, GET_SELF()); + if (rb_method_boundp(klass, ip->defined_method_id, 0)) { + expr_type = "super"; + } + } + break; + } + case DEFINED_REF:{ + val = vm_getspecial(th, GET_LFP(), Qfalse, FIX2INT(obj)); + if (val != Qnil) { + expr_type = "global-variable"; + } + break; + } + default: + rb_bug("unimplemented defined? type (VM)"); + break; + } + if (expr_type != 0) { + if (needstr != Qfalse) { + val = rb_str_new2(expr_type); + } + else { + val = Qtrue; + } + } + +#line 1227 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_defined +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(defined);}}} +INSN_ENTRY(trace){ +{ + rb_num_t nf = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("trace"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_trace 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_trace_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(trace)); + USAGE_ANALYSIS_OPERAND(BIN(trace), 0, nf); +{ +#line 854 "insns.def" + rb_event_flag_t flag = nf; + + EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0 /* TODO: id, klass */); + +#line 1253 "vm.inc" +#undef CURRENT_INSN_trace +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(trace);}}} +INSN_ENTRY(defineclass){ +{ + VALUE val; + rb_num_t define_type = (rb_num_t)GET_OPERAND(3); + ISEQ class_iseq = (ISEQ)GET_OPERAND(2); + ID id = (ID)GET_OPERAND(1); + VALUE cbase = TOPN(1); + VALUE super = TOPN(0); + DEBUG_ENTER_INSN("defineclass"); + ADD_PC(1+3); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_defineclass 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_defineclass_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(defineclass)); + USAGE_ANALYSIS_OPERAND(BIN(defineclass), 0, id); + USAGE_ANALYSIS_OPERAND(BIN(defineclass), 1, class_iseq); + USAGE_ANALYSIS_OPERAND(BIN(defineclass), 2, define_type); +{ +#line 878 "insns.def" + VALUE klass; + + switch ((int)define_type) { + case 0: + /* val is dummy. classdef returns class scope value */ + + if (super == Qnil) { + super = rb_cObject; + } + + vm_check_if_namespace(cbase); + + /* find klass */ + if (rb_const_defined_at(cbase, id)) { + /* already exist */ + klass = rb_const_get_at(cbase, id); + if (TYPE(klass) != T_CLASS) { + rb_raise(rb_eTypeError, "%s is not a class", rb_id2name(id)); + } + + if (super != rb_cObject) { + VALUE tmp; + tmp = rb_class_real(RCLASS_SUPER(klass)); + + if (tmp != super) { + rb_raise(rb_eTypeError, "superclass mismatch for class %s", + rb_id2name(id)); + } + } + } + else { + /* new class declaration */ + klass = rb_define_class_id(id, super); + rb_set_class_path_string(klass, cbase, rb_id2str(id)); + rb_const_set(cbase, id, klass); + rb_class_inherited(super, klass); + } + break; + case 1: + /* val is dummy. classdef returns class scope value */ + /* super is dummy */ + klass = rb_singleton_class(cbase); + break; + case 2: + /* val is dummy. classdef returns class scope value */ + /* super is dummy */ + + vm_check_if_namespace(cbase); + + /* find klass */ + if (rb_const_defined_at(cbase, id)) { + klass = rb_const_get_at(cbase, id); + /* already exist */ + if (TYPE(klass) != T_MODULE) { + rb_raise(rb_eTypeError, "%s is not a module", rb_id2name(id)); + } + } + else { + /* new module declaration */ + klass = rb_define_module_id(id); + rb_set_class_path_string(klass, cbase, rb_id2str(id)); + rb_const_set(cbase, id, klass); + } + break; + default: + rb_bug("unknown defineclass type: %d", (int)define_type); + } + + COPY_CREF(class_iseq->cref_stack, vm_cref_push(th, klass, NOEX_PUBLIC)); + + /* enter scope */ + vm_push_frame(th, class_iseq, + VM_FRAME_MAGIC_CLASS, klass, (VALUE) GET_DFP() | 0x02, + class_iseq->iseq_encoded, GET_SP(), 0, + class_iseq->local_size); + RESTORE_REGS(); + + INC_VM_STATE_VERSION(); + NEXT_INSN(); + +#line 1361 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_defineclass +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(defineclass);}}} +INSN_ENTRY(send){ +{ + VALUE val; + IC ic = (IC)GET_OPERAND(5); + rb_num_t op_flag = (rb_num_t)GET_OPERAND(4); + ISEQ blockiseq = (ISEQ)GET_OPERAND(3); + rb_num_t op_argc = (rb_num_t)GET_OPERAND(2); + ID op_id = (ID)GET_OPERAND(1); + + DEBUG_ENTER_INSN("send"); + ADD_PC(1+5); + PREFETCH(GET_PC()); + #define CURRENT_INSN_send 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_send_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(send)); + USAGE_ANALYSIS_OPERAND(BIN(send), 0, op_id); + USAGE_ANALYSIS_OPERAND(BIN(send), 1, op_argc); + USAGE_ANALYSIS_OPERAND(BIN(send), 2, blockiseq); + USAGE_ANALYSIS_OPERAND(BIN(send), 3, op_flag); + USAGE_ANALYSIS_OPERAND(BIN(send), 4, ic); +{ +#line 981 "insns.def" + NODE *mn; + VALUE recv, klass; + rb_block_t *blockptr = 0; + rb_num_t num = caller_setup_args(th, GET_CFP(), op_flag, op_argc, + (rb_iseq_t *)blockiseq, &blockptr); + rb_num_t flag = op_flag; + ID id = op_id; + + /* get receiver */ + recv = (flag & VM_CALL_FCALL_BIT) ? GET_SELF() : TOPN(num); + klass = CLASS_OF(recv); + mn = vm_method_search(id, klass, ic); + + /* send/funcall optimization */ + if (flag & VM_CALL_SEND_BIT) { + vm_send_optimize(GET_CFP(), &mn, &flag, &num, &id, klass); + } + + CALL_METHOD(num, blockptr, flag, id, mn, recv); + +#line 1412 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_send +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(send);}}} +INSN_ENTRY(invokesuper){ +{ + VALUE val; + rb_num_t op_flag = (rb_num_t)GET_OPERAND(3); + ISEQ blockiseq = (ISEQ)GET_OPERAND(2); + rb_num_t op_argc = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("invokesuper"); + ADD_PC(1+3); + PREFETCH(GET_PC()); + #define CURRENT_INSN_invokesuper 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_invokesuper_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(invokesuper)); + USAGE_ANALYSIS_OPERAND(BIN(invokesuper), 0, op_argc); + USAGE_ANALYSIS_OPERAND(BIN(invokesuper), 1, blockiseq); + USAGE_ANALYSIS_OPERAND(BIN(invokesuper), 2, op_flag); +{ +#line 1015 "insns.def" + rb_block_t *blockptr = !(op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? GET_BLOCK_PTR() : 0; + int num = caller_setup_args(th, GET_CFP(), op_flag, op_argc, blockiseq, &blockptr); + VALUE recv, klass; + NODE *mn; + ID id; + const VALUE flag = VM_CALL_SUPER_BIT | VM_CALL_FCALL_BIT; + + recv = GET_SELF(); + vm_search_superclass(GET_CFP(), GET_ISEQ(), recv, TOPN(num), &id, &klass); + mn = rb_method_node(klass, id); + + CALL_METHOD(num, blockptr, flag, id, mn, recv); + +#line 1452 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_invokesuper +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(invokesuper);}}} +INSN_ENTRY(invokeblock){ +{ + VALUE val; + rb_num_t flag = (rb_num_t)GET_OPERAND(2); + rb_num_t num = (rb_num_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("invokeblock"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_invokeblock 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_invokeblock_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(invokeblock)); + USAGE_ANALYSIS_OPERAND(BIN(invokeblock), 0, num); + USAGE_ANALYSIS_OPERAND(BIN(invokeblock), 1, flag); +{ +#line 1041 "insns.def" + val = vm_invoke_block(th, GET_CFP(), num, flag); + if (val == Qundef) { + RESTORE_REGS(); + NEXT_INSN(); + } + +#line 1483 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_invokeblock +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(invokeblock);}}} +INSN_ENTRY(leave){ +{ + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("leave"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_leave 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_leave_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(leave)); +{ +#line 1059 "insns.def" + if (OPT_CHECKED_RUN) { + if (reg_cfp->sp != reg_cfp->bp) { + rb_bug("Stack consistency error (sp: %"PRIdPTRDIFF", bp: %"PRIdPTRDIFF")", + VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, reg_cfp->bp)); + } + } + + RUBY_VM_CHECK_INTS(); + vm_pop_frame(th); + RESTORE_REGS(); + +#line 1516 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_leave +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(leave);}}} +INSN_ENTRY(finish){ +{ + + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("finish"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_finish 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_finish_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(finish)); +{ +#line 1082 "insns.def" +#if OPT_CALL_THREADED_CODE + rb_bug("unused instruction on OPT_CALL_THREADED_CODE"); +#else + th->cfp++; + return val; +#endif + +#line 1545 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_finish +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(finish);}}} +INSN_ENTRY(throw){ +{ + VALUE val; + rb_num_t throw_state = (rb_num_t)GET_OPERAND(1); + VALUE throwobj = TOPN(0); + DEBUG_ENTER_INSN("throw"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_throw 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_throw_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(throw)); + USAGE_ANALYSIS_OPERAND(BIN(throw), 0, throw_state); +{ +#line 1105 "insns.def" + RUBY_VM_CHECK_INTS(); + val = vm_throw(th, GET_CFP(), throw_state, throwobj); + THROW_EXCEPTION(val); + /* unreachable */ + +#line 1574 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_throw +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(throw);}}} +INSN_ENTRY(jump){ +{ + OFFSET dst = (OFFSET)GET_OPERAND(1); + + DEBUG_ENTER_INSN("jump"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_jump 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_jump_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(jump)); + USAGE_ANALYSIS_OPERAND(BIN(jump), 0, dst); +{ +#line 1126 "insns.def" + RUBY_VM_CHECK_INTS(); + JUMP(dst); + +#line 1599 "vm.inc" +#undef CURRENT_INSN_jump +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(jump);}}} +INSN_ENTRY(branchif){ +{ + OFFSET dst = (OFFSET)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("branchif"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_branchif 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_branchif_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(branchif)); + USAGE_ANALYSIS_OPERAND(BIN(branchif), 0, dst); +{ +#line 1141 "insns.def" + if (RTEST(val)) { + RUBY_VM_CHECK_INTS(); + JUMP(dst); + } + +#line 1626 "vm.inc" +#undef CURRENT_INSN_branchif +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(branchif);}}} +INSN_ENTRY(branchunless){ +{ + OFFSET dst = (OFFSET)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("branchunless"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_branchunless 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_branchunless_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(branchunless)); + USAGE_ANALYSIS_OPERAND(BIN(branchunless), 0, dst); +{ +#line 1158 "insns.def" + if (!RTEST(val)) { + RUBY_VM_CHECK_INTS(); + JUMP(dst); + } + +#line 1653 "vm.inc" +#undef CURRENT_INSN_branchunless +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(branchunless);}}} +INSN_ENTRY(getinlinecache){ +{ + VALUE val; + OFFSET dst = (OFFSET)GET_OPERAND(2); + IC ic = (IC)GET_OPERAND(1); + + DEBUG_ENTER_INSN("getinlinecache"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_getinlinecache 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_getinlinecache_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(getinlinecache)); + USAGE_ANALYSIS_OPERAND(BIN(getinlinecache), 0, ic); + USAGE_ANALYSIS_OPERAND(BIN(getinlinecache), 1, dst); +{ +#line 1180 "insns.def" + if (ic->ic_vmstat == GET_VM_STATE_VERSION()) { + val = ic->ic_value; + JUMP(dst); + } + else { + /* none */ + val = Qnil; + } + +#line 1686 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_getinlinecache +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(getinlinecache);}}} +INSN_ENTRY(onceinlinecache){ +{ + VALUE val; + OFFSET dst = (OFFSET)GET_OPERAND(2); + IC ic = (IC)GET_OPERAND(1); + + DEBUG_ENTER_INSN("onceinlinecache"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + #define CURRENT_INSN_onceinlinecache 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_onceinlinecache_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(onceinlinecache)); + USAGE_ANALYSIS_OPERAND(BIN(onceinlinecache), 0, ic); + USAGE_ANALYSIS_OPERAND(BIN(onceinlinecache), 1, dst); +{ +#line 1201 "insns.def" + if (ic->ic_vmstat) { + val = ic->ic_value; + JUMP(dst); + } + else { + /* none */ + val = Qnil; + } + +#line 1720 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_onceinlinecache +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(onceinlinecache);}}} +INSN_ENTRY(setinlinecache){ +{ + OFFSET dst = (OFFSET)GET_OPERAND(1); + VALUE val = TOPN(0); + DEBUG_ENTER_INSN("setinlinecache"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_setinlinecache 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_setinlinecache_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(setinlinecache)); + USAGE_ANALYSIS_OPERAND(BIN(setinlinecache), 0, dst); +{ +#line 1222 "insns.def" + IC ic = GET_CONST_INLINE_CACHE(dst); + + ic->ic_value = val; + ic->ic_vmstat = GET_VM_STATE_VERSION() - ruby_vm_const_missing_count; + ruby_vm_const_missing_count = 0; + +#line 1749 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_setinlinecache +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(setinlinecache);}}} +INSN_ENTRY(opt_case_dispatch){ +{ + OFFSET else_offset = (OFFSET)GET_OPERAND(2); + CDHASH hash = (CDHASH)GET_OPERAND(1); + VALUE key = TOPN(0); + DEBUG_ENTER_INSN("opt_case_dispatch"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_opt_case_dispatch 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_case_dispatch_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_case_dispatch)); + USAGE_ANALYSIS_OPERAND(BIN(opt_case_dispatch), 0, hash); + USAGE_ANALYSIS_OPERAND(BIN(opt_case_dispatch), 1, else_offset); +{ +#line 1240 "insns.def" + if (BASIC_OP_UNREDEFINED_P(BOP_EQQ)) { + VALUE val; + if (st_lookup(RHASH_TBL(hash), key, &val)) { + JUMP(FIX2INT(val)); + } + else { + JUMP(else_offset); + } + } + else { + struct opt_case_dispatch_i_arg arg = { + key, -1 + }; + + st_foreach(RHASH_TBL(hash), opt_case_dispatch_i, (st_data_t)&arg); + + if (arg.label != -1) { + JUMP(arg.label); + } + else { + JUMP(else_offset); + } + } + +#line 1798 "vm.inc" +#undef CURRENT_INSN_opt_case_dispatch +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_case_dispatch);}}} +INSN_ENTRY(opt_checkenv){ +{ + + + DEBUG_ENTER_INSN("opt_checkenv"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_opt_checkenv 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_checkenv_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_checkenv)); +{ +#line 1276 "insns.def" + if (GET_CFP()->bp != GET_DFP() + 1) { + VALUE *new_dfp = GET_CFP()->bp - 1; + /* TODO: copy env and clean stack at creating env? */ + *new_dfp = *GET_DFP(); + SET_DFP(new_dfp); + } + +#line 1825 "vm.inc" +#undef CURRENT_INSN_opt_checkenv +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_checkenv);}}} +INSN_ENTRY(opt_plus){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_plus"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_plus 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_plus_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_plus)); +{ +#line 1298 "insns.def" + if (0) { + + } +#if 1 + else if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_PLUS)) { + /* fixnum + fixnum */ +#ifndef LONG_LONG_VALUE + val = (recv + (obj & (~1))); + if ((~(recv ^ obj) & (recv ^ val)) & + ((VALUE)0x01 << ((sizeof(VALUE) * CHAR_BIT) - 1))) { + val = rb_big_plus(rb_int2big(FIX2LONG(recv)), + rb_int2big(FIX2LONG(obj))); + } +#else + long a, b, c; + a = FIX2LONG(recv); + b = FIX2LONG(obj); + c = a + b; + if (FIXABLE(c)) { + val = LONG2FIX(c); + } + else { + val = rb_big_plus(rb_int2big(a), rb_int2big(b)); + } +#endif + } +#endif + + else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) { + if (0) { + } +#if 1 + else if (HEAP_CLASS_OF(recv) == rb_cFloat && + HEAP_CLASS_OF(obj) == rb_cFloat && + BASIC_OP_UNREDEFINED_P(BOP_PLUS)) { + val = DBL2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj)); + } +#endif + +#if 1 + else if (HEAP_CLASS_OF(recv) == rb_cString && + HEAP_CLASS_OF(obj) == rb_cString && + BASIC_OP_UNREDEFINED_P(BOP_PLUS)) { + val = rb_str_plus(recv, obj); + } +#endif +#if 1 + else if (HEAP_CLASS_OF(recv) == rb_cArray && + BASIC_OP_UNREDEFINED_P(BOP_PLUS)) { + val = rb_ary_plus(recv, obj); + } +#endif + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idPLUS, recv); + } + +#line 1912 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_plus +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_plus);}}} +INSN_ENTRY(opt_minus){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_minus"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_minus 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_minus_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_minus)); +{ +#line 1374 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_MINUS)) { + long a, b, c; + + a = FIX2LONG(recv); + b = FIX2LONG(obj); + c = a - b; + + if (FIXABLE(c)) { + val = LONG2FIX(c); + } + else { + val = rb_big_minus(rb_int2big(a), rb_int2big(b)); + } + } + else { + /* other */ + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idMINUS, recv); + } + +#line 1958 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_minus +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_minus);}}} +INSN_ENTRY(opt_mult){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_mult"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_mult 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_mult_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_mult)); +{ +#line 1408 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_MULT)) { + long a, b, c; + + a = FIX2LONG(recv); + if (a == 0) { + val = recv; + } + else { + b = FIX2LONG(obj); + c = a * b; + + if (FIXABLE(c) && c / a == b) { + val = LONG2FIX(c); + } + else { + val = rb_big_mul(rb_int2big(a), rb_int2big(b)); + } + } + } + else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) { + if (0) { + } +#if 1 + else if (HEAP_CLASS_OF(recv) == rb_cFloat && + HEAP_CLASS_OF(obj) == rb_cFloat && + BASIC_OP_UNREDEFINED_P(BOP_MULT)) { + val = DBL2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj)); + } +#endif + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idMULT, recv); + } + +#line 2023 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_mult +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_mult);}}} +INSN_ENTRY(opt_div){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_div"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_div 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_div_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_div)); +{ +#line 1461 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_DIV)) { + long x, y, div; + + x = FIX2LONG(recv); + y = FIX2LONG(obj); + { + /* copied from numeric.c#fixdivmod */ + long mod; + if (y == 0) + goto INSN_LABEL(normal_dispatch); + if (y < 0) { + if (x < 0) + div = -x / -y; + else + div = -(x / -y); + } + else { + if (x < 0) + div = -(-x / y); + else + div = x / y; + } + mod = x - div * y; + if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) { + mod += y; + div -= 1; + } + } + val = LONG2NUM(div); + } + else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) { + if (0) { + } +#if 1 + else if (HEAP_CLASS_OF(recv) == rb_cFloat && + HEAP_CLASS_OF(obj) == rb_cFloat && + BASIC_OP_UNREDEFINED_P(BOP_DIV)) { + val = DBL2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj)); + } +#endif + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idDIV, recv); + } + +#line 2099 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_div +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_div);}}} +INSN_ENTRY(opt_mod){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_mod"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_mod 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_mod_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_mod)); +{ +#line 1525 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_MOD)) { + long x, y, mod; + + x = FIX2LONG(recv); + y = FIX2LONG(obj); + { + /* copied from numeric.c#fixdivmod */ + long div; + + if (y == 0) + rb_num_zerodiv(); + if (y < 0) { + if (x < 0) + div = -x / -y; + else + div = -(x / -y); + } + else { + if (x < 0) + div = -(-x / y); + else + div = x / y; + } + mod = x - div * y; + if ((mod < 0 && y > 0) || (mod > 0 && y < 0)) { + mod += y; + div -= 1; + } + } + val = LONG2FIX(mod); + } + else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) { + if (0) { + } + else if (HEAP_CLASS_OF(recv) == rb_cFloat && + HEAP_CLASS_OF(obj) == rb_cFloat && + BASIC_OP_UNREDEFINED_P(BOP_MOD)) { + double x = RFLOAT_VALUE(recv); + double y = RFLOAT_VALUE(obj); + double div, mod; + + { + double z; + + modf(x / y, &z); + mod = x - z * y; + } + + div = (x - mod) / y; + if (y * mod < 0) { + mod += y; + div -= 1.0; + } + val = DBL2NUM(mod); + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idMOD, recv); + } + +#line 2190 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_mod +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_mod);}}} +INSN_ENTRY(opt_eq){ +{ + VALUE val; + IC ic = (IC)GET_OPERAND(1); + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_eq"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_eq 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_eq_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_eq)); + USAGE_ANALYSIS_OPERAND(BIN(opt_eq), 0, ic); +{ +#line 1604 "insns.def" + val = opt_eq_func(recv, obj, ic); + + if (val == Qundef) { + /* other */ + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idEq, recv); + } + +#line 2224 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_eq +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_eq);}}} +INSN_ENTRY(opt_neq){ +{ + VALUE val; + IC ic2 = (IC)GET_OPERAND(2); + IC ic1 = (IC)GET_OPERAND(1); + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_neq"); + ADD_PC(1+2); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_neq 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_neq_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_neq)); + USAGE_ANALYSIS_OPERAND(BIN(opt_neq), 0, ic1); + USAGE_ANALYSIS_OPERAND(BIN(opt_neq), 1, ic2); +{ +#line 1625 "insns.def" + extern VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2); + NODE *mn = vm_method_search(idNeq, CLASS_OF(recv), ic1); + val = Qundef; + + if (check_cfunc(mn, rb_obj_not_equal)) { + val = opt_eq_func(recv, obj, ic2); + + if (val != Qundef) { + val = RTEST(val) ? Qfalse : Qtrue; + } + } + + if (val == Qundef) { + /* other */ + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idNeq, recv); + } + +#line 2270 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_neq +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_neq);}}} +INSN_ENTRY(opt_lt){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_lt"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_lt 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_lt_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_lt)); +{ +#line 1656 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_LT)) { + SIGNED_VALUE a = recv, b = obj; + + if (a < b) { + val = Qtrue; + } + else { + val = Qfalse; + } + } + else { + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idLT, recv); + } + +#line 2311 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_lt +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_lt);}}} +INSN_ENTRY(opt_le){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_le"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_le 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_le_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_le)); +{ +#line 1685 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_LE)) { + SIGNED_VALUE a = recv, b = obj; + + if (a <= b) { + val = Qtrue; + } + else { + val = Qfalse; + } + } + else { + /* other */ + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idLE, recv); + } + +#line 2353 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_le +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_le);}}} +INSN_ENTRY(opt_gt){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_gt"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_gt 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_gt_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_gt)); +{ +#line 1715 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_GT)) { + SIGNED_VALUE a = recv, b = obj; + + if (a > b) { + val = Qtrue; + } + else { + val = Qfalse; + } + } + else { + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idGT, recv); + } + +#line 2394 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_gt +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_gt);}}} +INSN_ENTRY(opt_ge){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_ge"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_ge 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_ge_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_ge)); +{ +#line 1744 "insns.def" + if (FIXNUM_2_P(recv, obj) && + BASIC_OP_UNREDEFINED_P(BOP_GE)) { + SIGNED_VALUE a = recv, b = obj; + + if (a >= b) { + val = Qtrue; + } + else { + val = Qfalse; + } + } + else { + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idGE, recv); + } + +#line 2435 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_ge +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_ge);}}} +INSN_ENTRY(opt_ltlt){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_ltlt"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_ltlt 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_ltlt_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_ltlt)); +{ +#line 1773 "insns.def" + if (!SPECIAL_CONST_P(recv)) { + if (0) { + } + else if (HEAP_CLASS_OF(recv) == rb_cString && + BASIC_OP_UNREDEFINED_P(BOP_LTLT)) { + val = rb_str_concat(recv, obj); + } + else if (HEAP_CLASS_OF(recv) == rb_cArray && + BASIC_OP_UNREDEFINED_P(BOP_LTLT)) { + val = rb_ary_push(recv, obj); + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idLTLT, recv); + } + +#line 2481 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_ltlt +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_ltlt);}}} +INSN_ENTRY(opt_aref){ +{ + VALUE val; + + VALUE recv = TOPN(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_aref"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_aref 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_aref_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_aref)); +{ +#line 1807 "insns.def" + if (!SPECIAL_CONST_P(recv) && BASIC_OP_UNREDEFINED_P(BOP_AREF)) { + if (HEAP_CLASS_OF(recv) == rb_cArray && FIXNUM_P(obj)) { + val = rb_ary_entry(recv, FIX2LONG(obj)); + } + else if (HEAP_CLASS_OF(recv) == rb_cHash) { + val = rb_hash_aref(recv, obj); + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + CALL_SIMPLE_METHOD(1, idAREF, recv); + } + +#line 2523 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_aref +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_aref);}}} +INSN_ENTRY(opt_aset){ +{ + VALUE val; + + VALUE recv = TOPN(2); + VALUE obj = TOPN(1); + VALUE set = TOPN(0); + DEBUG_ENTER_INSN("opt_aset"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(3); + #define CURRENT_INSN_opt_aset 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_aset_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_aset)); +{ +#line 1837 "insns.def" + if (!SPECIAL_CONST_P(recv) && + BASIC_OP_UNREDEFINED_P(BOP_ASET)) { + if (HEAP_CLASS_OF(recv) == rb_cArray && FIXNUM_P(obj)) { + rb_ary_store(recv, FIX2LONG(obj), set); + val = set; + } + else if (HEAP_CLASS_OF(recv) == rb_cHash) { + rb_hash_aset(recv, obj, set); + val = set; + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + PUSH(obj); + PUSH(set); + CALL_SIMPLE_METHOD(2, idASET, recv); + } + +#line 2570 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_aset +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_aset);}}} +INSN_ENTRY(opt_length){ +{ + VALUE val; + + VALUE recv = TOPN(0); + DEBUG_ENTER_INSN("opt_length"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_opt_length 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_length_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_length)); +{ +#line 1871 "insns.def" + if (!SPECIAL_CONST_P(recv) && + BASIC_OP_UNREDEFINED_P(BOP_LENGTH)) { + if (HEAP_CLASS_OF(recv) == rb_cString) { + val = rb_str_length(recv); + } + else if (HEAP_CLASS_OF(recv) == rb_cArray) { + val = LONG2NUM(RARRAY_LEN(recv)); + } + else if (HEAP_CLASS_OF(recv) == rb_cHash) { + val = INT2FIX(RHASH_SIZE(recv)); + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + INSN_LABEL(normal_dispatch): + PUSH(recv); + CALL_SIMPLE_METHOD(0, idLength, recv); + } + +#line 2614 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_length +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_length);}}} +INSN_ENTRY(opt_succ){ +{ + VALUE val; + + VALUE recv = TOPN(0); + DEBUG_ENTER_INSN("opt_succ"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_opt_succ 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_succ_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_succ)); +{ +#line 1904 "insns.def" + if (SPECIAL_CONST_P(recv)) { + if (FIXNUM_P(recv) && + BASIC_OP_UNREDEFINED_P(BOP_SUCC)) { + const VALUE obj = INT2FIX(1); + /* fixnum + INT2FIX(1) */ + val = (recv + (obj & (~1))); + if ((~(recv ^ obj) & (recv ^ val)) & ((unsigned long)LONG_MAX + 1)) { + val = rb_big_plus(rb_int2big(FIX2LONG(recv)), + rb_int2big(FIX2LONG(obj))); + } + } + else { + goto INSN_LABEL(normal_dispatch); + } + } + else { + if (HEAP_CLASS_OF(recv) == rb_cString && + BASIC_OP_UNREDEFINED_P(BOP_SUCC)) { + val = rb_str_succ(recv); + } + else if (HEAP_CLASS_OF(recv) == rb_cTime && + BASIC_OP_UNREDEFINED_P(BOP_SUCC)) { + val = rb_time_succ(recv); + } + else + { + goto INSN_LABEL(normal_dispatch); + } + } + if (0) { + INSN_LABEL(normal_dispatch): + PUSH(recv); + CALL_SIMPLE_METHOD(0, idSucc, recv); + } + +#line 2672 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_succ +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_succ);}}} +INSN_ENTRY(opt_not){ +{ + VALUE val; + IC ic = (IC)GET_OPERAND(1); + VALUE recv = TOPN(0); + DEBUG_ENTER_INSN("opt_not"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_opt_not 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_not_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_not)); + USAGE_ANALYSIS_OPERAND(BIN(opt_not), 0, ic); +{ +#line 1951 "insns.def" + extern VALUE rb_obj_not(VALUE obj); + NODE *mn = vm_method_search(idNot, CLASS_OF(recv), ic); + + if (check_cfunc(mn, rb_obj_not)) { + val = RTEST(recv) ? Qfalse : Qtrue; + } + else { + PUSH(recv); + CALL_SIMPLE_METHOD(0, idNot, recv); + } + +#line 2707 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_not +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_not);}}} +INSN_ENTRY(opt_regexpmatch1){ +{ + VALUE val; + VALUE r = (VALUE)GET_OPERAND(1); + VALUE obj = TOPN(0); + DEBUG_ENTER_INSN("opt_regexpmatch1"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + POPN(1); + #define CURRENT_INSN_opt_regexpmatch1 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_regexpmatch1_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_regexpmatch1)); + USAGE_ANALYSIS_OPERAND(BIN(opt_regexpmatch1), 0, r); +{ +#line 1975 "insns.def" + val = rb_reg_match(r, obj); + +#line 2733 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_regexpmatch1 +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_regexpmatch1);}}} +INSN_ENTRY(opt_regexpmatch2){ +{ + VALUE val; + + VALUE obj2 = TOPN(1); + VALUE obj1 = TOPN(0); + DEBUG_ENTER_INSN("opt_regexpmatch2"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + POPN(2); + #define CURRENT_INSN_opt_regexpmatch2 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_regexpmatch2_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_regexpmatch2)); +{ +#line 1989 "insns.def" + if (TYPE(obj2) == T_STRING) { + val = rb_reg_match(obj1, obj2); + } + else { + val = rb_funcall(obj2, idEqTilde, 1, obj1); + } + +#line 2764 "vm.inc" + PUSH(val); +#undef CURRENT_INSN_opt_regexpmatch2 +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_regexpmatch2);}}} +INSN_ENTRY(opt_call_c_function){ +{ + rb_insn_func_t funcptr = (rb_insn_func_t)GET_OPERAND(1); + + DEBUG_ENTER_INSN("opt_call_c_function"); + ADD_PC(1+1); + PREFETCH(GET_PC()); + #define CURRENT_INSN_opt_call_c_function 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_opt_call_c_function_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(opt_call_c_function)); + USAGE_ANALYSIS_OPERAND(BIN(opt_call_c_function), 0, funcptr); +{ +#line 2008 "insns.def" + reg_cfp = (funcptr)(th, reg_cfp); + + if (reg_cfp == 0) { + VALUE err = th->errinfo; + th->errinfo = Qnil; + THROW_EXCEPTION(err); + } + + RESTORE_REGS(); + NEXT_INSN(); + +#line 2797 "vm.inc" +#undef CURRENT_INSN_opt_call_c_function +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(opt_call_c_function);}}} +INSN_ENTRY(bitblt){ +{ + VALUE ret; + + + DEBUG_ENTER_INSN("bitblt"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_bitblt 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_bitblt_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(bitblt)); +{ +#line 2031 "insns.def" + ret = rb_str_new2("a bit of bacon, lettuce and tomato"); + +#line 2820 "vm.inc" + PUSH(ret); +#undef CURRENT_INSN_bitblt +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(bitblt);}}} +INSN_ENTRY(answer){ +{ + VALUE ret; + + + DEBUG_ENTER_INSN("answer"); + ADD_PC(1+0); + PREFETCH(GET_PC()); + #define CURRENT_INSN_answer 1 + #define INSN_IS_SC() 0 + #define INSN_LABEL(lab) LABEL_answer_##lab + #define LABEL_IS_SC(lab) LABEL_##lab##_##t + USAGE_ANALYSIS_INSN(BIN(answer)); +{ +#line 2045 "insns.def" + ret = INT2FIX(42); + +#line 2844 "vm.inc" + PUSH(ret); +#undef CURRENT_INSN_answer +#undef INSN_IS_SC +#undef INSN_LABEL +#undef LABEL_IS_SC + END_INSN(answer);}}} + --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/insns.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/insns.inc @@ -0,0 +1,177 @@ +/** -*-c-*- + This file contains YARV instructions list. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/insns.inc.tmpl' + or insns2vm.rb + */ + + +/* BIN : Basic Instruction Name */ +#define BIN(n) YARVINSN_##n + +enum ruby_vminsn_type { + BIN(nop) = 0, + + BIN(getlocal) = 1, + + BIN(setlocal) = 2, + + BIN(getspecial) = 3, + + BIN(setspecial) = 4, + + BIN(getdynamic) = 5, + + BIN(setdynamic) = 6, + + BIN(getinstancevariable) = 7, + + BIN(setinstancevariable) = 8, + + BIN(getclassvariable) = 9, + + BIN(setclassvariable) = 10, + + BIN(getconstant) = 11, + + BIN(setconstant) = 12, + + BIN(getglobal) = 13, + + BIN(setglobal) = 14, + + BIN(putnil) = 15, + + BIN(putself) = 16, + + BIN(putobject) = 17, + + BIN(putspecialobject) = 18, + + BIN(putiseq) = 19, + + BIN(putstring) = 20, + + BIN(concatstrings) = 21, + + BIN(tostring) = 22, + + BIN(toregexp) = 23, + + BIN(newarray) = 24, + + BIN(duparray) = 25, + + BIN(expandarray) = 26, + + BIN(concatarray) = 27, + + BIN(splatarray) = 28, + + BIN(checkincludearray) = 29, + + BIN(newhash) = 30, + + BIN(newrange) = 31, + + BIN(pop) = 32, + + BIN(dup) = 33, + + BIN(dupn) = 34, + + BIN(swap) = 35, + + BIN(reput) = 36, + + BIN(topn) = 37, + + BIN(setn) = 38, + + BIN(adjuststack) = 39, + + BIN(defined) = 40, + + BIN(trace) = 41, + + BIN(defineclass) = 42, + + BIN(send) = 43, + + BIN(invokesuper) = 44, + + BIN(invokeblock) = 45, + + BIN(leave) = 46, + + BIN(finish) = 47, + + BIN(throw) = 48, + + BIN(jump) = 49, + + BIN(branchif) = 50, + + BIN(branchunless) = 51, + + BIN(getinlinecache) = 52, + + BIN(onceinlinecache) = 53, + + BIN(setinlinecache) = 54, + + BIN(opt_case_dispatch) = 55, + + BIN(opt_checkenv) = 56, + + BIN(opt_plus) = 57, + + BIN(opt_minus) = 58, + + BIN(opt_mult) = 59, + + BIN(opt_div) = 60, + + BIN(opt_mod) = 61, + + BIN(opt_eq) = 62, + + BIN(opt_neq) = 63, + + BIN(opt_lt) = 64, + + BIN(opt_le) = 65, + + BIN(opt_gt) = 66, + + BIN(opt_ge) = 67, + + BIN(opt_ltlt) = 68, + + BIN(opt_aref) = 69, + + BIN(opt_aset) = 70, + + BIN(opt_length) = 71, + + BIN(opt_succ) = 72, + + BIN(opt_not) = 73, + + BIN(opt_regexpmatch1) = 74, + + BIN(opt_regexpmatch2) = 75, + + BIN(opt_call_c_function) = 76, + + BIN(bitblt) = 77, + + BIN(answer) = 78, + + VM_INSTRUCTION_SIZE = 79 +}; + --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/insns_info.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/insns_info.inc @@ -0,0 +1,688 @@ +/** -*-c-*- + This file contains instruction information for yarv instruction sequence. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/insns_info.inc.tmpl' + or insns2vm.rb + */ + +#define TS_OFFSET 'O' +#define TS_NUM 'N' +#define TS_LINDEX 'L' +#define TS_DINDEX 'D' +#define TS_VALUE 'V' +#define TS_ID 'I' +#define TS_GENTRY 'G' +#define TS_IC 'C' +#define TS_CDHASH 'H' +#define TS_ISEQ 'S' +#define TS_VARIABLE '.' +#define TS_FUNCPTR 'F' + +static const char *const insn_name_info[] = { + "nop", + "getlocal", + "setlocal", + "getspecial", + "setspecial", + "getdynamic", + "setdynamic", + "getinstancevariable", + "setinstancevariable", + "getclassvariable", + "setclassvariable", + "getconstant", + "setconstant", + "getglobal", + "setglobal", + "putnil", + "putself", + "putobject", + "putspecialobject", + "putiseq", + "putstring", + "concatstrings", + "tostring", + "toregexp", + "newarray", + "duparray", + "expandarray", + "concatarray", + "splatarray", + "checkincludearray", + "newhash", + "newrange", + "pop", + "dup", + "dupn", + "swap", + "reput", + "topn", + "setn", + "adjuststack", + "defined", + "trace", + "defineclass", + "send", + "invokesuper", + "invokeblock", + "leave", + "finish", + "throw", + "jump", + "branchif", + "branchunless", + "getinlinecache", + "onceinlinecache", + "setinlinecache", + "opt_case_dispatch", + "opt_checkenv", + "opt_plus", + "opt_minus", + "opt_mult", + "opt_div", + "opt_mod", + "opt_eq", + "opt_neq", + "opt_lt", + "opt_le", + "opt_gt", + "opt_ge", + "opt_ltlt", + "opt_aref", + "opt_aset", + "opt_length", + "opt_succ", + "opt_not", + "opt_regexpmatch1", + "opt_regexpmatch2", + "opt_call_c_function", + "bitblt", + "answer", + +}; + +static const char *const insn_operand_info[] = { + "", + "L", + "L", + "VN", + "V", + "DN", + "DN", + "I", + "I", + "I", + "I", + "I", + "I", + "G", + "G", + "", + "", + "V", + "N", + "S", + "V", + "N", + "", + "NN", + "N", + "V", + "NN", + "", + "V", + "V", + "N", + "N", + "", + "", + "N", + "", + "", + "N", + "N", + "N", + "NVV", + "N", + "ISN", + "INSNC", + "NSN", + "NN", + "", + "", + "N", + "O", + "O", + "O", + "CO", + "CO", + "O", + "HO", + "", + "", + "", + "", + "", + "", + "C", + "CC", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "C", + "V", + "", + "F", + "", + "", + +}; + +static const int insn_len_info[] = { + 1, + 2, + 2, + 3, + 2, + 3, + 3, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 1, + 3, + 2, + 2, + 3, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 2, + 1, + 1, + 2, + 2, + 2, + 4, + 2, + 4, + 6, + 4, + 3, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 1, + 2, + 1, + 1, + +}; + +#ifdef USE_INSN_RET_NUM +static const int insn_stack_push_num_info[] = { + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 0, + 2, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + +}; +#endif + +#ifdef USE_INSN_STACK_INCREASE +static int +insn_stack_increase(int depth, int insn, VALUE *opes) +{ + switch(insn){ + case BIN(nop):{ + return depth + 0; + } + case BIN(getlocal):{ + return depth + 1; + } + case BIN(setlocal):{ + return depth + -1; + } + case BIN(getspecial):{ + return depth + 1; + } + case BIN(setspecial):{ + return depth + -1; + } + case BIN(getdynamic):{ + return depth + 1; + } + case BIN(setdynamic):{ + return depth + -1; + } + case BIN(getinstancevariable):{ + return depth + 1; + } + case BIN(setinstancevariable):{ + return depth + -1; + } + case BIN(getclassvariable):{ + return depth + 1; + } + case BIN(setclassvariable):{ + return depth + -1; + } + case BIN(getconstant):{ + return depth + 0; + } + case BIN(setconstant):{ + return depth + -2; + } + case BIN(getglobal):{ + return depth + 1; + } + case BIN(setglobal):{ + return depth + -1; + } + case BIN(putnil):{ + return depth + 1; + } + case BIN(putself):{ + return depth + 1; + } + case BIN(putobject):{ + return depth + 1; + } + case BIN(putspecialobject):{ + return depth + 1; + } + case BIN(putiseq):{ + return depth + 1; + } + case BIN(putstring):{ + return depth + 1; + } + case BIN(concatstrings):{ + int inc = 0; + rb_num_t num = FIX2INT(opes[0]); + inc += 1 - num;; + return depth + inc; + } + case BIN(tostring):{ + return depth + 0; + } + case BIN(toregexp):{ + int inc = 0; + rb_num_t cnt = FIX2INT(opes[1]); + inc += 1 - cnt;; + return depth + inc; + } + case BIN(newarray):{ + int inc = 0; + rb_num_t num = FIX2INT(opes[0]); + inc += 1 - num;; + return depth + inc; + } + case BIN(duparray):{ + return depth + 1; + } + case BIN(expandarray):{ + int inc = 0; + rb_num_t num = FIX2INT(opes[0]); + rb_num_t flag = FIX2INT(opes[1]); + inc += num - 1 + (flag & 1 ? 1 : 0);; + return depth + inc; + } + case BIN(concatarray):{ + return depth + -1; + } + case BIN(splatarray):{ + return depth + 0; + } + case BIN(checkincludearray):{ + return depth + 0; + } + case BIN(newhash):{ + int inc = 0; + rb_num_t num = FIX2INT(opes[0]); + inc += 1 - num;; + return depth + inc; + } + case BIN(newrange):{ + return depth + -1; + } + case BIN(pop):{ + return depth + -1; + } + case BIN(dup):{ + return depth + 1; + } + case BIN(dupn):{ + int inc = 0; + rb_num_t n = FIX2INT(opes[0]); + inc += n;; + return depth + inc; + } + case BIN(swap):{ + return depth + 0; + } + case BIN(reput):{ + int inc = 0; + inc += 0;; + return depth + inc; + } + case BIN(topn):{ + int inc = 0; + inc += 1;; + return depth + inc; + } + case BIN(setn):{ + int inc = 0; + inc += 0; + return depth + inc; + } + case BIN(adjuststack):{ + int inc = 0; + rb_num_t n = FIX2INT(opes[0]); + inc -= n; + return depth + inc; + } + case BIN(defined):{ + return depth + 0; + } + case BIN(trace):{ + return depth + 0; + } + case BIN(defineclass):{ + return depth + -1; + } + case BIN(send):{ + int inc = 0; + rb_num_t op_argc = FIX2INT(opes[1]); + rb_num_t op_flag = FIX2INT(opes[3]); + inc += - (op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));; + return depth + inc; + } + case BIN(invokesuper):{ + int inc = 0; + rb_num_t op_argc = FIX2INT(opes[0]); + rb_num_t op_flag = FIX2INT(opes[2]); + inc += - (op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));; + return depth + inc; + } + case BIN(invokeblock):{ + int inc = 0; + rb_num_t num = FIX2INT(opes[0]); + inc += 1 - num;; + return depth + inc; + } + case BIN(leave):{ + return depth + 0; + } + case BIN(finish):{ + return depth + 0; + } + case BIN(throw):{ + return depth + 0; + } + case BIN(jump):{ + return depth + 0; + } + case BIN(branchif):{ + return depth + -1; + } + case BIN(branchunless):{ + return depth + -1; + } + case BIN(getinlinecache):{ + return depth + 1; + } + case BIN(onceinlinecache):{ + return depth + 1; + } + case BIN(setinlinecache):{ + return depth + 0; + } + case BIN(opt_case_dispatch):{ + int inc = 0; + inc += -1;; + return depth + inc; + } + case BIN(opt_checkenv):{ + return depth + 0; + } + case BIN(opt_plus):{ + return depth + -1; + } + case BIN(opt_minus):{ + return depth + -1; + } + case BIN(opt_mult):{ + return depth + -1; + } + case BIN(opt_div):{ + return depth + -1; + } + case BIN(opt_mod):{ + return depth + -1; + } + case BIN(opt_eq):{ + return depth + -1; + } + case BIN(opt_neq):{ + return depth + -1; + } + case BIN(opt_lt):{ + return depth + -1; + } + case BIN(opt_le):{ + return depth + -1; + } + case BIN(opt_gt):{ + return depth + -1; + } + case BIN(opt_ge):{ + return depth + -1; + } + case BIN(opt_ltlt):{ + return depth + -1; + } + case BIN(opt_aref):{ + return depth + -1; + } + case BIN(opt_aset):{ + return depth + -2; + } + case BIN(opt_length):{ + return depth + 0; + } + case BIN(opt_succ):{ + return depth + 0; + } + case BIN(opt_not):{ + return depth + 0; + } + case BIN(opt_regexpmatch1):{ + return depth + 0; + } + case BIN(opt_regexpmatch2):{ + return depth + -1; + } + case BIN(opt_call_c_function):{ + return depth + 0; + } + case BIN(bitblt):{ + return depth + 1; + } + case BIN(answer):{ + return depth + 1; + } + + default: + rb_bug("insn_sp_increase: unreachable"); + } + return 0; +} +#endif + +/* some utilities */ + +static int +insn_len(int insn) +{ + return insn_len_info[insn]; +} + +static const char * +insn_name(int insn) +{ + return insn_name_info[insn]; +} + +static const char * +insn_op_types(int insn) +{ + return insn_operand_info[insn]; +} + +static int +insn_op_type(int insn, int pos) +{ + int len = insn_len(insn) - 1; + if(pos < len){ + return insn_operand_info[insn][pos]; + } + else{ + return 0; + } +} + +#ifdef USE_INSN_RET_NUM +static int +insn_ret_num(int insn) +{ + return insn_stack_push_num_info[insn]; +} +#endif --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/optunifs.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/optunifs.inc @@ -0,0 +1,115 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is for threaded code. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/optunifs.inc.tmpl' + or rb/insns2vm.rb + */ + +/* + static const int UNIFIED_insn_name_1[] = {id, size, ...}; + static const int UNIFIED_insn_name_2[] = {id, size, ...}; + ... + + static const int *const UNIFIED_insn_name[] = {size, + UNIFIED_insn_name_1, + UNIFIED_insn_name_2, ...}; + ... + + static const int *const *const unified_insns_data[] = { + UNIFIED_insn_nameA, + UNIFIED_insn_nameB, ...}; + */ + + + +static const int *const *const unified_insns_data[] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}; + + +#undef GET_INSN_NAME + --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/node_name.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/node_name.inc @@ -0,0 +1,216 @@ + case NODE_METHOD: + return "NODE_METHOD"; + case NODE_FBODY: + return "NODE_FBODY"; + case NODE_CFUNC: + return "NODE_CFUNC"; + case NODE_SCOPE: + return "NODE_SCOPE"; + case NODE_BLOCK: + return "NODE_BLOCK"; + case NODE_IF: + return "NODE_IF"; + case NODE_CASE: + return "NODE_CASE"; + case NODE_WHEN: + return "NODE_WHEN"; + case NODE_OPT_N: + return "NODE_OPT_N"; + case NODE_WHILE: + return "NODE_WHILE"; + case NODE_UNTIL: + return "NODE_UNTIL"; + case NODE_ITER: + return "NODE_ITER"; + case NODE_FOR: + return "NODE_FOR"; + case NODE_BREAK: + return "NODE_BREAK"; + case NODE_NEXT: + return "NODE_NEXT"; + case NODE_REDO: + return "NODE_REDO"; + case NODE_RETRY: + return "NODE_RETRY"; + case NODE_BEGIN: + return "NODE_BEGIN"; + case NODE_RESCUE: + return "NODE_RESCUE"; + case NODE_RESBODY: + return "NODE_RESBODY"; + case NODE_ENSURE: + return "NODE_ENSURE"; + case NODE_AND: + return "NODE_AND"; + case NODE_OR: + return "NODE_OR"; + case NODE_MASGN: + return "NODE_MASGN"; + case NODE_LASGN: + return "NODE_LASGN"; + case NODE_DASGN: + return "NODE_DASGN"; + case NODE_DASGN_CURR: + return "NODE_DASGN_CURR"; + case NODE_GASGN: + return "NODE_GASGN"; + case NODE_IASGN: + return "NODE_IASGN"; + case NODE_IASGN2: + return "NODE_IASGN2"; + case NODE_CDECL: + return "NODE_CDECL"; + case NODE_CVASGN: + return "NODE_CVASGN"; + case NODE_CVDECL: + return "NODE_CVDECL"; + case NODE_OP_ASGN1: + return "NODE_OP_ASGN1"; + case NODE_OP_ASGN2: + return "NODE_OP_ASGN2"; + case NODE_OP_ASGN_AND: + return "NODE_OP_ASGN_AND"; + case NODE_OP_ASGN_OR: + return "NODE_OP_ASGN_OR"; + case NODE_CALL: + return "NODE_CALL"; + case NODE_FCALL: + return "NODE_FCALL"; + case NODE_VCALL: + return "NODE_VCALL"; + case NODE_SUPER: + return "NODE_SUPER"; + case NODE_ZSUPER: + return "NODE_ZSUPER"; + case NODE_ARRAY: + return "NODE_ARRAY"; + case NODE_ZARRAY: + return "NODE_ZARRAY"; + case NODE_VALUES: + return "NODE_VALUES"; + case NODE_HASH: + return "NODE_HASH"; + case NODE_RETURN: + return "NODE_RETURN"; + case NODE_YIELD: + return "NODE_YIELD"; + case NODE_LVAR: + return "NODE_LVAR"; + case NODE_DVAR: + return "NODE_DVAR"; + case NODE_GVAR: + return "NODE_GVAR"; + case NODE_IVAR: + return "NODE_IVAR"; + case NODE_CONST: + return "NODE_CONST"; + case NODE_CVAR: + return "NODE_CVAR"; + case NODE_NTH_REF: + return "NODE_NTH_REF"; + case NODE_BACK_REF: + return "NODE_BACK_REF"; + case NODE_MATCH: + return "NODE_MATCH"; + case NODE_MATCH2: + return "NODE_MATCH2"; + case NODE_MATCH3: + return "NODE_MATCH3"; + case NODE_LIT: + return "NODE_LIT"; + case NODE_STR: + return "NODE_STR"; + case NODE_DSTR: + return "NODE_DSTR"; + case NODE_XSTR: + return "NODE_XSTR"; + case NODE_DXSTR: + return "NODE_DXSTR"; + case NODE_EVSTR: + return "NODE_EVSTR"; + case NODE_DREGX: + return "NODE_DREGX"; + case NODE_DREGX_ONCE: + return "NODE_DREGX_ONCE"; + case NODE_ARGS: + return "NODE_ARGS"; + case NODE_ARGS_AUX: + return "NODE_ARGS_AUX"; + case NODE_OPT_ARG: + return "NODE_OPT_ARG"; + case NODE_POSTARG: + return "NODE_POSTARG"; + case NODE_ARGSCAT: + return "NODE_ARGSCAT"; + case NODE_ARGSPUSH: + return "NODE_ARGSPUSH"; + case NODE_SPLAT: + return "NODE_SPLAT"; + case NODE_TO_ARY: + return "NODE_TO_ARY"; + case NODE_BLOCK_ARG: + return "NODE_BLOCK_ARG"; + case NODE_BLOCK_PASS: + return "NODE_BLOCK_PASS"; + case NODE_DEFN: + return "NODE_DEFN"; + case NODE_DEFS: + return "NODE_DEFS"; + case NODE_ALIAS: + return "NODE_ALIAS"; + case NODE_VALIAS: + return "NODE_VALIAS"; + case NODE_UNDEF: + return "NODE_UNDEF"; + case NODE_CLASS: + return "NODE_CLASS"; + case NODE_MODULE: + return "NODE_MODULE"; + case NODE_SCLASS: + return "NODE_SCLASS"; + case NODE_COLON2: + return "NODE_COLON2"; + case NODE_COLON3: + return "NODE_COLON3"; + case NODE_DOT2: + return "NODE_DOT2"; + case NODE_DOT3: + return "NODE_DOT3"; + case NODE_FLIP2: + return "NODE_FLIP2"; + case NODE_FLIP3: + return "NODE_FLIP3"; + case NODE_ATTRSET: + return "NODE_ATTRSET"; + case NODE_SELF: + return "NODE_SELF"; + case NODE_NIL: + return "NODE_NIL"; + case NODE_TRUE: + return "NODE_TRUE"; + case NODE_FALSE: + return "NODE_FALSE"; + case NODE_ERRINFO: + return "NODE_ERRINFO"; + case NODE_DEFINED: + return "NODE_DEFINED"; + case NODE_POSTEXE: + return "NODE_POSTEXE"; + case NODE_ALLOCA: + return "NODE_ALLOCA"; + case NODE_BMETHOD: + return "NODE_BMETHOD"; + case NODE_MEMO: + return "NODE_MEMO"; + case NODE_IFUNC: + return "NODE_IFUNC"; + case NODE_DSYM: + return "NODE_DSYM"; + case NODE_ATTRASGN: + return "NODE_ATTRASGN"; + case NODE_PRELUDE: + return "NODE_PRELUDE"; + case NODE_LAMBDA: + return "NODE_LAMBDA"; + case NODE_OPTBLOCK: + return "NODE_OPTBLOCK"; --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/vmtc.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/vmtc.inc @@ -0,0 +1,96 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is for threaded code. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/vmtc.inc.tmpl' + or insns2vm.rb + */ + +static const void *const insns_address_table[] = { + LABEL_PTR(nop), + LABEL_PTR(getlocal), + LABEL_PTR(setlocal), + LABEL_PTR(getspecial), + LABEL_PTR(setspecial), + LABEL_PTR(getdynamic), + LABEL_PTR(setdynamic), + LABEL_PTR(getinstancevariable), + LABEL_PTR(setinstancevariable), + LABEL_PTR(getclassvariable), + LABEL_PTR(setclassvariable), + LABEL_PTR(getconstant), + LABEL_PTR(setconstant), + LABEL_PTR(getglobal), + LABEL_PTR(setglobal), + LABEL_PTR(putnil), + LABEL_PTR(putself), + LABEL_PTR(putobject), + LABEL_PTR(putspecialobject), + LABEL_PTR(putiseq), + LABEL_PTR(putstring), + LABEL_PTR(concatstrings), + LABEL_PTR(tostring), + LABEL_PTR(toregexp), + LABEL_PTR(newarray), + LABEL_PTR(duparray), + LABEL_PTR(expandarray), + LABEL_PTR(concatarray), + LABEL_PTR(splatarray), + LABEL_PTR(checkincludearray), + LABEL_PTR(newhash), + LABEL_PTR(newrange), + LABEL_PTR(pop), + LABEL_PTR(dup), + LABEL_PTR(dupn), + LABEL_PTR(swap), + LABEL_PTR(reput), + LABEL_PTR(topn), + LABEL_PTR(setn), + LABEL_PTR(adjuststack), + LABEL_PTR(defined), + LABEL_PTR(trace), + LABEL_PTR(defineclass), + LABEL_PTR(send), + LABEL_PTR(invokesuper), + LABEL_PTR(invokeblock), + LABEL_PTR(leave), + LABEL_PTR(finish), + LABEL_PTR(throw), + LABEL_PTR(jump), + LABEL_PTR(branchif), + LABEL_PTR(branchunless), + LABEL_PTR(getinlinecache), + LABEL_PTR(onceinlinecache), + LABEL_PTR(setinlinecache), + LABEL_PTR(opt_case_dispatch), + LABEL_PTR(opt_checkenv), + LABEL_PTR(opt_plus), + LABEL_PTR(opt_minus), + LABEL_PTR(opt_mult), + LABEL_PTR(opt_div), + LABEL_PTR(opt_mod), + LABEL_PTR(opt_eq), + LABEL_PTR(opt_neq), + LABEL_PTR(opt_lt), + LABEL_PTR(opt_le), + LABEL_PTR(opt_gt), + LABEL_PTR(opt_ge), + LABEL_PTR(opt_ltlt), + LABEL_PTR(opt_aref), + LABEL_PTR(opt_aset), + LABEL_PTR(opt_length), + LABEL_PTR(opt_succ), + LABEL_PTR(opt_not), + LABEL_PTR(opt_regexpmatch1), + LABEL_PTR(opt_regexpmatch2), + LABEL_PTR(opt_call_c_function), + LABEL_PTR(bitblt), + LABEL_PTR(answer), +}; + --- ruby1.9.2-1.9.2.z1.orig/debian/generated-incs/opt_sc.inc +++ ruby1.9.2-1.9.2.z1/debian/generated-incs/opt_sc.inc @@ -0,0 +1,662 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is for threaded code. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/opt_sc.inc.tmpl' + or rb/insns2vm.rb + */ + +#define SC_STATE_SIZE 6 + +#define SCS_XX 1 +#define SCS_AX 2 +#define SCS_BX 3 +#define SCS_AB 4 +#define SCS_BA 5 + +#define SC_ERROR 0xffffffff + +static const VALUE sc_insn_info[][SC_STATE_SIZE] = { + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR}, + { +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR, +SC_ERROR} +}; + +static const VALUE sc_insn_next[] = { + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX, + SCS_XX +}; + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/mkconfig.rb.patch +++ ruby1.9.2-1.9.2.z1/debian/patches/mkconfig.rb.patch @@ -0,0 +1,11 @@ +--- ruby1.9.2-1.9.2.z0.orig/tool/mkconfig.rb ++++ ruby1.9.2-1.9.2.z0/tool/mkconfig.rb +@@ -174,7 +174,7 @@ + print(*v_fast) + print(*v_others) + print < +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: changes name of ruby runtime library to libRUBYNAME-1.9.1.so* from libRUBYNAME.so* + +@DPATCH@ +Index: b/configure.in +=================================================================== +--- a/configure.in 2010-07-20 21:46:15.000000000 +0900 ++++ b/configure.in 2010-07-20 21:46:15.000000000 +0900 +@@ -1702,7 +1702,7 @@ + ;; + esac + +-RUBY_SO_NAME='$(RUBY_INSTALL_NAME)' ++RUBY_SO_NAME='ruby-1.9.1' + LIBRUBY_LDSHARED=$LDSHARED + LIBRUBY_DLDFLAGS=$DLDFLAGS + LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)' +@@ -2019,13 +2019,13 @@ + AC_ARG_WITH(sitedir, + [ --with-sitedir=DIR site libraries in DIR [[LIBDIR/ruby/site_ruby]]], + [sitedir=$withval], +- [sitedir='${libdir}/${RUBY_INSTALL_NAME}/site_ruby']) ++ [sitedir='${libdir}/ruby/site_ruby']) + SITE_DIR=`eval echo \\"${sitedir}\\"` + + AC_ARG_WITH(vendordir, + [ --with-vendordir=DIR vendor libraries in DIR [[LIBDIR/ruby/vendor_ruby]]], + [vendordir=$withval], +- [vendordir='${libdir}/${RUBY_INSTALL_NAME}/vendor_ruby']) ++ [vendordir='${libdir}/ruby/vendor_ruby']) + VENDOR_DIR=`eval echo \\"${vendordir}\\"` + + case "$target_os" in +@@ -2094,7 +2094,7 @@ + AC_ARG_WITH(rubyhdrdir, + AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]), + [rubyhdrdir=$withval], +- [rubyhdrdir='${includedir}/${RUBY_INSTALL_NAME}-${ruby_version}']) ++ [rubyhdrdir='${includedir}/ruby-${ruby_version}']) + + AC_ARG_WITH(sitehdrdir, + [ --with-site-hdrdir=DIR core headers in DIR [INCLUDEDIR]], --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100518_r27464_threading_non-nptl.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100518_r27464_threading_non-nptl.diff @@ -0,0 +1,98 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100518_r27464_threading_non-nptl.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fixes threading issues on non-NPTL platforms. +## DP: backport from upstream. +## DP: git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@27464 +## DP: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542927 +## DP: http://redmine.ruby-lang.org/issues/show/2025 + +@DPATCH@ +Index: b/process.c +=================================================================== +--- a/process.c 2010-07-20 21:45:44.000000000 +0900 ++++ b/process.c 2010-07-20 21:46:19.000000000 +0900 +@@ -2383,9 +2383,6 @@ + + switch (pid = rb_fork(0, 0, 0, Qnil)) { + case 0: +-#ifdef linux +- after_exec(); +-#endif + rb_thread_atfork(); + if (rb_block_given_p()) { + int status; +Index: b/signal.c +=================================================================== +--- a/signal.c 2010-07-20 21:45:44.000000000 +0900 ++++ b/signal.c 2010-07-20 21:46:19.000000000 +0900 +@@ -876,11 +876,7 @@ + trap_ensure(struct trap_arg *arg) + { + /* enable interrupt */ +-#ifdef HAVE_SIGPROCMASK +- sigprocmask(SIG_SETMASK, &arg->mask, NULL); +-#else +- sigsetmask(arg->mask); +-#endif ++ pthread_sigmask(SIG_SETMASK, &arg->mask, NULL); + trap_last_mask = arg->mask; + return 0; + } +@@ -890,11 +886,7 @@ + rb_trap_restore_mask(void) + { + #if USE_TRAP_MASK +-# ifdef HAVE_SIGPROCMASK +- sigprocmask(SIG_SETMASK, &trap_last_mask, NULL); +-# else +- sigsetmask(trap_last_mask); +-# endif ++ pthread_sigmask(SIG_SETMASK, &trap_last_mask, NULL); + #endif + } + +@@ -954,12 +946,8 @@ + } + #if USE_TRAP_MASK + /* disable interrupt */ +-# ifdef HAVE_SIGPROCMASK + sigfillset(&arg.mask); +- sigprocmask(SIG_BLOCK, &arg.mask, &arg.mask); +-# else +- arg.mask = sigblock(~0); +-# endif ++ pthread_sigmask(SIG_BLOCK, &arg.mask, &arg.mask); + + return rb_ensure(trap, (VALUE)&arg, trap_ensure, (VALUE)&arg); + #else +@@ -1014,12 +1002,8 @@ + + #if USE_TRAP_MASK + /* disable interrupt */ +-# ifdef HAVE_SIGPROCMASK + sigfillset(&mask); +- sigprocmask(SIG_BLOCK, &mask, &mask); +-# else +- mask = sigblock(~0); +-# endif ++ pthread_sigmask(SIG_BLOCK, &mask, &mask); + #endif + + oldfunc = ruby_signal(sig, SIG_DFL); +@@ -1030,13 +1014,8 @@ + } + + #if USE_TRAP_MASK +-#ifdef HAVE_SIGPROCMASK + sigdelset(&mask, sig); +- sigprocmask(SIG_SETMASK, &mask, NULL); +-#else +- mask &= ~sigmask(sig); +- sigsetmask(mask); +-#endif ++ pthread_sigmask(SIG_SETMASK, &mask, NULL); + trap_last_mask = mask; + #endif + } --- ruby1.9.2-1.9.2.z1.orig/debian/patches/900_ri_pager.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/900_ri_pager.diff @@ -0,0 +1,21 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 900_ri_pager.dpatch by akira yamada +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: try 'pager' before 'less'. +## DP: See http://redmine.ruby-lang.org/issues/show/1171 + +@DPATCH@ +Index: b/lib/rdoc/ri/display.rb +=================================================================== +--- a/lib/rdoc/ri/display.rb 2010-07-20 21:45:46.000000000 +0900 ++++ b/lib/rdoc/ri/display.rb 2010-07-20 21:46:14.000000000 +0900 +@@ -363,7 +363,7 @@ + + def setup_pager + unless @use_stdout then +- for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq ++ for pager in [ ENV['PAGER'], "pager", "less", "more" ].compact.uniq + return IO.popen(pager, "w") rescue nil + end + @use_stdout = true --- ruby1.9.2-1.9.2.z1.orig/debian/patches/919_common.mk_tweaks.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/919_common.mk_tweaks.diff @@ -0,0 +1,58 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 919_common.mk_tweaks.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Adds more verbosity to the build process. Build parse.o with -Q to +## DP: avoid timeouts on mips(el). Run the testsuite with -v, to see which +## DP: tests are blocking. +## DP: Also run a "watcher", which outputs the result of ps on a regular +## DP: basis. This avoids a timeout on slow arches. + +@DPATCH@ +Index: b/common.mk +=================================================================== +--- a/common.mk 2010-07-20 21:45:45.000000000 +0900 ++++ b/common.mk 2010-07-20 21:46:15.000000000 +0900 +@@ -393,7 +393,7 @@ + test: test-sample btest-ruby test-knownbug + + test-all: +- $(RUNRUBY) "$(srcdir)/test/runner.rb" $(TESTS) ++ $(RUNRUBY) "$(srcdir)/test/runner.rb" -v $(TESTS) + + extconf: $(PREP) + $(MAKEDIRS) "$(EXTCONFDIR)" +@@ -424,6 +424,33 @@ + {$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed + parse.h {$(VPATH)}parse.h: {$(VPATH)}parse.c + ++clean-local:: ++ rm -f start-watch.stamp ++ ++# wait at least 10 secs for gcc to start. ++# then wait for gcc to finish ++# touch -d "1 hour ago" to allow re-running builds without rebuilding parse.o ++start-watcher.stamp: ++ ( n=0 ;\ ++ while [ $$n -lt 10 ]; do \ ++ [ $$(ps aux | grep gcc | grep parse.o | grep -v grep | wc -l) -gt 0 ] && echo "# gcc parse.o started!" && break ;\ ++ n=$$(expr $$n + 1) ;\ ++ sleep 1 ;\ ++ done ;\ ++ [ $$n -eq 60 ] && echo "# gcc never started, exiting." && exit 1 ;\ ++ str="starting..." ;\ ++ while [ "$$str" != "" ]; do \ ++ echo "# running... $$str" ;\ ++ sleep 5 ;\ ++ str=$$(ps aux | grep gcc | grep parse.o | grep -v grep) ;\ ++ done ;\ ++ echo "# watched finished." ; \ ++ touch -d "1 hour ago" start-watcher.stamp ) & ++ ++parse.o: start-watcher.stamp ++ ++parse.o: CFLAGS += -Q ++ + {$(srcdir)}.y.c: + $(YACC) -d $(YFLAGS) -o y.tab.c $(SRC_FILE) + sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new --- ruby1.9.2-1.9.2.z1.orig/debian/patches/revision.h.patch +++ ruby1.9.2-1.9.2.z1/debian/patches/revision.h.patch @@ -0,0 +1,4 @@ +--- ruby1.9.2-1.9.2.z1.orig/revision.h ++++ ruby1.9.2-1.9.2.z1/revision.h +@@ -1 +0,0 @@ +-#define RUBY_REVISION 28524 --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100518_load_libc_libm.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100518_load_libc_libm.diff @@ -0,0 +1,58 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100518_load_libc_libm.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560293 +## DP: ruby1.9.1: test fails to load libc and libm on GNU/kFreeBSD + +@DPATCH@ +Index: b/test/dl/test_base.rb +=================================================================== +--- a/test/dl/test_base.rb 2010-07-20 21:45:44.000000000 +0900 ++++ b/test/dl/test_base.rb 2010-07-20 21:46:19.000000000 +0900 +@@ -1,42 +1,9 @@ + require 'test/unit' + require 'dl' + +-case RUBY_PLATFORM +-when /cygwin/ +- LIBC_SO = "cygwin1.dll" +- LIBM_SO = "cygwin1.dll" +-when /x86_64-linux/ +- LIBC_SO = "/lib64/libc.so.6" +- LIBM_SO = "/lib64/libm.so.6" +-when /linux/ +- libdir = '/lib' +- case [0].pack('L!').size +- when 4 +- # 32-bit ruby +- libdir = '/lib32' if File.directory? '/lib32' +- when 8 +- # 64-bit ruby +- libdir = '/lib64' if File.directory? '/lib64' +- end +- LIBC_SO = File.join(libdir, "libc.so.6") +- LIBM_SO = File.join(libdir, "libm.so.6") +-when /mingw/, /mswin32/ +- LIBC_SO = "msvcrt.dll" +- LIBM_SO = "msvcrt.dll" +-when /darwin/ +- LIBC_SO = "/usr/lib/libc.dylib" +- LIBM_SO = "/usr/lib/libm.dylib" +-when /bsd/ +- LIBC_SO = "/usr/lib/libc.so" +- LIBM_SO = "/usr/lib/libm.so" +-else +- LIBC_SO = ARGV[0] +- LIBM_SO = ARGV[1] +- if( !(LIBC_SO && LIBM_SO) ) +- $stderr.puts("#{$0} ") +- exit +- end +-end ++# hack, but likely more reliable than the original code ++LIBC_SO = Dir::glob('/lib/libc.so.*')[0] ++LIBM_SO = Dir::glob('/lib/libm.so.*')[0] + + module DL + class TestBase < Test::Unit::TestCase --- ruby1.9.2-1.9.2.z1.orig/debian/patches/940_hppa_disable_test_propag_signal.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/940_hppa_disable_test_propag_signal.diff @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 940_hppa_disable_test_propag_signal.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Due to problems with the threads implementation on hppa, this test +## DP: blocks. We disable it on this arch only. +## DP: Closes: #514695. + +@DPATCH@ +Index: b/test/ruby/test_beginendblock.rb +=================================================================== +--- a/test/ruby/test_beginendblock.rb 2010-07-20 21:45:45.000000000 +0900 ++++ b/test/ruby/test_beginendblock.rb 2010-07-20 21:46:16.000000000 +0900 +@@ -1,4 +1,5 @@ + require 'test/unit' ++require 'rbconfig' + require 'tempfile' + require_relative 'envutil' + +@@ -91,6 +92,7 @@ + assert_nil $?.termsig + end + ++ if Config::CONFIG['arch'] != 'hppa-linux' + def test_should_propagate_signaled + ruby = EnvUtil.rubybin + out = IO.popen( +@@ -104,4 +106,5 @@ + assert_nil $?.exitstatus + assert_equal Signal.list["INT"], $?.termsig + end ++ end + end --- ruby1.9.2-1.9.2.z1.orig/debian/patches/configure.in.patch +++ ruby1.9.2-1.9.2.z1/debian/patches/configure.in.patch @@ -0,0 +1,125 @@ +--- ruby1.9.2-1.9.2.z0.orig/configure.in ++++ ruby1.9.2-1.9.2.z0/configure.in +@@ -19,8 +19,6 @@ + [ + BASERUBY="ruby" + ]) +-test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42 || +- BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false" + AC_SUBST(BASERUBY) + + AC_DEFUN([RUBY_MINGW32], +@@ -34,6 +32,9 @@ + ], rb_cv_mingw32=yes,rb_cv_mingw32=no) + rm -f conftest*]) + test "$rb_cv_mingw32" = yes && target_os="mingw32" ++ ]) ++AS_CASE(["$target_os"], [mingw*msvc], [ ++target_os="`echo ${target_os} | sed 's/msvc$//'`" + ])]) + + AC_DEFUN([RUBY_CPPOUTFILE], +@@ -136,9 +137,20 @@ + target platform]), + [target_archs="$withval"], [unset target_archs]) + ++AC_DEFUN([RUBY_DEFAULT_ARCH], [ ++AC_MSG_CHECKING([arch option]) ++AS_CASE([$1], ++ [*64], [ARCH_FLAG=-m64], ++ [[i[3-6]86]], [ARCH_FLAG=-m32], ++ [AC_MSG_ERROR(unknown target architecture: $target_archs)] ++ ) ++AC_MSG_RESULT([$ARCH_FLAG]) ++]) ++ + AC_DEFUN([RUBY_UNIVERSAL_ARCH], [ +-test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed 's/ *-arch *[^ ]*//g'` +-test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *[^ ]*//g'` ++# RUBY_UNIVERSAL_ARCH begin ++test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` ++test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` + unset ARCH_FLAG universal_binary universal_archnames + if test ${target_archs+set}; then + AC_MSG_CHECKING([target architectures]) +@@ -172,6 +184,14 @@ + target_cpu=universal + real_cross_compiling=$cross_compiling + else ++ if test x"$target_cpu" != x"${target_archs}"; then ++ echo 'int main(){return 0;}' > conftest.c ++ if $CC $CFLAGS $ARCH_FLAG conftest.c > /dev/null 2>&1; then ++ rm -f conftest.* a.out ++ else ++ RUBY_DEFAULT_ARCH("$target_archs") ++ fi ++ fi + target_cpu=${target_archs} + fi + AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"]) +@@ -210,6 +230,7 @@ + else + rb_cv_target_archs=${target_archs} + fi ++# RUBY_UNIVERSAL_ARCH end + ]) + + AC_ARG_ENABLE(load-relative, +@@ -264,6 +285,9 @@ + + RUBY_MINGW32 + RUBY_UNIVERSAL_ARCH ++if test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "$universal_binary" = no; then ++ RUBY_DEFAULT_ARCH("$target_cpu") ++fi + + AC_CHECK_TOOL(RANLIB, ranlib, :) + AC_CHECK_TOOL(AR, ar) +@@ -921,6 +945,10 @@ + AC_DEFINE(BROKEN_SETREGID, 1) + ac_cv_sizeof_rlim_t=8], + [freebsd*], [ LIBS="-lm $LIBS" ++ ac_cv_func_getpeername=no ++ ac_cv_func_getsockname=no ++ ac_cv_func_shutdown=no ++ ac_cv_func_close=no + ], + [dragonfly*], [ LIBS="-lm $LIBS" + ], +@@ -1114,6 +1142,10 @@ + rb_cv_broken_glibc_ia64_erfc=no)]) + AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no]) + ++AS_CASE(["$target_os"],[freebsd*],[ ++ AC_DEFINE(BROKEN_CLOSE) ++ AC_REPLACE_FUNCS(close) ++ ]) + AC_REPLACE_FUNCS(dup2 memmove strerror\ + strchr strstr crypt flock\ + isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \ +@@ -1135,7 +1167,7 @@ + setitimer setruid seteuid setreuid setresuid setproctitle socketpair\ + setrgid setegid setregid setresgid issetugid pause lchown lchmod\ + getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\ +- getpriority getrlimit setrlimit sysconf \ ++ getpriority getrlimit setrlimit sysconf close\ + dlopen sigprocmask sigaction sigsetjmp _setjmp _longjmp\ + setsid telldir seekdir fchmod cosh sinh tanh log2 round\ + setuid setgid daemon select_large_fdset setenv unsetenv\ +@@ -2039,6 +2071,7 @@ + AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]), + [RUBY_SO_NAME=$withval], [RUBY_SO_NAME='$(RUBY_BASE_NAME)']) + ++RUBY_SO_NAME='ruby-1.9.2' + LIBRUBY_LDSHARED=$LDSHARED + LIBRUBY_DLDFLAGS=$DLDFLAGS + LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)' +@@ -2387,7 +2420,7 @@ + rubyw_install_name='$(RUBYW_INSTALL_NAME)' + ]) + +-rubylibprefix='${libdir}/${RUBY_BASE_NAME}' ++rubylibprefix='${libdir}/ruby' + AC_ARG_WITH(rubylibprefix, + AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]), + [rubylibprefix=$withval]) --- ruby1.9.2-1.9.2.z1.orig/debian/patches/202_gem_default_dir.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/202_gem_default_dir.diff @@ -0,0 +1,31 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 202_gem_default_dir.dpatch by akira yamada +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Adjust the default RubyGems directory. + +@DPATCH@ +Index: b/lib/rubygems/defaults.rb +=================================================================== +--- a/lib/rubygems/defaults.rb 2010-07-20 21:45:46.000000000 +0900 ++++ b/lib/rubygems/defaults.rb 2010-07-20 21:46:13.000000000 +0900 +@@ -15,13 +15,17 @@ + ## + # Default home directory path to be used if an alternate value is not + # specified in the environment +- ++ # ++ # Debian patch: search order of this directory. ++ # 1. GEM_HOME enviroment variable ++ # (Using this, Gems are to be installed in any path as you like) ++ # 2. /var/lib/gems/{ruby version} (This is the default path in Debian system) + def self.default_dir + if defined? RUBY_FRAMEWORK_VERSION then + File.join File.dirname(ConfigMap[:sitedir]), 'Gems', + ConfigMap[:ruby_version] + else +- ConfigMap[:sitelibdir].sub(%r'/site_ruby/(?=[^/]+)', '/gems/') ++ File.join('/var/lib', 'gems', ConfigMap[:ruby_version]) + end + end + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/series +++ ruby1.9.2-1.9.2.z1/debian/patches/series @@ -0,0 +1,29 @@ +#201_gem_prelude.diff +#202_gem_default_dir.diff +#203_adjust_base_of_search_path.diff +#900_ri_pager.diff +#902_define_YAML_in_yaml_stringio.rb.diff +#904_linux_target_os.diff +#919_common.mk_tweaks.diff +#931_libruby_suffix.diff +#940_hppa_disable_test_propag_signal.diff +#940_test_thread_mutex_sync_shorter.diff +#940_test_file_exhaustive_fails_as_root.diff +#940_test_priority_fails.diff +#090729_fix_Makefile_deps.diff +#090803_exclude_rdoc.diff +#091207_test_dl_free_func.diff +#100327_r24850_bootstraptest_test_thread.diff +#100503_r27337_rb_string_value_cstr.diff +#100503_r27356_queue_race.diff.diff +#100518_r26515_free_rb_classext.diff +#100518_load_libc_libm.diff +#100518_r23483_suppress_pathname_warning.diff +#100518_r27464_threading_non-nptl.diff +909_update_lib_README.diff +100731_disable-tests.diff +#903_skip_base_ruby_check.diff +configure.in.patch +configure.patch +mkconfig.rb.patch +version.h.patch --- ruby1.9.2-1.9.2.z1.orig/debian/patches/903_skip_base_ruby_check.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/903_skip_base_ruby_check.diff @@ -0,0 +1,18 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 903_skip_base_ruby_check.dpatch by akira yamada +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: skip host ruby check. (this packages uses pre-generated files.) + +@DPATCH@ +--- a/configure.in ++++ b/configure.in +@@ -19,8 +19,6 @@ AC_ARG_WITH(baseruby, + [ + BASERUBY="ruby" + ]) +-test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42 || +- BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false" + AC_SUBST(BASERUBY) + + AC_DEFUN([RUBY_MINGW32], --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100503_r27337_rb_string_value_cstr.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100503_r27337_rb_string_value_cstr.diff @@ -0,0 +1,26 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100503_r27337_rb_string_value_cstr.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: back-ported from the upstream r27337 +## DP: string.c (rb_string_value_cstr): make NUL terminated if it is not done. + +@DPATCH@ +Index: b/string.c +=================================================================== +--- a/string.c 2010-07-20 21:45:44.000000000 +0900 ++++ b/string.c 2010-07-20 21:46:18.000000000 +0900 +@@ -1265,10 +1265,12 @@ + { + VALUE str = rb_string_value(ptr); + char *s = RSTRING_PTR(str); ++ long len = RSTRING_LEN(str); + +- if (!s || RSTRING_LEN(str) != strlen(s)) { ++ if (!s || memchr(s, 0, len)) { + rb_raise(rb_eArgError, "string contains null byte"); + } ++ if (s[len]) rb_str_modify(str); + return s; + } + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/091207_test_dl_free_func.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/091207_test_dl_free_func.diff @@ -0,0 +1,28 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 091207_test_dl_free_func.dpatch by akira yamada +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +Index: b/test/dl/test_cptr.rb +=================================================================== +--- a/test/dl/test_cptr.rb 2010-07-20 21:45:45.000000000 +0900 ++++ b/test/dl/test_cptr.rb 2010-07-20 21:46:17.000000000 +0900 +@@ -16,14 +16,14 @@ + include DL + @libc = dlopen(LIBC_SO) + @libm = dlopen(LIBM_SO) +- free = CFunc.new(@libc['free'], TYPE_VOID, 'free') ++ free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') + ptr = CPtr.malloc(4) + ptr.free = free + free.ptr + ptr.free.ptr + End + +- free = CFunc.new(@libc['free'], TYPE_VOID, 'free') ++ free = CFunc.new(DL::RUBY_FREE, TYPE_VOID, 'free') + ptr = CPtr.malloc(4) + ptr.free = free + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/090803_exclude_rdoc.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/090803_exclude_rdoc.diff @@ -0,0 +1,20 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 090803_exclude_rdoc.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +Index: b/common.mk +=================================================================== +--- a/common.mk 2010-07-20 21:46:17.000000000 +0900 ++++ b/common.mk 2010-07-20 21:46:17.000000000 +0900 +@@ -323,7 +323,7 @@ + + rdoc: $(PROGRAM) PHONY + @echo Generating RDoc documentation +- $(RUNRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RDOCOUT)" "$(srcdir)" ++ $(RUNRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RDOCOUT)" --exclude mkconfig.rb --exclude test_ --exclude bm_ --exclude "tool/make-snapshot" "$(srcdir)" + + what-where-doc: no-install-doc + no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc --- ruby1.9.2-1.9.2.z1.orig/debian/patches/090729_fix_Makefile_deps.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/090729_fix_Makefile_deps.diff @@ -0,0 +1,24 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 090729_fix_Makefile_deps.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: In some cases, during 'make install', ruby1.9 will be removed +## DP: because make will detect that one of the INSNS targets need to +## DP: be regenerated. +## DP: We add a dependency between do-install-nodoc and $(PROGRAM) to +## DP: rebuild ruby1.9 if it was removed. + +@DPATCH@ +Index: b/common.mk +=================================================================== +--- a/common.mk 2010-07-20 21:46:15.000000000 +0900 ++++ b/common.mk 2010-07-20 21:46:17.000000000 +0900 +@@ -171,7 +171,7 @@ + + install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc + pre-install-nodoc:: pre-install-local pre-install-ext +-do-install-nodoc: $(PREP) ++do-install-nodoc: $(PREP) $(PROGRAM) + $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --mantype="$(MANTYPE)" + post-install-nodoc:: post-install-local post-install-ext + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/940_test_thread_mutex_sync_shorter.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/940_test_thread_mutex_sync_shorter.diff @@ -0,0 +1,23 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 940_test_thread_mutex_sync_shorter.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: test_mutex_synchronize takes a very long time on slow arches, +## DP: especially hppa (since it doesn't support NPTL). +## DP: The patch makes the test shorter by creating less concurrent +## DP: threads. Closes: #514696. + +@DPATCH@ +Index: b/test/ruby/test_thread.rb +=================================================================== +--- a/test/ruby/test_thread.rb 2010-07-20 21:45:45.000000000 +0900 ++++ b/test/ruby/test_thread.rb 2010-07-20 21:46:16.000000000 +0900 +@@ -30,7 +30,7 @@ + def test_mutex_synchronize + m = Mutex.new + r = 0 +- max = 100 ++ max = 10 + (1..max).map{ + Thread.new{ + i=0 --- ruby1.9.2-1.9.2.z1.orig/debian/patches/909_update_lib_README.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/909_update_lib_README.diff @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 809_update_lib_README.dpatch by Lucas Nussbaum +## +## Fixes bug #414727 +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +--- a/lib/README ++++ b/lib/README +@@ -27,7 +27,6 @@ logger.rb simple logging utility + mathn.rb extended math operation (obsolete) + matrix.rb matrix calculation library + minitest/unit minimal drop-in replacement for test-unit +-mkmf.rb Makefile maker + monitor.rb exclusive region monitor for thread + mutex_m.rb mutex mixin + net/ftp.rb ftp access --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100503_r27356_queue_race.diff.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100503_r27356_queue_race.diff.diff @@ -0,0 +1,136 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100503_r27356_queue_race.diff.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Back port from the upstream r27356. +## DP: remove code that kicks waiting thread twice, which caused race and +## DP: deadlock. [ruby-core:25537] + +@DPATCH@ +Index: b/lib/thread.rb +=================================================================== +--- a/lib/thread.rb 2010-07-20 21:45:44.000000000 +0900 ++++ b/lib/thread.rb 2010-07-20 21:46:18.000000000 +0900 +@@ -144,7 +144,6 @@ + # Pushes +obj+ to the queue. + # + def push(obj) +- t = nil + @mutex.synchronize{ + @que.push obj + begin +@@ -154,10 +153,6 @@ + retry + end + } +- begin +- t.run if t +- rescue ThreadError +- end + end + + # +@@ -176,8 +171,8 @@ + # thread isn't suspended, and an exception is raised. + # + def pop(non_block=false) +- while true +- @mutex.synchronize{ ++ @mutex.synchronize{ ++ while true + if @que.empty? + raise ThreadError, "queue empty" if non_block + @waiting.push Thread.current +@@ -185,8 +180,8 @@ + else + return @que.shift + end +- } +- end ++ end ++ } + end + + # +@@ -289,7 +284,6 @@ + # until space becomes available. + # + def push(obj) +- t = nil + @mutex.synchronize{ + while true + break if @que.length < @max +@@ -305,11 +299,6 @@ + retry + end + } +- +- begin +- t.run if t +- rescue ThreadError +- end + end + + # +@@ -327,7 +316,6 @@ + # + def pop(*args) + retval = super +- t = nil + @mutex.synchronize { + if @que.length < @max + begin +@@ -338,10 +326,6 @@ + end + end + } +- begin +- t.run if t +- rescue ThreadError +- end + retval + end + +Index: b/test/thread/test_queue.rb +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ b/test/thread/test_queue.rb 2010-07-20 21:46:18.000000000 +0900 +@@ -0,0 +1,38 @@ ++require 'test/unit' ++require 'thread' ++ ++class TestQueue < Test::Unit::TestCase ++ def test_queue ++ grind(5, 1000, 15, Queue) ++ end ++ ++ def test_sized_queue ++ grind(5, 1000, 15, SizedQueue, 1000) ++ end ++ ++ def grind(num_threads, num_objects, num_iterations, klass, *args) ++ from_workers = klass.new(*args) ++ to_workers = klass.new(*args) ++ ++ workers = (1..num_threads).map { ++ Thread.new { ++ while object = to_workers.pop ++ from_workers.push object ++ end ++ } ++ } ++ ++ Thread.new { ++ num_iterations.times { ++ num_objects.times { to_workers.push 99 } ++ num_objects.times { from_workers.pop } ++ } ++ }.join ++ ++ num_threads.times { to_workers.push nil } ++ workers.each { |t| t.join } ++ ++ assert 0, from_workers.size ++ assert 0, to_workers.size ++ end ++end --- ruby1.9.2-1.9.2.z1.orig/debian/patches/203_adjust_base_of_search_path.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/203_adjust_base_of_search_path.diff @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 203_adjust_base_of_search_path.dpatch by akira yamada +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: change basedir of search path to /usr/lib/ruby from /usr/lib/ruby1.9. + +@DPATCH@ +Index: b/configure.in +=================================================================== +--- a/configure.in 2010-07-20 21:45:46.000000000 +0900 ++++ b/configure.in 2010-07-20 21:46:13.000000000 +0900 +@@ -2003,7 +2003,7 @@ + rubyw_install_name="$RUBYW_INSTALL_NAME" + ;; + esac +-RUBY_LIB_PREFIX=`eval echo \\"${libdir}/${RUBY_INSTALL_NAME}\\"` ++RUBY_LIB_PREFIX=`eval echo \\"${libdir}/ruby\\"` + + AC_ARG_WITH(ruby-version, + [ --with-ruby-version=STR ruby version string for version specific directories [[full]] (full|minor|STR)], +Index: b/mkconfig.rb +=================================================================== +--- a/mkconfig.rb 2010-07-20 21:45:46.000000000 +0900 ++++ b/mkconfig.rb 2010-07-20 21:46:13.000000000 +0900 +@@ -140,7 +140,7 @@ + print(*v_fast) + print(*v_others) + print < +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: YAML module is needed. (It is a workaround for generating RDoc.) + +@DPATCH@ +Index: b/lib/yaml/stringio.rb +=================================================================== +--- a/lib/yaml/stringio.rb 2010-07-20 21:45:46.000000000 +0900 ++++ b/lib/yaml/stringio.rb 2010-07-20 21:46:14.000000000 +0900 +@@ -49,6 +49,7 @@ + end + end + ++ module YAML + # + # Class method for creating streams + # +@@ -78,6 +79,6 @@ + end + io + end +- ++ end + end + --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100518_r23483_suppress_pathname_warning.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100518_r23483_suppress_pathname_warning.diff @@ -0,0 +1,24 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100503_r27356_queue_race.diff.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## +## DP: Author: akr +## DP: Date: Mon May 18 12:41:08 2009 +0000 +## DP: git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +## DP: Backport from trunk. Fixes Debian bug #566612 (libruby1.9.1: A warning has shown in pathname.rb) + +@DPATCH@ +Index: b/lib/pathname.rb +=================================================================== +--- a/lib/pathname.rb 2010-07-20 21:45:44.000000000 +0900 ++++ b/lib/pathname.rb 2010-07-20 21:46:19.000000000 +0900 +@@ -267,7 +267,7 @@ + ensure + Thread.current[:pathname_sub_matchdata] = old + end +- yield *args ++ yield(*args) + } + else + path = @path.sub(pattern, *rest) --- ruby1.9.2-1.9.2.z1.orig/debian/patches/configure.patch +++ ruby1.9.2-1.9.2.z1/debian/patches/configure.patch @@ -0,0 +1,168 @@ +--- ruby1.9.2-1.9.2.z0.orig/configure ++++ ruby1.9.2-1.9.2.z0/configure +@@ -2685,8 +2685,6 @@ + + fi + +-test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42 || +- BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false" + + + +@@ -2870,6 +2868,8 @@ + + + ++ ++ + # Check whether --enable-load-relative was given. + if test "${enable_load_relative+set}" = set; then : + enableval=$enable_load_relative; load_relative=$enableval +@@ -4457,9 +4457,18 @@ + *) : + ;; + esac ++case "$target_os" in #( ++ mingw*msvc) : + +-test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed 's/ *-arch *^ *//g'` +-test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *^ *//g'` ++target_os="`echo ${target_os} | sed 's/msvc$//'`" ++ ;; #( ++ *) : ++ ;; ++esac ++ ++# RUBY_UNIVERSAL_ARCH begin ++test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-arch *^ *//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` ++test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *^ *//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` + unset ARCH_FLAG universal_binary universal_archnames + if test ${target_archs+set}; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking target architectures" >&5 +@@ -4505,6 +4514,28 @@ + target_cpu=universal + real_cross_compiling=$cross_compiling + else ++ if test x"$target_cpu" != x"${target_archs}"; then ++ echo 'int main(){return 0;}' > conftest.c ++ if $CC $CFLAGS $ARCH_FLAG conftest.c > /dev/null 2>&1; then ++ rm -f conftest.* a.out ++ else ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking arch option" >&5 ++$as_echo_n "checking arch option... " >&6; } ++case "$target_archs" in #( ++ *64) : ++ ARCH_FLAG=-m64 ;; #( ++ i[3-6]86) : ++ ARCH_FLAG=-m32 ;; #( ++ *) : ++ as_fn_error "unknown target architecture: $target_archs" "$LINENO" 5 ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ARCH_FLAG" >&5 ++$as_echo "$ARCH_FLAG" >&6; } ++ ++ fi ++ fi + target_cpu=${target_archs} + fi + case "$target" in #( +@@ -4559,7 +4590,25 @@ + else + rb_cv_target_archs=${target_archs} + fi ++# RUBY_UNIVERSAL_ARCH end ++ ++if test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "$universal_binary" = no; then ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking arch option" >&5 ++$as_echo_n "checking arch option... " >&6; } ++case "$target_cpu" in #( ++ *64) : ++ ARCH_FLAG=-m64 ;; #( ++ i[3-6]86) : ++ ARCH_FLAG=-m32 ;; #( ++ *) : ++ as_fn_error "unknown target architecture: $target_archs" "$LINENO" 5 ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ARCH_FLAG" >&5 ++$as_echo "$ARCH_FLAG" >&6; } + ++fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +@@ -9231,6 +9280,10 @@ + ac_cv_sizeof_rlim_t=8 ;; #( + freebsd*) : + LIBS="-lm $LIBS" ++ ac_cv_func_getpeername=no ++ ac_cv_func_getsockname=no ++ ac_cv_func_shutdown=no ++ ac_cv_func_close=no + ;; #( + dragonfly*) : + LIBS="-lm $LIBS" +@@ -12667,6 +12720,34 @@ + ;; + esac + ++case "$target_os" in #( ++ freebsd*) : ++ ++ $as_echo "#define BROKEN_CLOSE 1" >>confdefs.h ++ ++ for ac_func in close ++do : ++ ac_fn_c_check_func "$LINENO" "close" "ac_cv_func_close" ++if test "x$ac_cv_func_close" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_CLOSE 1 ++_ACEOF ++ ++else ++ case " $LIBOBJS " in ++ *" $ac_func.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ++ ;; ++esac ++ ++fi ++done ++ ++ ++ ;; #( ++ *) : ++ ;; ++esac + for ac_func in dup2 memmove strerror\ + strchr strstr crypt flock\ + isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \ +@@ -12736,7 +12817,7 @@ + setitimer setruid seteuid setreuid setresuid setproctitle socketpair\ + setrgid setegid setregid setresgid issetugid pause lchown lchmod\ + getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\ +- getpriority getrlimit setrlimit sysconf \ ++ getpriority getrlimit setrlimit sysconf close\ + dlopen sigprocmask sigaction sigsetjmp _setjmp _longjmp\ + setsid telldir seekdir fchmod cosh sinh tanh log2 round\ + setuid setgid daemon select_large_fdset setenv unsetenv\ +@@ -15233,6 +15314,7 @@ + fi + + ++RUBY_SO_NAME='ruby-1.9.2' + LIBRUBY_LDSHARED=$LDSHARED + LIBRUBY_DLDFLAGS=$DLDFLAGS + LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)' +@@ -15757,7 +15839,7 @@ + ;; + esac + +-rubylibprefix='${libdir}/${RUBY_BASE_NAME}' ++rubylibprefix='${libdir}/ruby' + + # Check whether --with-rubylibprefix was given. + if test "${with_rubylibprefix+set}" = set; then : --- ruby1.9.2-1.9.2.z1.orig/debian/patches/940_test_priority_fails.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/940_test_priority_fails.diff @@ -0,0 +1,21 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 940_test_priority_fails.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: test_priority (in test_thread.rb) fails. +## DP: See http://redmine.ruby-lang.org/issues/show/1169 + +@DPATCH@ +Index: b/test/ruby/test_thread.rb +=================================================================== +--- a/test/ruby/test_thread.rb 2010-07-20 21:46:16.000000000 +0900 ++++ b/test/ruby/test_thread.rb 2010-07-20 21:46:17.000000000 +0900 +@@ -115,7 +115,7 @@ + } + end + +- def test_priority ++ def est_priority + c1 = c2 = 0 + t1 = Thread.new { loop { c1 += 1 } } + t1.priority = -1 --- ruby1.9.2-1.9.2.z1.orig/debian/patches/940_test_file_exhaustive_fails_as_root.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/940_test_file_exhaustive_fails_as_root.diff @@ -0,0 +1,92 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 940_test_file_exhaustive_fails_as_root.dpatch by Lucas Nussbaum +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: several tests fail when building as root. +## DP: see http://redmine.ruby-lang.org/issues/show/1170 + +@DPATCH@ +Index: b/test/ruby/test_file_exhaustive.rb +=================================================================== +--- a/test/ruby/test_file_exhaustive.rb 2010-07-20 21:45:45.000000000 +0900 ++++ b/test/ruby/test_file_exhaustive.rb 2010-07-20 21:46:16.000000000 +0900 +@@ -142,6 +142,7 @@ + + def test_readable_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0200, @file) + assert(!(File.readable?(@file))) + File.chmod(0600, @file) +@@ -151,6 +152,7 @@ + + def test_readable_real_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0200, @file) + assert(!(File.readable_real?(@file))) + File.chmod(0600, @file) +@@ -171,6 +173,7 @@ + + def test_writable_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0400, @file) + assert(!(File.writable?(@file))) + File.chmod(0600, @file) +@@ -180,6 +183,7 @@ + + def test_writable_real_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0400, @file) + assert(!(File.writable_real?(@file))) + File.chmod(0600, @file) +@@ -238,6 +242,7 @@ + + def test_owned_p ## xxx + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 # only needed on HPPA? + assert(File.owned?(@file)) + assert(File.grpowned?(@file)) + end +@@ -613,6 +618,7 @@ + + def test_stat_readable_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0200, @file) + assert(!(File::Stat.new(@file).readable?)) + File.chmod(0600, @file) +@@ -621,6 +627,7 @@ + + def test_stat_readable_real_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0200, @file) + assert(!(File::Stat.new(@file).readable_real?)) + File.chmod(0600, @file) +@@ -639,6 +646,7 @@ + + def test_stat_writable_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0400, @file) + assert(!(File::Stat.new(@file).writable?)) + File.chmod(0600, @file) +@@ -647,6 +655,7 @@ + + def test_stat_writable_real_p + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 + File.chmod(0400, @file) + assert(!(File::Stat.new(@file).writable_real?)) + File.chmod(0600, @file) +@@ -698,6 +707,7 @@ + + def test_stat_owned_p ## xxx + return if /cygwin|mswin|bccwin|mingw|emx/ =~ RUBY_PLATFORM ++ return if Process.euid == 0 # only needed on HPPA? + assert(File::Stat.new(@file).owned?) + assert(File::Stat.new(@file).grpowned?) + end --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100731_disable-tests.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100731_disable-tests.diff @@ -0,0 +1,103 @@ +Author: Lucas Nussbaum +Description: Disable two tests that are problematic on FreeBSD +Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=590002 + +First test is discussed in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543805 +and upstream bug http://redmine.ruby-lang.org/issues/show/2008 + +Second test is discussed in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542927 +and upstream bug http://redmine.ruby-lang.org/issues/show/2025 +It was fixed, but is now timing dependent. + +--- a/bootstraptest/test_io.rb ++++ b/bootstraptest/test_io.rb +@@ -8,28 +8,28 @@ assert_finish 5, %q{ + w.write "a" + }, '[ruby-dev:31866]' + +-assert_finish 10, %q{ +- begin +- require "io/nonblock" +- require "timeout" +- timeout(3) do +- r, w = IO.pipe +- w.nonblock? +- w.nonblock = true +- w.write_nonblock("a" * 100000) +- w.nonblock = false +- t1 = Thread.new { w.write("b" * 4096) } +- t2 = Thread.new { w.write("c" * 4096) } +- sleep 0.5 +- r.sysread(4096).length +- sleep 0.5 +- r.sysread(4096).length +- t1.join +- t2.join +- end +- rescue LoadError, TimeoutError, NotImplementedError +- end +-}, '[ruby-dev:32566]' ++#assert_finish 10, %q{ ++# begin ++# require "io/nonblock" ++# require "timeout" ++# timeout(3) do ++# r, w = IO.pipe ++# w.nonblock? ++# w.nonblock = true ++# w.write_nonblock("a" * 100000) ++# w.nonblock = false ++# t1 = Thread.new { w.write("b" * 4096) } ++# t2 = Thread.new { w.write("c" * 4096) } ++# sleep 0.5 ++# r.sysread(4096).length ++# sleep 0.5 ++# r.sysread(4096).length ++# t1.join ++# t2.join ++# end ++# rescue LoadError, TimeoutError, NotImplementedError ++# end ++#}, '[ruby-dev:32566]' + + assert_finish 1, %q{ + r, w = IO.pipe +--- a/bootstraptest/test_thread.rb ++++ b/bootstraptest/test_thread.rb +@@ -216,21 +216,21 @@ assert_equal 'true', %{ + end + } + +-assert_equal 'ok', %{ +- open("zzz.rb", "w") do |f| +- f.puts <<-END +- begin +- Thread.new { fork { GC.start } }.join +- pid, status = Process.wait2 +- $result = status.success? ? :ok : :ng +- rescue NotImplementedError +- $result = :ok +- end +- END +- end +- require "./zzz.rb" +- $result +-} ++#assert_equal 'ok', %{ ++# open("zzz.rb", "w") do |f| ++# f.puts <<-END ++# begin ++# Thread.new { fork { GC.start } }.join ++# pid, status = Process.wait2 ++# $result = status.success? ? :ok : :ng ++# rescue NotImplementedError ++# $result = :ok ++# end ++# END ++# end ++# require "./zzz.rb" ++# $result ++#} + + assert_finish 3, %{ + th = Thread.new {sleep 2} --- ruby1.9.2-1.9.2.z1.orig/debian/patches/201_gem_prelude.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/201_gem_prelude.diff @@ -0,0 +1,24 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 201_gem_prelude.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Adjust the default RubyGems directory. + +@DPATCH@ +Index: b/gem_prelude.rb +=================================================================== +--- a/gem_prelude.rb 2010-07-20 21:45:46.000000000 +0900 ++++ b/gem_prelude.rb 2010-07-20 21:46:13.000000000 +0900 +@@ -117,10 +117,10 @@ + File.join File.dirname(ConfigMap[:sitedir]), 'Gems', + ConfigMap[:ruby_version] + elsif RUBY_VERSION > '1.9' then +- File.join(ConfigMap[:libdir], ConfigMap[:ruby_install_name], 'gems', ++ File.join('/var/lib', 'gems', + ConfigMap[:ruby_version]) + else +- File.join(ConfigMap[:libdir], ruby_engine, 'gems', ++ File.join('/var/lib', 'gems', + ConfigMap[:ruby_version]) + end + end --- ruby1.9.2-1.9.2.z1.orig/debian/patches/version.h.patch +++ ruby1.9.2-1.9.2.z1/debian/patches/version.h.patch @@ -0,0 +1,11 @@ +--- ruby1.9.2-1.9.2.z0.orig/version.h ++++ ruby1.9.2-1.9.2.z0/version.h +@@ -4,7 +4,7 @@ + + #define RUBY_VERSION_MAJOR 1 + #define RUBY_VERSION_MINOR 9 +-#define RUBY_VERSION_TEENY 1 ++#define RUBY_VERSION_TEENY 2 + #define RUBY_RELEASE_YEAR 2010 + #define RUBY_RELEASE_MONTH 7 + #define RUBY_RELEASE_DAY 2 --- ruby1.9.2-1.9.2.z1.orig/debian/patches/904_linux_target_os.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/904_linux_target_os.diff @@ -0,0 +1,20 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 904_linux_target_os.dpatch.dpatch by Matthias Klose +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Robustify check for target_os + +@DPATCH@ +Index: b/configure.in +=================================================================== +--- a/configure.in 2010-07-20 21:46:14.000000000 +0900 ++++ b/configure.in 2010-07-20 21:46:15.000000000 +0900 +@@ -104,7 +104,7 @@ + fi + + AC_CANONICAL_TARGET +-target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'` ++target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnulp$/linux/;s/linux-gnu/linux-/'` + ac_install_sh='' # unusable for extension libraries. + + ifelse(currently,disabled, [ --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100518_r26515_free_rb_classext.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100518_r26515_free_rb_classext.diff @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## DP: Fixes: +## DP: http://redmine.ruby-lang.org/issues/show/1392 +## DP: Object#extend leaks memory on Ruby 1.9.1 +## DP: +## DP: https://bugs.launchpad.net/ubuntu/+source/ruby1.9.1/+bug/514322 +## DP: Ruby 1.9.1 leaks memory when using Module.include +## DP: +## DP: https://bugs.launchpad.net/ubuntu/+source/ruby1.9.1/+bug/529011 +## DP: Ruby 1.9.1 leaks memory in Lucid on AMD64 +## DP: +## DP: commit f8d96940549f573c92c1d1aa74270ac4099871d8 +## DP: Author: wanabe +## DP: Date: Sun Jan 31 04:33:33 2010 +0000 +## DP: +## DP: * gc.c (obj_free): free rb_classext_t of eigenclass. [Bug #1392] +## DP: +## DP: +## DP: git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@26515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +## DP: +@DPATCH@ +Index: b/gc.c +=================================================================== +--- a/gc.c 2010-07-20 21:45:44.000000000 +0900 ++++ b/gc.c 2010-07-20 21:46:19.000000000 +0900 +@@ -1905,6 +1905,7 @@ + break; + case T_ICLASS: + /* iClass shares table with the module */ ++ xfree(RANY(obj)->as.klass.ptr); + break; + + case T_FLOAT: --- ruby1.9.2-1.9.2.z1.orig/debian/patches/100327_r24850_bootstraptest_test_thread.diff +++ ruby1.9.2-1.9.2.z1/debian/patches/100327_r24850_bootstraptest_test_thread.diff @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 100327_r24850_bootstraptest_test_thread.dpatch by Daigo Moriwaki +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Back port from the upstream r24850, fixing a test failure. + +@DPATCH@ +Index: b/bootstraptest/test_thread.rb +=================================================================== +--- a/bootstraptest/test_thread.rb 2010-07-20 21:45:44.000000000 +0900 ++++ b/bootstraptest/test_thread.rb 2010-07-20 21:46:18.000000000 +0900 +@@ -188,18 +188,18 @@ + Thread.current[:a] + }.value + Thread.current[:a] + } +-assert_equal %q{100}, %q{ ++assert_normal_exit %q{ + begin + 100.times do |i| + begin +- Thread.start(Thread.current) {|u| u.raise } ++ th = Thread.start(Thread.current) {|u| u.raise } + raise + rescue + ensure ++ th.join + end + end + rescue +- 100 + end + }, '[ruby-dev:31371]' + --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/testrb1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/testrb1.9.2.1 @@ -0,0 +1,60 @@ +.\" DO NOT MODIFY THIS FILE! it was generated by rd2 +.TH testrb1.9 1 "December 2003" +.SH NAME +.PP +testrb1.9 \- Automatic runnter for Test::Unit of Ruby +.SH SYNOPSIS +.PP +testrb1.9 [options] [\-\- untouched arguments] test ... +.SH DESCRIPTION +.PP +testrb1.9 loads and runs unit\-tests. If test is directory name, testrb1.9 +testrb1.9 traverses the directory. +.SH OPTIONS +.TP +.fi +.B +\-r, \-\-runner=RUNNER +Use the given RUNNER. (t[k], c[onsole], g[tk], f[ox]) +.TP +.fi +.B +\-a, \-\-add=TORUN +Add TORUN to the list of things to run; can be a file or a directory. +.TP +.fi +.B +\-p, \-\-pattern=PATTERN +Match files to collect against PATTERN. (default pattern is +/\\Atest_.*\\.rb\\Z/.) +.TP +.fi +.B +\-n, \-\-name=NAME +Runs tests matching NAME. (patterns may be used.) +.TP +.fi +.B +\-t, \-\-testcase=TESTCASE +Runs tests in TestCases matching TESTCASE. (patterns may be used.) +.TP +.fi +.B +\-v, \-\-verbose=[LEVEL] +Set the output level (default is verbose). (p[rogress], n[ormal], +v[erbose], s[ilent]) +.TP +.fi +.B +\-\- +Stop processing options so that the remaining options will be passed to +the test. +.TP +.fi +.B +\-h, \-\-help +Display help. +.SH AUTHOR +.PP +This manpage was contributed by akira yamada + --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/ri1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/ri1.9.2.1 @@ -0,0 +1,82 @@ +.\" DO NOT MODIFY THIS FILE! it was generated by rd2 +.TH ri1.9 1 "April 2005" +.SH NAME +.PP +ri1.9 \- Ruby Information at your fingertips +.SH SYNOPSIS +.PP +ri1.9 [options] [names...] +.SH DESCRIPTION +.PP +\fIri1.9\fP displaies information on Ruby classes, modules, and methods. +You can give the names of classes or methods to see their documentation. +Partial names may be given: if the names match more than +one entity, a list will be shown, otherwise details on +that entity will be displayed. +.PP +Nested classes and modules can be specified using the normal +Name::Name notation, and instance methods can be distinguished +from class methods using "." (or "#") instead of "::". +.PP +For example: +.nf +\& ri1.9 File +\& ri1.9 File.new +\& ri1.9 F.n +\& ri1.9 zip +.fi +.PP +Note that shell quoting may be required for method names +containing punctuation: +.nf +\& ri1.9 'Array.[]' +\& ri1.9 compact\\! +.fi +.SH OPTIONS +.TP +.fi +.B +\-\-classes, \-c +Display the names of classes and modules we know about. +.TP +.fi +.B +\-\-doc\-dir, \-d dirname +A directory to search for documentation. If not specified, we search the +standard rdoc/ri directories. +.TP +.fi +.B +\-\-format, \-f name +Format to use when displaying output: ansi, bs, html, plain, simple. Use +'bs' (backspace) with most pager programs. To use ANSI, either also use +the \-T option, or tell your pager to allow control characters. (for +example using the \-R option to less.) +.TP +.fi +.B +\-\-list\-names, \-l +List all the names known to RDoc, one per line. +.TP +.fi +.B +\-\-no\-pager, \-T +Send output directly to stdout. +.TP +.fi +.B +\-\-width, \-w width +Set the width of the output. +.TP +.fi +.B +\-\-version, \-v +Display the version of ri1.9. +.TP +.fi +.B +\-\-help, \-h +Display help. +.PP +Options may also be passed in the 'RI' environment variable + --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/rake1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/rake1.9.2.1 @@ -0,0 +1,24 @@ +.TH RAKE1.9 "1" "July 2006" "ruby 1.9.0" "User Commands" +.SH NAME +rake1.9 \- a ruby build program with capabilities similar to make +.SH SYNOPSIS +.IP +rake1.9 [-f rakefile] [options] targets... +.IP +rake1.9 \-\-help +.IP +rake1.9 \-\-version +.fi +.SH DESCRIPTION +.B rake1.9 +is a simple ruby build program with capabilities similar to make. +This is a basic help message containing pointers to more information. +.PP +Further help: +.TP +rake1.9 --help +list all 'rake1.9' options +.PP +Further information: +.IP +http://rake.rubyforge.org/ --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/rdoc1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/rdoc1.9.2.1 @@ -0,0 +1,210 @@ +.\" DO NOT MODIFY THIS FILE! it was generated by rd2 +.TH rdoc1.9 1 "May 2007" +.SH NAME +.PP +rdoc1.9 \- Generate documentation from Ruby script files +.SH SYNOPSIS +.nf +\& rdoc1.9 [options] [names...] +.fi +.SH DESCRIPTION +.PP +Files are parsed, and the information they contain collected, before any +output is produced. This allows cross references between all files to be +resolved. If a name is a directory, it is traversed. If no names are +specified, all Ruby files in the current directory (and subdirectories) are +processed. +.PP +Available output formatters: chm, html, ri, xml +.PP +For information on where the output goes, use: +.nf +\& rdoc \-\-help\-output +.fi +.SH OPTIONS +.TP +.fi +.B +\-\-accessor, \-A accessorname[,..] +comma separated list of additional class methods that should be treated +like 'attr_reader' and friends. Option may be repeated. Each accessorname +may have '=text' appended, in which case that text appears where the +r/w/rw appears for normal accessors. +.TP +.fi +.B +\-\-all, \-a +include all methods (not just public) in the output. +.TP +.fi +.B +\-\-charset, \-c charset +specifies HTML character\-set +.TP +.fi +.B +\-\-debug, \-D +displays lots on internal stuff +.TP +.fi +.B +\-\-diagram, \-d +generate diagrams showing modules and classes. You need dot V1.8.6 or +later to use the \-\-diagram option correctly. Dot is available from +. +.TP +.fi +.B +\-\-exclude, \-x pattern +do not process files or directories matching pattern. Files given +explicitly on the command line will never be excluded. +.TP +.fi +.B +\-\-extension, \-E new=old +treat files ending with .new as if they ended with .old. Using '\-E cgi=rb' +will cause xxx.cgi to be parsed as a Ruby file +.TP +.fi +.B +\-\-fileboxes, \-F +classes are put in boxes which represents files, where these classes +reside. Classes shared between more than one file are shown with list of +files that sharing them. Silently discarded if \-\-diagram is not given +Experimental. +.TP +.fi +.B +\-\-fmt, \-f formatname +set the output formatter (see below). +.TP +.fi +.B +\-\-help, \-h +print usage. +.TP +.fi +.B +\-\-help\-output, \-O +explain the various output options. +.TP +.fi +.B +\-\-image\-format, \-I gif|png|jpg|jpeg +sets output image format for diagrams. Can be png, gif, jpeg, jpg. If this +option is omitted, png is used. Requires \-\-diagram. +.TP +.fi +.B +\-\-include, \-i dir[,dir...] +set (or add to) the list of directories to be searched when satisfying +:include: requests. Can be used more than once. +.TP +.fi +.B +\-\-inline\-source, \-S +show method source code inline, rather than via a popup link. +.TP +.fi +.B +\-\-line\-numbers, \-N +include line numbers in the source code +.TP +.fi +.B +\-\-main, \-m name +name will be the initial page displayed. +.TP +.fi +.B +\-\-merge, \-M +when creating ri output, merge processed classes into previously +documented classes of the name name. +.TP +.fi +.B +\-\-one\-file, \-1 +put all the output into a single file. +.TP +.fi +.B +\-\-op, \-o dir +set the output directory. +.TP +.fi +.B +\-\-opname, \-n name +set the name of the output. Has no effect for HTML. +.TP +.fi +.B +\-\-promiscuous, \-p +When documenting a file that contains a module or class also defined in +other files, show all stuff for that module/class in each files page. By +default, only show stuff defined in that particular file. +.TP +.fi +.B +\-\-quiet, \-q +don't show progress as we parse. +.TP +.fi +.B +\-\-ri, \-r +generate output for use by 'ri.' The files are stored in the '.rdoc' +directory under your home directory unless overridden by a subsequent \-\-op +parameter, so no special privileges are needed. +.TP +.fi +.B +\-\-ri\-site, \-R +generate output for use by 'ri.' The files are stored in a site\-wide +directory, making them accessible to others, so special privileges are +needed. +.TP +.fi +.B +\-\-ri\-system, \-Y +generate output for use by 'ri.' The files are stored in a system\-level +directory, making them accessible to others, so special privileges are +needed. This option is intended to be used during Ruby installations. +.TP +.fi +.B +\-\-show\-hash, \-H +a name of the form #name in a comment is a possible hyperlink to an +instance method name. When displayed, the '#' is removed unless this +option is specified. +.TP +.fi +.B +\-\-style, \-s stylesheet\-url +specifies the URL of a separate stylesheet. +.TP +.fi +.B +\-\-tab\-width, \-w n +set the width of tab characters (default 8). +.TP +.fi +.B +\-\-template, \-T template\-name +set the template used when generating output. +.TP +.fi +.B +\-\-title, \-t text +set text as the title for the output. +.TP +.fi +.B +\-\-version, \-v +display RDoc's version. +.TP +.fi +.B +\-\-webcvs, \-W url +specify a URL for linking to a web frontend to CVS. If the URL contains a +'%s', the name of the current file will be substituted; if the URL doesn't +contain a '%s', the filename will be appended to it. + --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/erb1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/erb1.9.2.1 @@ -0,0 +1,72 @@ +.TH ERB1.9 1 "April 2003" +.SH NAME +.PP +erb \- an embedded Ruby language interpreter +.SH SYNOPSIS +.PP +erb1.9 [switches] [inputfile] +.SH DESCRIPTION +.PP +erb interprets a Ruby code embedded text file. For example, erb +enables you to embed a Ruby code to a HTML file. +A Ruby block starts with `<%' and ends with `%>'. erb replaces +the block with its output. +If `<%' is followed by `=', eRuby replaces the block with a value +of the block. +If `<%' is followed by `#', the block is ignored as a comment. +.SH OPTIONS +.PP + +.TP +.fi +.B +\-x +print ruby script +.TP +.fi +.B +\-n +print ruby script with line number +.TP +.fi +.B +\-v +enables verbose mode +.TP +.fi +.B +\-d +set debugging flags (set $DEBUG to true) +.TP +.fi +.B +\-r library +load a library +.TP +.fi +.B +\-K kcode +specifies KANJI code\-set (euc or sjis) or UTF\-8 (utf8) +.TP +.fi +.B +\-S safe_level +set $SAFE (0..4) +.TP +.fi +.B +\-T trim_mode +specify trim_mode (0..2) +.TP +.fi +.B +\-P +disregard the lin which starts in "%" +.SH SEE ALSO +.PP +eruby(1) +.SH AUTHOR +.PP +This document stands on eruby(1) which is written by Shugo Maeda +. + --- ruby1.9.2-1.9.2.z1.orig/debian/manpages/irb1.9.2.1 +++ ruby1.9.2-1.9.2.z1/debian/manpages/irb1.9.2.1 @@ -0,0 +1,506 @@ +.TH IRB1.9 "1" "December 2002" +.SH NAME +irb1.9 \- interactive ruby +.SH SYNOPSIS +.B irb +[\fIoptions\fR] +.SH DESCRIPTION +.PP +irb stands for `interactive ruby'. irb is a tool to execute interactively +ruby expressions read from stdin. +Use of irb is easy if you know ruby. Executing irb, prompts are +displayed as follows. Then, enter expression of ruby. A input is +executed when it is syntacticaly completed. + +.nf +\& $ irb1.9 +\& irb(main):001:0> 1+2 +\& 3 +\& irb(main):002:0> class Foo +\& irb(main):003:1> def foo +\& irb(main):004:2> print 1 +\& irb(main):005:2> end +\& irb(main):006:1> end +\& nil +\& irb(main):007:0> +.fi + +And, Readline extesion module can be used with irb. Using Readline +is the standard default action if Readline is installed. +.SH OPTIONS + +.PP + +.TP +.fi +.B +\-f +suppress read ~/.irbrc +.TP +.fi +.B +\-m +bc mode (fraction or matrix are available) +.TP +.fi +.B +\-d +set $DEBUG to true (same as `ruby \-d') +.TP +.fi +.B +\-r load\-module +same as `ruby \-r' +.TP +.fi +.B +\-\-inspect +uses `inspect' for output (the default except bc mode) +.TP +.fi +.B +\-\-noinspect +doesn't uses inspect for output +.TP +.fi +.B +\-\-readline +uses Readline extension module +.TP +.fi +.B +\-\-noreadline +doesn't use Readline extension module +.TP +.fi +.B +\-\-prompt prompt\-mode +.TP +.fi +.B +\-\-prompt\-mode prompt\-mode +switches prompt mode. Pre\-defined prompt modes are +`default', `simple', `xmp' and `inf\-ruby' +.TP +.fi +.B +\-\-inf\-ruby\-mode +uses prompt appreciate for inf\-ruby\-mode on emacs. +Suppresses \-\-readline. +.TP +.fi +.B +\-\-simple\-prompt +simple prompt mode +.TP +.fi +.B +\-\-noprompt +no prompt +.TP +.fi +.B +\-\-tracer +display trace for each execution of commands. +.TP +.fi +.B +\-\-back\-trace\-limit n +displayes backtrace top n and tail n. The default +value is 16. +.TP +.fi +.B +\-\-irb_debug n +sets internal debug level to n (It shouldn't be used) +.TP +.fi +.B +\-v, \-\-version +prints the version of irb +.SH CONFIGURATIONS + +.PP +irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist +irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'. +The following is altanative to the command line option. To use them +type as follows in an irb session. + +.nf +\& IRB.conf[:IRB_NAME]="irb" +\& IRB.conf[:MATH_MODE]=false +\& IRB.conf[:USE_TRACER]=false +\& IRB.conf[:USE_LOADER]=false +\& IRB.conf[:IGNORE_SIGINT]=true +\& IRB.conf[:IGNORE_EOF]=false +\& IRB.conf[:INSPECT_MODE]=nil +\& IRB.conf[:IRB_RC] = nil +\& IRB.conf[:BACK_TRACE_LIMIT]=16 +\& IRB.conf[:USE_LOADER] = false +\& IRB.conf[:USE_READLINE] = nil +\& IRB.conf[:USE_TRACER] = false +\& IRB.conf[:IGNORE_SIGINT] = true +\& IRB.conf[:IGNORE_EOF] = false +\& IRB.conf[:PROMPT_MODE] = :DEFALUT +\& IRB.conf[:PROMPT] = {...} +\& IRB.conf[:DEBUG_LEVEL]=0 +\& IRB.conf[:VERBOSE]=true +.fi +.SH Customizing prompt + +.PP +To costomize the prompt you set a variable + +.nf +\& IRB.conf[:PROMPT] +.fi + +For example, describe as follows in `.irbrc'. + +.nf +\& IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode +\& :PROMPT_I => nil, # normal prompt +\& :PROMPT_S => nil, # prompt for continuated strings +\& :PROMPT_C => nil, # prompt for continuated statement +\& :RETURN => " ==>%s\\n" # format to return value +\& } +.fi + +Then, invoke irb with the above prompt mode by + +.nf +\& $ irb1.9 \-\-prompt my\-prompt +.fi + +Or add the following in `.irbrc'. + +.nf +\& IRB.conf[:PROMPT_MODE] = :MY_PROMPT +.fi + +Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format. +In the prompt specification, some special strings are available. + +.nf +\& %N command name which is running +\& %m to_s of main object (self) +\& %M inspect of main object (self) +\& %l type of string(", ', /, ]), `]' is inner %w[...] +\& %NNi indent level. NN is degits and means as same as printf("%NNd"). +\& It can be ommited +\& %NNn line number. +\& %% % +.fi +For instance, the default prompt mode is defined as follows: +IRB.conf[:PROMPT_MODE][:DEFAULT] = { +.TP +.fi +.B +PROMPT_I => "%N(%m):%03n:%i> ", +.TP +.fi +.B +PROMPT_S => "%N(%m):%03n:%i%l ", +.TP +.fi +.B +PROMPT_C => "%N(%m):%03n:%i* ", +.TP +.fi +.B +RETURN => "%s\\n"} +RETURN is used to printf. +.SH Configurating subirb + +.PP +The command line option or IRB.conf specify the default behavior of +(sub)irb. On the other hand, each conf of in the next sction `6. Command' +is used to individually configurate (sub)irb. +If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after +execution of that proc under giving the context of irb as its +aregument. By this mechanism each subirb can be configurated. +.SH Command + +.PP +For irb commands, both simple name and `irb_'\-prefixed name are prepared. +.TP +.fi +.B +exit, quit, irb_exit +Quits (sub)irb. +if you've done cb (see below), exit from the binding mode. + +.TP +.fi +.B +conf, irb_context +Displays current configuration. Modifing the configuration is +achieved by sending message to `conf'. +.TP +.fi +.B +conf.back_trace_limit +Sets display lines of backtrace as top n and tail n. +The default value is 16. +.TP +.fi +.B +conf.debug_level = N +Sets debug level of irb. +.TP +.fi +.B +conf.ignore_eof = true/false +Whether ^D (control\-d) will be ignored or not. +If false is set, ^D means quit. +.TP +.fi +.B +conf.ignore_sigint= true/false +Whether ^C (control\-c) will be ignored or not. +If false is set, ^D means quit. If true, +.nf +\& during input: cancel inputing then return to top level. +\& during execute: abondon current execution. +.fi +.TP +.fi +.B +conf.inf_ruby_mode = true/false +Whether inf\-ruby\-mode or not. The default value is false. +.TP +.fi +.B +conf.inspect_mode = true/false/nil +Specifies inspect mode. +true: display inspect +false: display to_s +nil: inspect mode in non math mode, +.nf +\& non inspect mode in math mode. +.fi +.TP +.fi +.B +conf.irb_level +The level of cb. +.TP +.fi +.B +conf.math_mode +Whether bc mode or not. +.TP +.fi +.B +conf.use_loader = true/false +Whether irb's own file reader method is used when load/require or not. +This mode is globaly affected (irb wide). +.TP +.fi +.B +conf.prompt_c +prompt for a continuating statement (e.g, immediately after of `if') +.TP +.fi +.B +conf.prompt_i +standard prompt +.TP +.fi +.B +conf.prompt_s +prompt for a continuating string +.TP +.fi +.B +conf.rc +Whether ~/.irbrc is read or not. +.TP +.fi +.B +conf.use_prompt = true/false +Prompting or not. +.TP +.fi +.B +conf.use_readline = true/false/nil +Whether readline is used or not. +true: uses +false: doen't use +nil: intends to use readline except for inf\-reuby\-mode (default) +.TP +.fi +.B +conf.verbose=T/F +Whether verbose messages are display or not. +.TP +.fi +.B +cb, irb_change_binding [obj] +Enter new binding which has a distinct scope of local variables. +If obj is given, obj will be self. +.TP +.fi +.B +irb [obj] +Invoke subirb. If obj is given, obj will be self. +.TP +.fi +.B +jobs, irb_jobs +List of subirb +.TP +.fi +.B +fg n, irb_fg n +Switch into specified subirb. The following is candidates of n: +.nf +\& irb number +\& thhread +\& irb object +\& self(obj which is specified of irb obj) +.fi +.TP +.fi +.B +kill n, irb_kill n +Kill subirb. The means of n is as same as the case of irb_fg. +.SH System variable + +.PP + +.TP +.fi +.B +_ +The latest value of evaluation (it is local) +.SH Session Example + +.PP +.nf +\& $ irb1.9 +\& irb(main):001:0> irb # invoke subirb +\& irb#1(main):001:0> jobs # list of subirbs +\& #0\->irb on main (# : stop) +\& #1\->irb#1 on main (# : running) +\& nil +\& irb#1(main):002:0> fg 0 # switch job +\& nil +\& irb(main):002:0> class Foo;end +\& nil +\& irb(main):003:0> irb Foo # invoke subirb which has the +.fi +.nf +\& # context of Foo +.fi +.nf +\& irb#2(Foo):001:0> def foo # define Foo#foo +\& irb#2(Foo):002:1> print 1 +\& irb#2(Foo):003:1> end +\& nil +\& irb#2(Foo):004:0> fg 0 # switch job +\& nil +\& irb(main):004:0> jobs # list of job +\& #0\->irb on main (# : running) +\& #1\->irb#1 on main (# : stop) +\& #2\->irb#2 on Foo (# : stop) +\& nil +\& irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely +\& ["foo"] +\& irb(main):006:0> fg 2 # switch job +\& nil +\& irb#2(Foo):005:0> def bar # define Foo#bar +\& irb#2(Foo):006:1> print "bar" +\& irb#2(Foo):007:1> end +\& nil +\& irb#2(Foo):010:0> Foo.instance_methods +\& ["bar", "foo"] +\& irb#2(Foo):011:0> fg 0 +\& nil +\& irb(main):007:0> f = Foo.new +\& # +\& irb(main):008:0> irb f # invoke subirb which has the +.fi +.nf +\& # context of f (instance of Foo) +.fi +.nf +\& irb#3(#):001:0> jobs +\& #0\->irb on main (# : stop) +\& #1\->irb#1 on main (# : stop) +\& #2\->irb#2 on Foo (# : stop) +\& #3\->irb#3 on # (# : running) +\& nil +\& irb#3(#):002:0> foo # evaluate f.foo +\& 1nil +\& irb#3(#):003:0> bar # evaluate f.bar +\& barnil +\& irb#3(#):004:0> kill 1, 2, 3# kill job +\& nil +\& irb(main):009:0> jobs +\& #0\->irb on main (# : running) +\& nil +\& irb(main):010:0> exit # exit +.fi +.SH Restrictions + +.PP +Because irb evaluates the inputs immediately after the imput is +syntactically completed, irb gives slight different result than +directly use ruby. Known difference is pointed out here. +.SH Declaration of the local variable + +.PP +The following causes an error in ruby: + +.nf +\& eval "foo = 0" +\& foo +\& \-\- +\& \-:2: undefined local variable or method `foo' for # (NameError) +\& \-\-\- +\& NameError +.fi + +Though, the above will successfully done by irb. + +.nf +\& >> eval "foo = 0" +.fi +.nf +\& => 0 +\& >> foo +\& => 0 +.fi + +Ruby evaluates a code after reading entire of code and determination +of the scope of local variables. On the other hand, irb do +immediately. More precisely, irb evaluate at first + +.nf +\& evel "foo = 0" +.fi + +then foo is defined on this timing. It is because of this +incompatibility. +If you'd like to detect those differences, begin...end can be used: + +.nf +\& >> begin +\& ?> eval "foo = 0" +\& >> foo +\& >> end +\& NameError: undefined local variable or method `foo' for # +\& (irb):3 +\& (irb_local_binding):1:in `eval' +.fi +.SH Here\-document + +.PP +Implementation of Here\-document is incomplete. +.SH Symbol + +.PP +Irb can not always recognize a symbol as to be Symbol. Concretely, an +expression have completed, however Irb regard it as continuation line. +