Merge from ruby_1_8.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
knu 2008-05-29 11:23:36 +00:00
parent 0570e27b47
commit f3589dd1fd
12 changed files with 94 additions and 4 deletions

View file

@ -1,3 +1,9 @@
Thu May 29 20:07:45 2008 Akinori MUSHA <knu@iDaemons.org>
* configure.in, win32/Makefile.sub, mkconfig.rb, instruby.rb,
ruby.c, lib/mkmf.rb, README.EXT, README.EXT.ja: Backport the
vendor_ruby directory support.
Wed May 28 17:54:29 2008 Akinori MUSHA <knu@iDaemons.org> Wed May 28 17:54:29 2008 Akinori MUSHA <knu@iDaemons.org>
* string.c (rb_str_start_with): Remove an unused variable. * string.c (rb_str_start_with): Remove an unused variable.

19
NEWS
View file

@ -9,6 +9,25 @@ with all sufficient information, see the ChangeLog file.
== Changes since the 1.8.6 release == Changes since the 1.8.6 release
=== Configuration changes
* vendor_ruby directory
A new library directory named `vendor_ruby' is introduced in
addition to `site_ruby'. The idea is to separate libraries
installed by the package system (`vendor') from manually (`site')
installed libraries preventing the former from getting overwritten
by the latter, while preserving the user option to override vendor
libraries with site libraries. (`site_ruby' takes precedence over
`vendor_ruby')
If you are a package maintainer, make each library package configure
the library passing the `--vendor' option to `extconf.rb' so that
the library files will get installed under `vendor_ruby'.
You can change the directory locations using configure options such
as `--with-sitedir=DIR' and `--with-vendordir=DIR'.
=== Library updates (outstanding ones only) === Library updates (outstanding ones only)
* new library * new library

View file

@ -662,6 +662,11 @@ Try generating the Makefile by:
ruby extconf.rb ruby extconf.rb
If the library should be installed under vendor_ruby directory
instead of site_ruby directory, use --vendor option as follows.
ruby extconf.rb --vendor
You don't need this step if you put the extension library under the ext You don't need this step if you put the extension library under the ext
directory of the ruby source tree. In that case, compilation of the directory of the ruby source tree. In that case, compilation of the
interpreter will do this step for you. interpreter will do this step for you.

View file

@ -765,6 +765,12 @@ Makefile
としてください. としてください.
site_ruby ディレクトリでなく、
vendor_ruby ディレクトリにインストールする場合には
以下のように --vendor オプションを加えてください.
ruby extconf.rb --vendor
ディレクトリをext以下に用意した場合にはRuby全体のmakeの時に ディレクトリをext以下に用意した場合にはRuby全体のmakeの時に
自動的にMakefileが生成されますのでこのステップは不要です 自動的にMakefileが生成されますのでこのステップは不要です

View file

@ -294,9 +294,12 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/bcc32/Makefile.sub
\#define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)" \#define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)"
\#define RUBY_SITE_LIB "/lib/ruby/site_ruby" \#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
\#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)" \#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)"
\#define RUBY_VENDOR_LIB "/lib/ruby/vendor_ruby"
\#define RUBY_VENDOR_LIB2 "/lib/ruby/vendor_ruby/$(MAJOR).$(MINOR)"
\#define RUBY_PLATFORM "$(ARCH)-$(OS)" \#define RUBY_PLATFORM "$(ARCH)-$(OS)"
\#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)" \#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
\#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)" \#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
\#define RUBY_VENDOR_ARCHLIB "/lib/ruby/vendor_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
| |
@exit > $@ @exit > $@
@ -409,6 +412,7 @@ s,@EXPORT_PREFIX@,_,;t t
s,@arch@,$(ARCH)-$(OS),;t t s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(OS),;t t s,@sitearch@,$(ARCH)-$(OS),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
s,@vendordir@,$${prefix}/lib/ruby/vendor_ruby,;t t
s,@configure_args@,--enable-shared $(configure_args),;t t s,@configure_args@,--enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t s,@configure_input@,$$configure_input,;t t
s,@srcdir@,$(srcdir),;t t s,@srcdir@,$(srcdir),;t t

View file

@ -1710,9 +1710,28 @@ AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}") AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}") AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}")
AC_ARG_WITH(vendordir,
[ --with-vendordir=DIR vendor libraries in DIR [PREFIX/lib/ruby/vendor_ruby]],
[vendordir=$withval],
[vendordir='${prefix}/lib/ruby/vendor_ruby'])
VENDOR_DIR=`eval echo \\"${vendordir}\\"`
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_VENDOR_LIB_PATH="`expr "$VENDOR_DIR" : "$prefix\(/.*\)"`" ||
RUBY_VENDOR_LIB_PATH="$VENDOR_DIR";;
*)
RUBY_VENDOR_LIB_PATH="$VENDOR_DIR";;
esac
RUBY_VENDOR_LIB_PATH2="${RUBY_VENDOR_LIB_PATH}/${MAJOR}.${MINOR}"
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, "${RUBY_VENDOR_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB2, "${RUBY_VENDOR_LIB_PATH2}")
AC_SUBST(arch)dnl AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl AC_SUBST(sitearch)dnl
AC_SUBST(sitedir)dnl AC_SUBST(sitedir)dnl
AC_SUBST(vendordir)dnl
configure_args=$ac_configure_args configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl AC_SUBST(configure_args)dnl
@ -1725,6 +1744,8 @@ if test "$fat_binary" != no ; then
AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB, AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
"${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}") "${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
AC_DEFINE_UNQUOTED(RUBY_VENDOR_THIN_ARCHLIB,
"${RUBY_VENDOR_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
AC_DEFINE_UNQUOTED(RUBY_PLATFORM, __ARCHITECTURE__ "-${target_os}") AC_DEFINE_UNQUOTED(RUBY_PLATFORM, __ARCHITECTURE__ "-${target_os}")
else else
arch="${target_cpu}-${target_os}" arch="${target_cpu}-${target_os}"
@ -1738,6 +1759,7 @@ esac
AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}") AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}") AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}")
AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, "${RUBY_VENDOR_LIB_PATH2}/${sitearch}")
AC_ARG_WITH(search-path, AC_ARG_WITH(search-path,
[ --with-search-path=DIR specify the additional search path], [ --with-search-path=DIR specify the additional search path],

View file

@ -10,7 +10,7 @@ require 'rbconfig'
dir_config 'zlib' dir_config 'zlib'
if %w'z libz zlib zdll'.find {|z| have_library(z, 'deflateReset')} and if %w'z libz zlib1 zlib zdll'.find {|z| have_library(z, 'deflateReset')} and
have_header('zlib.h') then have_header('zlib.h') then
defines = [] defines = []
@ -22,7 +22,7 @@ if %w'z libz zlib zdll'.find {|z| have_library(z, 'deflateReset')} and
os_code = 'AMIGA' os_code = 'AMIGA'
when /\Aos2[\-_]emx\z/ then when /\Aos2[\-_]emx\z/ then
os_code = 'OS2' os_code = 'OS2'
when 'mswin32', 'mingw32', 'bccwin32' then when /mswin|mingw|bccwin/ then
# NOTE: cygwin should be regarded as Unix. # NOTE: cygwin should be regarded as Unix.
os_code = 'WIN32' os_code = 'WIN32'
else else

View file

@ -213,6 +213,8 @@ rubylibdir = CONFIG["rubylibdir"]
archlibdir = CONFIG["archdir"] archlibdir = CONFIG["archdir"]
sitelibdir = CONFIG["sitelibdir"] sitelibdir = CONFIG["sitelibdir"]
sitearchlibdir = CONFIG["sitearchdir"] sitearchlibdir = CONFIG["sitearchdir"]
vendorlibdir = CONFIG["vendorlibdir"]
vendorarchlibdir = CONFIG["vendorarchdir"]
mandir = File.join(CONFIG["mandir"], "man") mandir = File.join(CONFIG["mandir"], "man")
configure_args = Shellwords.shellwords(CONFIG["configure_args"]) configure_args = Shellwords.shellwords(CONFIG["configure_args"])
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
@ -253,7 +255,7 @@ if $extout
extout = "#$extout" extout = "#$extout"
install?(:ext, :arch, :'ext-arch') do install?(:ext, :arch, :'ext-arch') do
puts "installing extension objects" puts "installing extension objects"
makedirs [archlibdir, sitearchlibdir] makedirs [archlibdir, sitearchlibdir, vendorarchlibdir]
if noinst = CONFIG["no_install_files"] and noinst.empty? if noinst = CONFIG["no_install_files"] and noinst.empty?
noinst = nil noinst = nil
end end
@ -261,7 +263,7 @@ if $extout
end end
install?(:ext, :comm, :'ext-comm') do install?(:ext, :comm, :'ext-comm') do
puts "installing extension scripts" puts "installing extension scripts"
makedirs [rubylibdir, sitelibdir] makedirs [rubylibdir, sitelibdir, vendorlibdir]
install_recursive("#{extout}/common", rubylibdir, :mode => $data_mode) install_recursive("#{extout}/common", rubylibdir, :mode => $data_mode)
end end
end end

View file

@ -51,6 +51,9 @@ $archdir = CONFIG["archdir"]
$sitedir = CONFIG["sitedir"] $sitedir = CONFIG["sitedir"]
$sitelibdir = CONFIG["sitelibdir"] $sitelibdir = CONFIG["sitelibdir"]
$sitearchdir = CONFIG["sitearchdir"] $sitearchdir = CONFIG["sitearchdir"]
$vendordir = CONFIG["vendordir"]
$vendorlibdir = CONFIG["vendorlibdir"]
$vendorarchdir = CONFIG["vendorarchdir"]
$mswin = /mswin/ =~ RUBY_PLATFORM $mswin = /mswin/ =~ RUBY_PLATFORM
$bccwin = /bccwin/ =~ RUBY_PLATFORM $bccwin = /bccwin/ =~ RUBY_PLATFORM
@ -76,11 +79,14 @@ end
INSTALL_DIRS = [ INSTALL_DIRS = [
[dir_re('commondir'), "$(RUBYCOMMONDIR)"], [dir_re('commondir'), "$(RUBYCOMMONDIR)"],
[dir_re('sitedir'), "$(RUBYCOMMONDIR)"], [dir_re('sitedir'), "$(RUBYCOMMONDIR)"],
[dir_re('vendordir'), "$(RUBYCOMMONDIR)"],
[dir_re('rubylibdir'), "$(RUBYLIBDIR)"], [dir_re('rubylibdir'), "$(RUBYLIBDIR)"],
[dir_re('archdir'), "$(RUBYARCHDIR)"], [dir_re('archdir'), "$(RUBYARCHDIR)"],
[dir_re('sitelibdir'), "$(RUBYLIBDIR)"], [dir_re('sitelibdir'), "$(RUBYLIBDIR)"],
[dir_re('vendorlibdir'), "$(RUBYLIBDIR)"],
[dir_re('sitearchdir'), "$(RUBYARCHDIR)"], [dir_re('sitearchdir'), "$(RUBYARCHDIR)"],
[dir_re('bindir'), "$(BINDIR)"], [dir_re('bindir'), "$(BINDIR)"],
[dir_re('vendorarchdir'), "$(RUBYARCHDIR)"],
] ]
def install_dirs(target_prefix = nil) def install_dirs(target_prefix = nil)
@ -100,6 +106,13 @@ def install_dirs(target_prefix = nil)
['RUBYLIBDIR', '$(rubylibdir)$(target_prefix)'], ['RUBYLIBDIR', '$(rubylibdir)$(target_prefix)'],
['RUBYARCHDIR', '$(archdir)$(target_prefix)'], ['RUBYARCHDIR', '$(archdir)$(target_prefix)'],
] ]
elsif $configure_args.has_key?('--vendor')
dirs = [
['BINDIR', '$(bindir)'],
['RUBYCOMMONDIR', '$(vendordir)$(target_prefix)'],
['RUBYLIBDIR', '$(vendorlibdir)$(target_prefix)'],
['RUBYARCHDIR', '$(vendorarchdir)$(target_prefix)'],
]
else else
dirs = [ dirs = [
['BINDIR', '$(bindir)'], ['BINDIR', '$(bindir)'],

View file

@ -144,6 +144,8 @@ print <<EOS
CONFIG["archdir"] = "$(rubylibdir)/$(arch)" CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)" CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)" CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
CONFIG["topdir"] = File.dirname(__FILE__) CONFIG["topdir"] = File.dirname(__FILE__)
MAKEFILE_CONFIG = {} MAKEFILE_CONFIG = {}
CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup} CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}

