[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]