summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml71
-rw-r--r--appveyor.yml8
-rw-r--r--mrbgems/mruby-io/src/io.c5
-rw-r--r--mrbgems/mruby-test/mrbgem.rake14
-rw-r--r--src/object.c1
-rw-r--r--src/state.c2
-rw-r--r--src/string.c1
-rw-r--r--tasks/mrbgems.rake12
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