Issue #7959 has been updated by kernigh (George Koehler).


=begin
Hello, Rubyists.  This fix is not working for me.  I am still getting this bug, or a very similar bug.

I am running OpenBSD 5.2 and autoconf 2.69.  I follow trunk and ruby_2_0_0 with git. Here are my ruby -v
* ruby 2.1.0dev (2013-03-13 trunk 39737) [x86_64-openbsd5.2]
* ruby 2.0.0p57 (2013-03-12 revision 39728) [x86_64-openbsd5.2]

When I configure trunk, I see errors about "no closing quote".

 $ ../configure --prefix=$HOME/prefix \
 --with-baseruby=/usr/local/bin/ruby19 \
 CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
 ...
 checking if make is GNU make... no
 checking for safe null command for make... :
 checking for memmem... no
 ../configure: no closing quote
 ../configure: no closing quote
 ../configure: no closing quote
 ../configure: no closing quote
 checking for nroff... no
 checking for awf... no
 .ext/include/x86_64-openbsd5.2/ruby/config.h unchanged
 verconf.h unchanged
 ruby library version = 2.1.0
 configure: creating ./config.status
 config.status: creating Makefile
 config.status: creating ruby-2.1.pc

Then verconf.h looks like a mess:

 #define RUBY_BASE_NAME "ruby"
 #define RUBY_VERSION_NAME RUBY_BASE_NAME"-"RUBY_LIB_VERSION
 #define RUBY_LIB_VERSION_STYLE 3	/* full */
 #define RUBY_EXEC_PREFIX "/home/kernigh/prefix"
 #define RUBY_LIB_PREFIX "arch"RUBY_EXEC_PREFIX"/lib/"RUBY_BASE_NAME"arch"
 #define RUBY_ARCH_PREFIX_FOR(arch) "arch"RUBY_LIB_PREFIX"/"arch"arch"
 #define RUBY_SITEARCH_PREFIX_FOR(arch) "arch"RUBY_LIB_PREFIX"/"arch"arch"
 #define RUBY_LIB "arch"RUBY_LIB_PREFIX"/"RUBY_LIB_VERSION"arch"
 #define RUBY_ARCH_LIB_FOR(arch) "arch"RUBY_LIB"/"arch"arch"
 #define RUBY_SITE_LIB "arch"RUBY_LIB_PREFIX"/site_ruby"
 #define RUBY_SITE_ARCH_LIB_FOR(arch) "arch"RUBY_SITE_LIB2"/"arch"arch"
 #define RUBY_VENDOR_LIB "arch"RUBY_LIB_PREFIX"/vendor_ruby"
 #define RUBY_VENDOR_ARCH_LIB_FOR(arch) "arch"RUBY_VENDOR_LIB2"/"arch"arch"
 #define RUBY_PLATFORM "x86_64-openbsd5.2"