7
ruby.c
View file

@ -322,6 +322,13 @@ ruby_init_loadpath()
incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB)); incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB));
incpush(RUBY_RELATIVE(RUBY_SITE_LIB)); incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB2));
#ifdef RUBY_VENDOR_THIN_ARCHLIB
incpush(RUBY_RELATIVE(RUBY_VENDOR_THIN_ARCHLIB));
#endif
incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCHLIB));
incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB));
incpush(RUBY_RELATIVE(RUBY_LIB)); incpush(RUBY_RELATIVE(RUBY_LIB));
#ifdef RUBY_THIN_ARCHLIB #ifdef RUBY_THIN_ARCHLIB
incpush(RUBY_RELATIVE(RUBY_THIN_ARCHLIB)); incpush(RUBY_RELATIVE(RUBY_THIN_ARCHLIB));

View file

@ -396,9 +396,12 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
#define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)" #define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)"
#define RUBY_SITE_LIB "/lib/ruby/site_ruby" #define RUBY_SITE_LIB "/lib/ruby/site_ruby"
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)" #define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)"
#define RUBY_VENDOR_LIB "/lib/ruby/vendor_ruby"
#define RUBY_VENDOR_LIB2 "/lib/ruby/vendor_ruby/$(MAJOR).$(MINOR)"
#define RUBY_PLATFORM "$(arch)" #define RUBY_PLATFORM "$(arch)"
#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)" #define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)" #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)"
#define RUBY_VENDOR_ARCHLIB "/lib/ruby/vendor_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)"
#define LIBRUBY_SO "$(LIBRUBY_SO)" #define LIBRUBY_SO "$(LIBRUBY_SO)"
#if 0 #if 0
$(BANG)if "$(RUBY_SO_NAME)"!="$$(RUBY_SO_NAME)" || "$(ARCH)-$(OS)"!="$$(ARCH)-$$(OS)" $(BANG)if "$(RUBY_SO_NAME)"!="$$(RUBY_SO_NAME)" || "$(ARCH)-$(OS)"!="$$(ARCH)-$$(OS)"
@ -546,6 +549,7 @@ s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(RT),;t t s,@sitearch@,$(ARCH)-$(RT),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
s,@vendordir@,$${prefix}/lib/ruby/vendor_ruby,;t t
s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t s,@configure_input@,$$configure_input,;t t
s,@srcdir@,$(srcdir),;t t s,@srcdir@,$(srcdir),;t t