[#10193] String.ord — David Flanagan <david@...>

Hi,

41 messages 2007/02/05
[#10197] Re: String.ord — Yukihiro Matsumoto <matz@...> 2007/02/06

Hi,

[#10198] Re: String.ord — David Flanagan <david@...> 2007/02/06

Yukihiro Matsumoto wrote:

[#10199] Re: String.ord — Daniel Berger <djberg96@...> 2007/02/06

David Flanagan wrote:

[#10200] Re: String.ord — David Flanagan <david@...> 2007/02/06

Daniel Berger wrote:

[#10208] Re: String.ord — "Nikolai Weibull" <now@...> 2007/02/06

On 2/6/07, David Flanagan <david@davidflanagan.com> wrote:

[#10213] Re: String.ord — David Flanagan <david@...> 2007/02/06

Nikolai Weibull wrote:

[#10215] Re: String.ord — "Nikolai Weibull" <now@...> 2007/02/06

On 2/6/07, David Flanagan <david@davidflanagan.com> wrote:

[#10216] Re: String.ord — David Flanagan <david@...> 2007/02/07

Nikolai Weibull wrote:

[#10288] Socket library should support abstract unix sockets — <noreply@...>

Bugs item #8597, was opened at 2007-02-13 16:10

12 messages 2007/02/13

[#10321] File.basename fails on Windows root paths — <noreply@...>

Bugs item #8676, was opened at 2007-02-15 10:09

11 messages 2007/02/15

[#10323] Trouble with xmlrpc — James Edward Gray II <james@...>

Some of the Ruby code used by TextMate makes use of xmlrpc/

31 messages 2007/02/15
[#10324] Re: Trouble with xmlrpc — "Berger, Daniel" <Daniel.Berger@...> 2007/02/15

> -----Original Message-----

[#10326] Re: Trouble with xmlrpc — James Edward Gray II <james@...> 2007/02/15

On Feb 15, 2007, at 1:29 PM, Berger, Daniel wrote:

[#10342] Re: Trouble with xmlrpc — James Edward Gray II <james@...> 2007/02/16

While I am complaining about xmlrpc, we have another issue. It's

[#10343] Re: Trouble with xmlrpc — Alex Young <alex@...> 2007/02/16

James Edward Gray II wrote:

[#10344] Re: Trouble with xmlrpc — James Edward Gray II <james@...> 2007/02/16

On Feb 16, 2007, at 12:08 PM, Alex Young wrote:

Re: [PATCH] vendor_ruby support

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-02-21 19:16:04 UTC
List: ruby-core #10388
Hi,

At Wed, 21 Feb 2007 23:57:05 +0900,
Marcus Rueckert wrote in [ruby-core:10387]:
> +VENDOR_DIR="`eval \"echo ${vendordir}\"`"

This results empty on NetBSD.

> +case "$target_os" in
> +  cygwin*|mingw*|*djgpp*|os2_emx*)

os2-emx, not os2_emx.

> Index: mkconfig.rb
> +  if defined?(VENDOR_SPECIFIC) && VENDOR_SPECIFIC
> + 	CONFIG["sitearch"] = CONFIG["vendorarch"]
> + 	CONFIG["sitedir"] = CONFIG["vendordir"]
> + 	CONFIG["sitelibdir"] = CONFIG["vendorlibdir"]
> + 	CONFIG["sitearchdir"] = CONFIG["vendorarchdir"]
> +  end

It should be done in mkmf.rb.

> Index: lib/mkmf.rb
> +int #{func}();
> +/*top*/
> +int main() { return 0; }
> +int t() { #{func}(); return 0; }
> +SRC

This change seems harmful.

> Index: instruby.rb
>  archlibdir = CONFIG["archdir"]
>  sitelibdir = CONFIG["sitelibdir"]
>  sitearchlibdir = CONFIG["sitearchdir"]
> +vendorlibdir = with_destdir(CONFIG["vendorlibdir"])
> +vendorarchlibdir = with_destdir(CONFIG["vendorarchdir"])

Wrong usage of with_destdir.

And we have to take care of {bcc32,win{32,ce}}/Makefile.sub too.


Index: mkconfig.rb
===================================================================
--- mkconfig.rb	(revision 11808)
+++ mkconfig.rb	(working copy)
@@ -22,5 +22,24 @@ end
 $stdout = config
 
-fast = {'prefix'=>TRUE, 'ruby_install_name'=>TRUE, 'INSTALL'=>TRUE, 'EXEEXT'=>TRUE}
+class << (vars = {})
+  Fast = {
+    'prefix'=>true,
+    'ruby_install_name'=>true, 'RUBY_INSTALL_NAME'=>true,
+    'RUBY_SO_NAME'=>true, 'INSTALL'=>true, 'EXEEXT'=>true
+  }
+  V_fast = []
+  V_others = []
+
+  def []=(name, val)
+    key?(name) or (Fast[name] ? V_fast : V_others).push(name)
+    super(name, val)
+  end
+
+  def each
+    V_fast.each {|name| yield name, self[name]}
+    V_others.each {|name| yield name, self[name]}
+  end
+end
+
 print %[
 # This file was created by #{mkconfig} when ruby was built.  Any
@@ -33,7 +52,4 @@ module RbConfig
 ]
 
-v_fast = []
-v_others = []
-vars = {}
 has_version = false
 continued_name = nil
@@ -65,5 +81,5 @@ File.foreach "config.status" do |line|
     end
   when /^(?:ac_given_)?INSTALL=(.*)/
-    v_fast << "  CONFIG[\"INSTALL\"] = " + $1 + "\n"
+    vars["INSTALL"] = $1
   end
 
@@ -87,10 +103,8 @@ File.foreach "config.status" do |line|
       val = "(TOPDIR || DESTDIR + #{val})"
     end
-    v = "  CONFIG[\"#{name}\"] #{vars[name] ? '<< "\n"' : '='} #{val}\n"
-    vars[name] = true
-    if fast[name]
-      v_fast << v
+    if vars[name]
+      vars[name] << "\n" << val
     else
-      v_others << v
+      vars[name] = val
     end
     has_version = true if name == "MAJOR"
@@ -115,29 +129,40 @@ unless has_version
 end
 
-dest = drive ? /= \"(?!\$[\(\{])(?:[a-z]:)?/i : /= \"(?!\$[\(\{])/
-v_others.collect! do |x|
-  if /^\s*CONFIG\["(?!abs_|old)[a-z]+(?:_prefix|dir)"\]/ === x
-    x.sub(dest, '= "$(DESTDIR)')
-  else
-    x
+prev = ""
+%w[site vendor].each do |spec|
+  vars["#{spec}dir"] ||= "\"$(prefix)/lib/ruby/#{spec}_ruby\""
+  vars["#{spec}arch"] ||= "\"$(#{spec}arch)\""
+  prev = spec
+end
+
+dest = drive ? /\A\"(?!\$[\(\{])(?:[a-z]:)?/i : /\A\"(?!\$[\(\{])/
+vars.each do |name, val|
+  if /\A(?!abs_|old)[a-z]+(?:_prefix|dir)\z/ === name
+    val.sub!(dest, '"$(DESTDIR)')
   end
 end
 
 if $install_name
-  v_fast << "  CONFIG[\"ruby_install_name\"] = \"" + $install_name + "\"\n"
-  v_fast << "  CONFIG[\"RUBY_INSTALL_NAME\"] = \"" + $install_name + "\"\n"
+  vars["ruby_install_name"] ||= $install_name.dump
+  vars["RUBY_INSTALL_NAME"] ||= $install_name.dump
 end
 if $so_name
-  v_fast << "  CONFIG[\"RUBY_SO_NAME\"] = \"" + $so_name + "\"\n"
+  vars["RUBY_SO_NAME"] ||= $so_name.dump
+end
+vars["ruby_version"] = "\"$(MAJOR).$(MINOR)\""
+vars["rubylibdir"] = "\"$(libdir)/ruby/$(ruby_version)\""
+vars["archdir"] = "\"$(rubylibdir)/$(arch)\""
+vars["sitelibdir"] = "\"$(sitedir)/$(ruby_version)\""
+vars["sitearchdir"] = "\"$(sitelibdir)/$(sitearch)\""
+vars["vendorlibdir"] = "\"$(vendordir)/$(ruby_version)\""
+vars["vendorarchdir"] = "\"$(vendorlibdir)/$(vendorarch)\""
+
+vars.each do |name, val|
+  val = val.split(/\n/)
+  name = name.dump
+  print "  CONFIG[#{name}] = ",
+    val.join(" \"\\n\" \\\n" + " " * (name.length + 13)), "\n"
 end
-
-print(*v_fast)
-print(*v_others)
 print <<EOS
-  CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
-  CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
-  CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
-  CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
-  CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
   CONFIG["topdir"] = File.dirname(__FILE__)
   MAKEFILE_CONFIG = {}
Index: instruby.rb
===================================================================
--- instruby.rb	(revision 11808)
+++ instruby.rb	(working copy)
@@ -163,4 +163,6 @@ archlibdir = CONFIG["archdir"]
 sitelibdir = CONFIG["sitelibdir"]
 sitearchlibdir = CONFIG["sitearchdir"]
+vendorlibdir = CONFIG["vendorlibdir"]
+vendorarchlibdir = CONFIG["vendorarchdir"]
 mandir = File.join(CONFIG["mandir"], "man")
 configure_args = Shellwords.shellwords(CONFIG["configure_args"])
@@ -203,5 +205,5 @@ if $extout
   install?(:ext, :arch, :'ext-arch') do
     puts "installing extension objects"
-    makedirs [archlibdir, sitearchlibdir]
+    makedirs [archlibdir, sitearchlibdir, vendorarchlibdir]
     if noinst = CONFIG["no_install_files"] and noinst.empty?
       noinst = nil
@@ -211,5 +213,5 @@ if $extout
   install?(:ext, :comm, :'ext-comm') do
     puts "installing extension scripts"
-    makedirs [rubylibdir, sitelibdir]
+    makedirs [rubylibdir, sitelibdir, vendorlibdir]
     install_recursive("#{extout}/common", rubylibdir)
   end
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 11808)
+++ Makefile.in	(working copy)
@@ -26,4 +26,6 @@ arch = @arch@
 sitearch = @sitearch@
 sitedir = @sitedir@
+vendorarch = @vendorarch@
+vendordir = @vendordir@
 
 TESTUI = console
Index: ruby.c
===================================================================
--- ruby.c	(revision 11808)
+++ ruby.c	(working copy)
@@ -327,4 +327,11 @@ ruby_init_loadpath(void)
     ruby_incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
 
+    ruby_incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB2));
+#ifdef RUBY_VENDOR_THIN_ARCHLIB
+    ruby_incpush(RUBY_RELATIVE(RUBY_VENDOR_THIN_ARCHLIB));
+#endif
+    ruby_incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCHLIB));
+    ruby_incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB));
+
     ruby_incpush(RUBY_RELATIVE(RUBY_LIB));
 #ifdef RUBY_THIN_ARCHLIB
Index: configure.in
===================================================================
--- configure.in	(revision 11808)
+++ configure.in	(working copy)
@@ -1579,7 +1579,26 @@ AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUB
 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_VENDOR_LIB, "${RUBY_VENDOR_LIB_PATH}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB2, "${RUBY_VENDOR_LIB_PATH2}")
+
 AC_SUBST(arch)dnl
 AC_SUBST(sitearch)dnl
+AC_SUBST(vendorarch)dnl
 AC_SUBST(sitedir)dnl
+AC_SUBST(vendordir)dnl
 
 configure_args=$ac_configure_args
@@ -1594,4 +1613,6 @@ if test "$fat_binary" != no ; then
     AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
                  "${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}")
 else
@@ -1604,7 +1625,9 @@ case "$target_os" in
   *) sitearch="${arch}" ;;
 esac
+vendorarch="$sitearch"
 
 AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
 AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, "${RUBY_VENDOR_LIB_PATH2}/${vendorarch}")
 
 AC_ARG_WITH(search-path,
Index: lib/vendor-specific.rb
===================================================================
--- lib/vendor-specific.rb	(revision 0)
+++ lib/vendor-specific.rb	(revision 0)
@@ -0,0 +1,13 @@
+# $Id: vendor-specific.rb,v 1.1 2004/04/02 04:47:43 rshaw Exp $
+# Custom vendor_ruby install library setting for DarwinPorts module
+# installation. You can force vendor installation with the following:
+#
+#    ruby -rvendor-specific extconf.rb
+# or
+#    ruby -rvendor-specific install.rb
+#
+# This causes vendor-specific installation mode. The default without
+# this is to do a site-specific installation, which is recommended for
+# general user installation of modules.
+#
+VENDOR_SPECIFIC = true
Index: lib/site-specific.rb
===================================================================
--- lib/site-specific.rb	(revision 0)
+++ lib/site-specific.rb	(revision 0)
@@ -0,0 +1,13 @@
+# $Id: site-specific.rb,v 1.1 2004/04/02 04:47:43 rshaw Exp $
+# Default site_ruby install library setting for normal module
+# installation. You can force site installation with the following:
+#
+#    ruby -rsite-specific extconf.rb
+# or
+#    ruby -rsite-specific install.rb
+#
+# This is not required for normal user module installation as they will
+# default to site_ruby, it is only provided for consistency. Developers
+# creating packages/ports should use the vendor-specific option.
+#
+VENDOR_SPECIFIC = false
Index: lib/mkmf.rb
===================================================================
--- lib/mkmf.rb	(revision 11808)
+++ lib/mkmf.rb	(working copy)
@@ -52,4 +52,7 @@ $sitedir = CONFIG["sitedir"]
 $sitelibdir = CONFIG["sitelibdir"]
 $sitearchdir = CONFIG["sitearchdir"]
+$vendordir = CONFIG["vendordir"]
+$vendorlibdir = CONFIG["vendorlibdir"]
+$vendorarchdir = CONFIG["vendorarchdir"]
 
 $mswin = /mswin/ =~ RUBY_PLATFORM
@@ -96,4 +99,10 @@ def install_dirs(target_prefix = nil)
       ['RUBYARCHDIR',   '$(archdir)$(target_prefix)'],
     ]
+  elsif defined?(VENDOR_SPECIFIC) and VENDOR_SPECIFIC
+    dirs = [
+      ['RUBYCOMMONDIR', '$(vendordir)$(target_prefix)'],
+      ['RUBYLIBDIR',    '$(vendorlibdir)$(target_prefix)'],
+      ['RUBYARCHDIR',   '$(vendorarchdir)$(target_prefix)'],
+    ]
   else
     dirs = [
@@ -1097,4 +1106,5 @@ RUBY_SO_NAME = #{CONFIG['RUBY_SO_NAME']}
 arch = #{CONFIG['arch']}
 sitearch = #{CONFIG['sitearch']}
+vendorarch = #{CONFIG['vendorarch']}
 ruby_version = #{RbConfig::CONFIG['ruby_version']}
 ruby = #{$ruby}


-- 
Nobu Nakada

In This Thread