From: "kernigh (George Koehler)" Date: 2013-03-13T10:06:52+09:00 Subject: [ruby-core:53352] [Backport 200 - Backport #7959] configure contains non-portable shell code 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 $:' :1:in `require': cannot load such file -- rubygems.rb (LoadError) from :1:in `' $ ./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 $:' :1:in `require': cannot load such file -- rubygems.rb (LoadError) from :1:in `' $ ./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/