diff --git a/ChangeLog b/ChangeLog index 3ad3af7602..438a806949 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Fri Jan 4 00:35:11 2013 Yuki Yugui Sonoda + + Fix failures on btest for NativeClient. + * bootstraptest/runner.rb (nacl?): New method to distinguish NaCl + corss build. + + * bootstraptest/test_io.rb: Skip unsupported operations. + + * bootstraptest/test_literal.rb: ditto. + Fri Jan 4 00:29:40 2013 Yuki Yugui Sonoda * io.c (rb_cloexec_fcntl_dupfd): Fix failures in diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb index 0dd1e35a88..08c335ae42 100755 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -229,6 +229,12 @@ rescue Exception => err error err.message, message end +# NativeClient is special. The binary is cross-compiled. But runs on the build environment. +# So RUBY_PLATFORM in this process is not useful to detect it. +def nacl? + @ruby and File.basename(@ruby.split(/\s/).first)['sel_ldr'] +end + def assert_check(testsrc, message = '', opt = '') show_progress(message) { result = get_result_string(testsrc, opt) diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb index 7304aebc26..ff858b67fb 100644 --- a/bootstraptest/test_io.rb +++ b/bootstraptest/test_io.rb @@ -53,7 +53,7 @@ assert_equal 'ok', %q{ STDIN.reopen(rw) STDIN.reopen(save) rw.close - File.unlink(tmpname) + File.unlink(tmpname) unless RUBY_PLATFORM['nacl'] :ok } @@ -70,7 +70,7 @@ assert_equal 'ok', %q{ STDIN.print "a" STDIN.reopen(save) rw.close - File.unlink(tmpname) + File.unlink(tmpname) unless RUBY_PLATFORM['nacl'] :ok } diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb index 19200c1ee7..5a9497c642 100644 --- a/bootstraptest/test_literal.rb +++ b/bootstraptest/test_literal.rb @@ -65,8 +65,10 @@ assert_equal ':a3c', ':"a#{1+2}c".inspect' assert_equal 'Symbol', ':"a#{1+2}c".class' # xstring -assert_equal "foo\n", %q(`echo foo`) -assert_equal "foo\n", %q(s = "foo"; `echo #{s}`) +unless nacl? + assert_equal "foo\n", %q(`echo foo`) + assert_equal "foo\n", %q(s = "foo"; `echo #{s}`) +end # regexp assert_equal '', '//.source' diff --git a/configure.in b/configure.in index af0e564fcd..f6b0b57851 100644 --- a/configure.in +++ b/configure.in @@ -1294,9 +1294,10 @@ $POSTLINK" [superux*], [ ac_cv_func_setitimer=no ], [nacl], [ - LIBS="-lm -lnosys $LIBS" + LIBS="-lm $LIBS" if test "${nacl_cv_build_variant}" = "newlib"; then RUBY_APPEND_OPTION(CPPFLAGS, -DNACL_NEWLIB) + RUBY_APPEND_OPTION(LIBS, '-lnosys') else RUBY_APPEND_OPTION(XCFLAGS, -fPIC) fi @@ -2707,6 +2708,10 @@ AS_CASE("$enable_shared", [yes], [ [haiku], [ # gcc supports PIE, but doesn't work correctly in Haiku pie=no + ], + [nacl], [ + # -pie implies -shared for NaCl. + pie=no ]) if test "$GCC" = yes -a -z "$EXTSTATIC" -a "x$pie" != xno; then RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no]) diff --git a/nacl/README.nacl b/nacl/README.nacl index 0db9971797..e70f272715 100644 --- a/nacl/README.nacl +++ b/nacl/README.nacl @@ -6,7 +6,7 @@ You need to install the following things before building NaCl port of Ruby. * Ruby 1.9.3 or later * Python 2.6 or later -* NativeClient SDK pepper 18 or later +* NativeClient SDK pepper 22 or later * GNU make == Steps