diff options
| -rw-r--r-- | .github/workflows/build.yml | 71 | ||||
| -rw-r--r-- | appveyor.yml | 8 | ||||
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-test/mrbgem.rake | 14 | ||||
| -rw-r--r-- | src/object.c | 1 | ||||
| -rw-r--r-- | src/state.c | 2 | ||||
| -rw-r--r-- | src/string.c | 1 | ||||
| -rw-r--r-- | tasks/mrbgems.rake | 12 |
8 files changed, 56 insertions, 58 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1c6fa34b4..335c0cdf6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,51 +5,59 @@ on: [push, pull_request] jobs: Ubuntu-1604: runs-on: ubuntu-16.04 + env: + MRUBY_CONFIG: travis_config.rb steps: - uses: actions/checkout@v1 - name: apt run: sudo apt install ruby gperf - - name: build and test - run: rake -m -j4 all test - env: - MRUBY_CONFIG: travis_config.rb + - name: build + run: rake -m + - name: test + run: rake test Ubuntu-1804-gcc: runs-on: ubuntu-18.04 + env: + MRUBY_CONFIG: travis_config.rb + CC: gcc + CXX: g++ steps: - uses: actions/checkout@v1 - name: apt run: sudo apt install ruby gperf gcc g++ - - name: build and test - run: rake -m -j4 all test - env: - MRUBY_CONFIG: travis_config.rb - CC: gcc - CXX: g++ + - name: build + run: rake -m + - name: test + run: rake test Ubuntu-1804-clang: runs-on: ubuntu-18.04 + env: + MRUBY_CONFIG: travis_config.rb + CC: clang + CXX: clang++ steps: - uses: actions/checkout@v1 - name: apt run: sudo apt install ruby gperf - - name: build and test - run: rake -m -j4 all test - env: - MRUBY_CONFIG: travis_config.rb - CC: clang - CXX: clang++ + - name: build + run: rake -m + - name: test + run: rake test macOS: runs-on: macos-latest + env: + MRUBY_CONFIG: travis_config.rb steps: - uses: actions/checkout@v1 - name: brew run: brew install ruby gperf - - name: build and test - run: rake -m -j4 all test - env: - MRUBY_CONFIG: travis_config.rb + - name: build + run: rake -m + - name: test + run: rake test Windows-MinGW: runs-on: windows-latest @@ -57,8 +65,8 @@ jobs: - uses: actions/checkout@v1 - name: chocolatey run: choco install -y ruby gperf - - name: build and test - run: rake -E '$stdout.sync=true' -j4 test + - name: build + run: rake -E 'STDOUT.sync=true' test env: MRUBY_CONFIG: travis_config.rb CFLAGS: -g -O1 -Wall -Wundef @@ -82,22 +90,13 @@ jobs: - name: Set ENV run: | echo '::set-env name=PATH::C:\tools\cygwin\bin;C:\tools\cygwin\usr\bin' - - name: build and test + - name: build shell: cmd - run: C:\tools\cygwin\bin\ruby.exe /usr/bin/rake -m -j4 -E 'STDOUT.sync=true' test + run: C:\tools\cygwin\bin\ruby.exe /usr/bin/rake -E 'STDOUT.sync=true' -m env: MRUBY_CONFIG: travis_config.rb - - Windows-VC: - runs-on: windows-latest - steps: - - uses: actions/checkout@v1 - - name: chocolatey - run: choco install -y ruby gperf - - name: build and test + - name: test shell: cmd - run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - rake -E "STDOUT.sync=true" -m -j4 test + run: C:\tools\cygwin\bin\ruby.exe /usr/bin/rake -E 'STDOUT.sync=true' test env: - MRUBY_CONFIG: appveyor_config.rb + MRUBY_CONFIG: travis_config.rb diff --git a/appveyor.yml b/appveyor.yml index ac77222d6..e963ea035 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,11 +30,6 @@ environment: appveyor_build_worker_image: Visual Studio 2015 machine: x86 - - job_name: Visual Studio 2013 64bit - visualcpp: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat - appveyor_build_worker_image: Visual Studio 2015 - machine: x86_amd64 - init: - call "%visualcpp%" %machine% # For using Rubyins4aller's Ruby 2.6 64bit @@ -45,4 +40,5 @@ init: build_script: - set MRUBY_CONFIG=appveyor_config.rb - - rake -E "$stdout.sync=true" -m -j4 test + - rake -m -j4 + - rake -E STDOUT.sync=true test diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 505ceb248..b3e192899 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -18,6 +18,7 @@ #if defined(_WIN32) || defined(_WIN64) #include <winsock.h> #include <io.h> + #include <basetsd.h> #define open _open #define close _close #define dup _dup @@ -32,6 +33,10 @@ typedef long fsuseconds_t; typedef int fmode_t; typedef int mrb_io_read_write_size; + #if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) && \ + !defined(__have_typedef_ssize_t) + typedef SSIZE_T ssize_t; + #endif #ifndef O_TMPFILE #define O_TMPFILE O_TEMPORARY diff --git a/mrbgems/mruby-test/mrbgem.rake b/mrbgems/mruby-test/mrbgem.rake index 97189a67b..ced252ae6 100644 --- a/mrbgems/mruby-test/mrbgem.rake +++ b/mrbgems/mruby-test/mrbgem.rake @@ -146,20 +146,8 @@ MRuby::Gem::Specification.new('mruby-test') do |spec| end end - # store the last gem selection and make the re-build - # of the test gem depending on a change to the gem - # selection - active_gems_path = "#{build_dir}/active_gems_path.lst" - active_gem_list = File.read active_gems_path if File.exist? active_gems_path - current_gem_list = build.gems.map(&:name).join("\n") - task active_gems_path do |_t| - mkdir_p File.dirname(active_gems_path) - File.write active_gems_path, current_gem_list - end - file clib => active_gems_path if active_gem_list != current_gem_list - file mlib => clib - file clib => [build.mrbcfile, __FILE__] do |_t| + file clib => ["#{build.build_dir}/mrbgems/active_gems.txt", build.mrbcfile, __FILE__] do |_t| _pp "GEN", "*.rb", "#{clib.relative_path}" mkdir_p File.dirname(clib) open(clib, 'w') do |f| diff --git a/src/object.c b/src/object.c index db9dfb568..7257f402d 100644 --- a/src/object.c +++ b/src/object.c @@ -338,6 +338,7 @@ mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char if (mrb_type(val) == type) return val; v = convert_type(mrb, val, tname, method, TRUE); if (mrb_type(v) != type) { + if (type == MRB_TT_STRING) return mrb_any_to_s(mrb, val); mrb_raisef(mrb, E_TYPE_ERROR, "%v cannot be converted to %s by #%s", val, tname, method); } return v; diff --git a/src/state.c b/src/state.c index 533bdaa0b..790f7ca13 100644 --- a/src/state.c +++ b/src/state.c @@ -164,8 +164,6 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep) mrb_free(mrb, irep); } -void mrb_free_backtrace(mrb_state *mrb); - MRB_API void mrb_free_context(mrb_state *mrb, struct mrb_context *c) { diff --git a/src/string.c b/src/string.c index f1ffbe43d..78c41c5f3 100644 --- a/src/string.c +++ b/src/string.c @@ -1121,6 +1121,7 @@ mrb_str_to_str(mrb_state *mrb, mrb_value str) return mrb_sym_str(mrb, mrb_symbol(str)); case MRB_TT_FIXNUM: return mrb_fixnum_to_str(mrb, str, 10); + case MRB_TT_SCLASS: case MRB_TT_CLASS: case MRB_TT_MODULE: return mrb_mod_to_s(mrb, str); diff --git a/tasks/mrbgems.rake b/tasks/mrbgems.rake index c814a16db..0a3ae652d 100644 --- a/tasks/mrbgems.rake +++ b/tasks/mrbgems.rake @@ -5,9 +5,10 @@ MRuby.each_target do gems.check self # loader all gems + active_gems_txt = "#{build_dir}/mrbgems/active_gems.txt" self.libmruby_objs << objfile("#{build_dir}/mrbgems/gem_init") file objfile("#{build_dir}/mrbgems/gem_init") => ["#{build_dir}/mrbgems/gem_init.c", "#{build_dir}/LEGAL"] - file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG, __FILE__, *Dir.glob("#{build_dir}/mrbgems/mruby-*/*.c")] do |t| + file "#{build_dir}/mrbgems/gem_init.c" => [active_gems_txt, MRUBY_CONFIG, __FILE__] do |t| mkdir_p "#{build_dir}/mrbgems" open(t.name, 'w') do |f| gem_func_gems = gems.select { |g| g.generate_functions } @@ -49,6 +50,15 @@ MRuby.each_target do f.puts %Q[}] end end + file active_gems_txt => :generate_active_gems_txt + task :generate_active_gems_txt do |t| + def t.timestamp; Time.at(0) end + active_gems = gems.sort_by(&:name).inject(""){|s, g| s << "#{g.name}\n"} + if !File.exist?(active_gems_txt) || File.read(active_gems_txt) != active_gems + mkdir_p File.dirname(active_gems_txt) + File.write(active_gems_txt, active_gems) + end + end end # legal documents |
