diff options
| -rw-r--r-- | build_config.rb | 2 | ||||
| -rw-r--r-- | tasks/mruby_build_commands.rake | 13 | ||||
| -rw-r--r-- | tasks/mruby_build_gem.rake | 14 |
3 files changed, 25 insertions, 4 deletions
diff --git a/build_config.rb b/build_config.rb index 3f8009047..795251486 100644 --- a/build_config.rb +++ b/build_config.rb @@ -16,7 +16,7 @@ MRuby::Build.new do |conf| # g.cc.flags << '-g' # append cflags in this gem # end # conf.gem 'examples/mrbgems/c_and_ruby_extension_example' - # conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master' + # conf.gem :github => 'masuidrive/mrbgems-example', :checksum_hash => '76518e8aecd131d047378448ac8055fa29d974a9' # conf.gem :git => '[email protected]:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v' # include the default GEMs diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake index d64b20ff3..4beb7e743 100644 --- a/tasks/mruby_build_commands.rake +++ b/tasks/mruby_build_commands.rake @@ -228,14 +228,15 @@ module MRuby class Command::Git < Command attr_accessor :flags - attr_accessor :clone_options, :pull_options + attr_accessor :clone_options, :pull_options, :checkout_options def initialize(build) super @command = 'git' - @flags = %w[--depth 1] + @flags = %w[] @clone_options = "clone %{flags} %{url} %{dir}" @pull_options = "pull" + @checkout_options = "checkout %{checksum_hash}" end def run_clone(dir, url, _flags = []) @@ -250,6 +251,14 @@ module MRuby _run pull_options Dir.chdir root end + + def run_checkout(dir, checksum_hash) + root = Dir.pwd + Dir.chdir dir + _pp "GIT CHECKOUT", checksum_hash + _run checkout_options, { :checksum_hash => checksum_hash } + Dir.chdir root + end end class Command::Mrbc < Command diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake index 42d0d6b89..766266680 100644 --- a/tasks/mruby_build_gem.rake +++ b/tasks/mruby_build_gem.rake @@ -59,6 +59,9 @@ module MRuby url = params[:git] gemdir = "#{gem_clone_dir}/#{url.match(/([-\w]+)(\.[-\w]+|)$/).to_a[1]}" + # by default the 'master' branch is used + branch = params[:branch] ? params[:branch] : 'master' + if File.exist?(gemdir) if $pull_gems git.run_pull gemdir, url @@ -67,10 +70,19 @@ module MRuby end else options = [params[:options]] || [] - options << "--branch \"#{params[:branch]}\"" if params[:branch] + options << "--branch \"#{branch}\"" + options << "--depth 1" unless params[:checksum_hash] FileUtils.mkdir_p "#{gem_clone_dir}" git.run_clone gemdir, url, options end + + if params[:checksum_hash] + # Jump to the specified commit + git.run_checkout gemdir, params[:checksum_hash] + else + # Jump to the top of the branch + git.run_checkout gemdir, branch + end else fail "unknown gem option #{params}" end |
