diff --git a/ruby-2.6.0-No-chdir-for-build.patch b/ruby-2.6.0-No-chdir-for-build.patch new file mode 100644 index 0000000..25c6090 --- /dev/null +++ b/ruby-2.6.0-No-chdir-for-build.patch @@ -0,0 +1,95 @@ +From 5168efc9ba0a0644c4fd1dbe09c1799f71301e42 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Tue, 8 Jan 2019 14:51:46 +0100 +Subject: [PATCH] Revert 90e676886e681e16e34ef58e078bf0a0aae8b54f + +--- + lib/rubygems/commands/build_command.rb | 26 ++++++------- + .../test_gem_commands_build_command.rb | 37 ------------------- + 2 files changed, 12 insertions(+), 51 deletions(-) + +diff --git a/lib/rubygems/commands/build_command.rb b/lib/rubygems/commands/build_command.rb +index e59471e976..3120236f9f 100644 +--- a/lib/rubygems/commands/build_command.rb ++++ b/lib/rubygems/commands/build_command.rb +@@ -60,20 +60,18 @@ def execute + end + + if File.exist? gemspec +- Dir.chdir(File.dirname(gemspec)) do +- spec = Gem::Specification.load File.basename(gemspec) +- +- if spec +- Gem::Package.build( +- spec, +- options[:force], +- options[:strict], +- options[:output] +- ) +- else +- alert_error "Error loading gemspec. Aborting." +- terminate_interaction 1 +- end ++ spec = Gem::Specification.load gemspec ++ ++ if spec ++ Gem::Package.build( ++ spec, ++ options[:force], ++ options[:strict], ++ options[:output] ++ ) ++ else ++ alert_error "Error loading gemspec. Aborting." ++ terminate_interaction 1 + end + else + alert_error "Gemspec file not found: #{gemspec}" +diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb +index ac82a408c7..fa5e7454f3 100644 +--- a/test/rubygems/test_gem_commands_build_command.rb ++++ b/test/rubygems/test_gem_commands_build_command.rb +@@ -192,43 +192,6 @@ def test_execute_missing_file + assert_equal "ERROR: Gemspec file not found: some_gem\n", @ui.error + end + +- def test_execute_outside_dir +- gemspec_dir = File.join @tempdir, 'build_command_gem' +- gemspec_file = File.join gemspec_dir, @gem.spec_name +- readme_file = File.join gemspec_dir, 'README.md' +- +- FileUtils.mkdir_p gemspec_dir +- +- File.open readme_file, 'w' do |f| +- f.write "My awesome gem" +- end +- +- File.open gemspec_file, 'w' do |gs| +- gs.write @gem.to_ruby +- end +- +- @cmd.options[:args] = [gemspec_file] +- +- use_ui @ui do +- @cmd.execute +- end +- +- output = @ui.output.split "\n" +- assert_equal " Successfully built RubyGem", output.shift +- assert_equal " Name: some_gem", output.shift +- assert_equal " Version: 2", output.shift +- assert_equal " File: some_gem-2.gem", output.shift +- assert_equal [], output +- +- gem_file = File.join gemspec_dir, File.basename(@gem.cache_file) +- assert File.exist?(gem_file) +- +- spec = Gem::Package.new(gem_file).spec +- +- assert_equal "some_gem", spec.name +- assert_equal "this is a summary", spec.summary +- end +- + def test_can_find_gemspecs_without_dot_gemspec + gemspec_file = File.join(@tempdir, @gem.spec_name) + diff --git a/ruby.spec b/ruby.spec index 2168e3d..f4808f5 100644 --- a/ruby.spec +++ b/ruby.spec @@ -143,6 +143,10 @@ Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch # Refresh expired certificates. # https://bugs.ruby-lang.org/issues/15502 Patch10: ruby-2.6.0-Try-to-update-cert.patch +# `gem build ../foo.gemspec` changes directory, which does not play well with +# gems unpacked by setup macro. +# https://github.com/rubygems/rubygems/issues/2587 +Patch11: ruby-2.6.0-No-chdir-for-build.patch # Add support for .include directive used by OpenSSL config files. # https://github.com/ruby/openssl/pull/216 @@ -561,6 +565,7 @@ rm -rf ext/fiddle/libffi* %patch7 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 %patch22 -p1 %patch23 -p1