ruby-changes:31220
From: drbrain <ko1@a...>
Date: Wed, 16 Oct 2013 09:43:21 +0900 (JST)
Subject: [ruby-changes:31220] drbrain:r43299 (trunk): * lib/rubygems: Update to RubyGems master 278d00d. Changes:
drbrain 2013-10-16 09:43:14 +0900 (Wed, 16 Oct 2013) New Revision: 43299 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43299 Log: * lib/rubygems: Update to RubyGems master 278d00d. Changes: Fixes building extensions without a "clean" make rule Adds gem dependency file autodetection to "gem install -g" * test/rubygems: Tests for the above. Modified files: trunk/ChangeLog trunk/lib/rubygems/commands/install_command.rb trunk/lib/rubygems/ext/builder.rb trunk/lib/rubygems/ext/cmake_builder.rb trunk/test/rubygems/test_gem_commands_install_command.rb trunk/test/rubygems/test_gem_ext_builder.rb trunk/test/rubygems/test_gem_ext_cmake_builder.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 43298) +++ ChangeLog (revision 43299) @@ -1,3 +1,13 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Oct 16 09:42:42 2013 Eric Hodel <drbrain@s...> + + * lib/rubygems: Update to RubyGems master 278d00d. Changes: + + Fixes building extensions without a "clean" make rule + + Adds gem dependency file autodetection to "gem install -g" + + * test/rubygems: Tests for the above. + Wed Oct 16 09:12:23 2013 Eric Hodel <drbrain@s...> * lib/rubygems: Update to RubyGems master commit 2a74263. This fixes Index: lib/rubygems/ext/builder.rb =================================================================== --- lib/rubygems/ext/builder.rb (revision 43298) +++ lib/rubygems/ext/builder.rb (revision 43299) @@ -19,11 +19,6 @@ class Gem::Ext::Builder https://github.com/ruby/ruby/blob/trunk/lib/rubygems/ext/builder.rb#L19 CHDIR_MUTEX = Mutex.new # :nodoc: - ## - # `make` targets to run when building the extension - - MAKE_TARGETS = ['clean', '', 'install'] # :nodoc: - attr_accessor :build_args # :nodoc: def self.class_name @@ -45,14 +40,18 @@ class Gem::Ext::Builder https://github.com/ruby/ruby/blob/trunk/lib/rubygems/ext/builder.rb#L40 destdir = '"DESTDIR=%s"' % ENV['DESTDIR'] if RUBY_VERSION > '2.0' - self::MAKE_TARGETS.each do |target| + ['clean', '', 'install'].each do |target| # Pass DESTDIR via command line to override what's in MAKEFLAGS cmd = [ make_program, destdir, target ].join(' ').rstrip - run(cmd, results, "make #{target}".rstrip) + begin + run(cmd, results, "make #{target}".rstrip) + rescue Gem::InstallError + raise unless target == 'clean' # ignore clean failure + end end end Index: lib/rubygems/ext/cmake_builder.rb =================================================================== --- lib/rubygems/ext/cmake_builder.rb (revision 43298) +++ lib/rubygems/ext/cmake_builder.rb (revision 43299) @@ -1,7 +1,4 @@ https://github.com/ruby/ruby/blob/trunk/lib/rubygems/ext/cmake_builder.rb#L1 class Gem::Ext::CmakeBuilder < Gem::Ext::Builder - - MAKE_TARGETS = ['', 'install'] # :nodoc: - def self.build(extension, directory, dest_path, results) unless File.exist?('Makefile') then cmd = "cmake . -DCMAKE_INSTALL_PREFIX=#{dest_path}" Index: lib/rubygems/commands/install_command.rb =================================================================== --- lib/rubygems/commands/install_command.rb (revision 43298) +++ lib/rubygems/commands/install_command.rb (revision 43299) @@ -32,9 +32,13 @@ class Gem::Commands::InstallCommand < Ge https://github.com/ruby/ruby/blob/trunk/lib/rubygems/commands/install_command.rb#L32 add_version_option add_prerelease_option "to be installed. (Only for listed gems)" - add_option(:"Install/Update", '-g', '--file FILE', + add_option(:"Install/Update", '-g', '--file [FILE]', 'Read from a gem dependencies API file and', 'install the listed gems') do |v,o| + v = %w[gem.deps.rb Gemfile Isolate].find do |file| + File.exist? file + end unless v + o[:gemdeps] = v end Index: test/rubygems/test_gem_ext_cmake_builder.rb =================================================================== --- test/rubygems/test_gem_ext_cmake_builder.rb (revision 43298) +++ test/rubygems/test_gem_ext_cmake_builder.rb (revision 43299) @@ -65,7 +65,7 @@ install (FILES test.txt DESTINATION bin) https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_ext_cmake_builder.rb#L65 def test_self_build_has_makefile File.open File.join(@ext, 'Makefile'), 'w' do |makefile| - makefile.puts "clean:\n\t@echo ok\nall:\n\t@echo ok\ninstall:\n\t@echo ok" + makefile.puts "all:\n\t@echo ok\ninstall:\n\t@echo ok" end output = [] Index: test/rubygems/test_gem_ext_builder.rb =================================================================== --- test/rubygems/test_gem_ext_builder.rb (revision 43298) +++ test/rubygems/test_gem_ext_builder.rb (revision 43299) @@ -66,6 +66,37 @@ install: https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_ext_builder.rb#L66 end end + def test_class_make_no_clean + ENV['DESTDIR'] = 'destination' + results = [] + + Dir.chdir @ext do + open 'Makefile', 'w' do |io| + io.puts <<-MAKEFILE +all: +\t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}" + +install: +\t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}" + MAKEFILE + end + + Gem::Ext::Builder.make @dest_path, results + end + + results = results.join "\n" + + if RUBY_VERSION > '2.0' then + assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results + assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results + assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results + else + refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results + refute_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results + refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results + end + end + def test_build_extensions @spec.extensions << 'extconf.rb' Index: test/rubygems/test_gem_commands_install_command.rb =================================================================== --- test/rubygems/test_gem_commands_install_command.rb (revision 43298) +++ test/rubygems/test_gem_commands_install_command.rb (revision 43299) @@ -866,5 +866,32 @@ ERROR: Possible alternatives: non_exist https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_gem_commands_install_command.rb#L866 assert_match "Installing r (2.0)", @ui.output end + def test_handle_options_file + @cmd.handle_options %w[-g Gemfile] + + assert_equal 'Gemfile', @cmd.options[:gemdeps] + + @cmd.handle_options %w[--file gem.deps.rb] + + assert_equal 'gem.deps.rb', @cmd.options[:gemdeps] + + FileUtils.touch 'Isolate' + + @cmd.handle_options %w[-g] + + assert_equal 'Isolate', @cmd.options[:gemdeps] + + FileUtils.touch 'Gemfile' + + @cmd.handle_options %w[-g] + + assert_equal 'Gemfile', @cmd.options[:gemdeps] + + FileUtils.touch 'gem.deps.rb' + + @cmd.handle_options %w[-g] + + assert_equal 'gem.deps.rb', @cmd.options[:gemdeps] + end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/