This ruby can't find the installed libraries:

 $ ./ruby -v
 ruby 2.1.0dev (2013-03-12 trunk 39730) [x86_64-openbsd5.2]
 $ ./ruby -e 'p $:'
 <internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
 from <internal:gem_prelude>:1:in `<compiled>'
 $ ./ruby --disable=gems -e 'p $:'
 ["archarch/home/kernigh/prefix/lib/rubyarch/site_ruby/2.1.0", "archarcharch/home/kernigh/prefix/lib/rubyarch/site_ruby/2.1.0/x86_64-openbsd5.2arch", "archarch/home/kernigh/prefix/lib/rubyarch/site_ruby", "archarch/home/kernigh/prefix/lib/rubyarch/vendor_ruby/2.1.0", "archarcharch/home/kernigh/prefix/lib/rubyarch/vendor_ruby/2.1.0/x86_64-openbsd5.2arch", "archarch/home/kernigh/prefix/lib/rubyarch/vendor_ruby", "arch/home/kernigh/prefix/lib/rubyarch/2.1.0", "archarch/home/kernigh/prefix/lib/rubyarch/2.1.0/x86_64-openbsd5.2arch"]

When I configure ruby_2_0_0, the problem is slightly different:

 $ ../configure --prefix=$HOME/prefix \
 --with-baseruby=/usr/local/bin/ruby19 \
 CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
 ...
 checking if make is GNU make... no
 checking for safe null command for make... :
 checking for memmem... no
 sed: 1: ""s/${[^${}"]*}/"&"/g;;s ...: invalid command code "
 ../configure: s/\\//g: not found
 ../configure: s/^\//;s/\$//": not found
 sed: 1: ""s/${[^${}"]*}/"&"/g;;s ...: invalid command code "
 ../configure: s/\\//g: not found
 ../configure: s/^\//;s/\$//": not found
 sed: 1: ""s/${[^${}"]*}/"&"/g;;s ...: invalid command code "
 ../configure: s/\\//g: not found
 ../configure: s/^\//;s/\$//": not found
 sed: 1: ""s/${[^${}"]*}/"&"/g;;s ...: invalid command code "
 ../configure: s/\\//g: not found
 ../configure: s/^\//;s/\$//": not found
 checking for nroff... no
 checking for awf... no
 .ext/include/x86_64-openbsd5.2/ruby/config.h unchanged
 verconf.h unchanged
 ruby library version = 2.0.0
 configure: creating ./config.status
 config.status: creating Makefile
 config.status: creating ruby-2.0.pc

 #define RUBY_BASE_NAME "ruby"
 #define RUBY_VERSION_NAME RUBY_BASE_NAME"-"RUBY_LIB_VERSION
 #define RUBY_LIB_VERSION_STYLE 3	/* full */
 #define RUBY_LIB_PREFIX "arch"
 #define RUBY_ARCH_PREFIX_FOR(arch) "arch"
 #define RUBY_SITEARCH_PREFIX_FOR(arch) "arch"
 #define RUBY_LIB "arch"RUBY_LIB_PREFIX"/"RUBY_LIB_VERSION"arch"
 #define RUBY_ARCH_LIB_FOR(arch) "arch"RUBY_LIB"/"arch"arch"
 #define RUBY_SITE_LIB "arch"RUBY_LIB_PREFIX"/site_ruby"
 #define RUBY_SITE_ARCH_LIB_FOR(arch) "arch"RUBY_SITE_LIB2"/"arch"arch"
 #define RUBY_VENDOR_LIB "arch"RUBY_LIB_PREFIX"/vendor_ruby"
 #define RUBY_VENDOR_ARCH_LIB_FOR(arch) "arch"RUBY_VENDOR_LIB2"/"arch"arch"
 #define RUBY_PLATFORM "x86_64-openbsd5.2"
 
 $ ./ruby -v
 ruby 2.0.0p57 (2013-03-12 revision 39728) [x86_64-openbsd5.2]
 $ ./ruby -e 'p $:'
 <internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
 from <internal:gem_prelude>:1:in `<compiled>'
 $ ./ruby --disable=gems -e 'p $:'
 ["archarch/site_ruby/2.0.0", "archarcharch/site_ruby/2.0.0/x86_64-openbsd5.2arch", "archarch/site_ruby", "archarch/vendor_ruby/2.0.0", "archarcharch/vendor_ruby/2.0.0/x86_64-openbsd5.2arch", "archarch/vendor_ruby", "arch/2.0.0", "archarch/2.0.0/x86_64-openbsd5.2arch"]

Like jeremyevans0, I can work around this issue by using bash.  I run "bash ../configure ..." and rebuild trunk Ruby, then trunk Ruby no longer has this problem.

I don't know where in configure causes this problem.  I am guessing that the problem might be in shvar_to_cpp, but I am not sure.  OpenBSD /bin/sh is a modified pdksh.  To try to reproduce this problem with another system, one might try using pdksh.  Also, bug #8071 reported a similar problem with ksh93, so one might try using ksh93.

=end

----------------------------------------
Backport #7959: configure contains non-portable shell code
https://bugs.ruby-lang.org/issues/7959#change-37548

Author: jeremyevans0 (Jeremy Evans)
Status: Closed
Priority: Normal
Assignee: nagachika (Tomoyuki Chikanaga)
Category: 
Target version: 


On 2.0.0 and trunk, configure contains non-portable shell code.  When run on OpenBSD, configure emits the following errors and results in a ruby that builds but cannot run without manually specifying -I for the ruby lib directories:

...
checking for prefix of external symbols... NONE
checking for pthread.h... (cached) yes
checking if make is GNU make... no
checking for safe null command for make... :
checking for memmem... no
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g;s/ ...: invalid command code "
././configure: s/\\//g: not found
././configure: s/^\//;s/\$//": not found
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g;s/ ...: invalid command code "
././configure: s/\\//g: not found
././configure: s/^\//;s/\$//": not found
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g;s/ ...: invalid command code "
././configure: s/\\//g: not found
././configure: s/^\//;s/\$//": not found
sed: 1: ""s/${[^${}"]*}/"&"/g"": invalid command code "
sed: 1: ""s/${[^${}"]*}/"&"/g;s/ ...: invalid command code "
././configure: s/\\//g: not found
././configure: s/^\//;s/\$//": not found
checking for nroff... no
checking for awf... no
.ext/include/x86_64-openbsd/ruby/config.h updated
verconf.h updated
ruby library version = 2.0
configure: creating ./config.status
config.status: creating Makefile
config.status: creating ruby-2.0.pc

The last revision that worked correctly was 39288.

It's trivial to work around the issue by using "bash configure" instead of "./configure", but that shouldn't be necessary.  I'm sorry for not reporting this before the official release of 2.0.0, but this issue was introduced after rc2.


-- 
http://bugs.ruby-lang.org/