ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@ml.ruby-lang.org>
To: ruby-core@ml.ruby-lang.org
Cc: "hsbt (Hiroshi SHIBATA)" <noreply@ruby-lang.org>
Subject: [ruby-core:112443] [Ruby master Bug#19158] Ruby 3.1.3 installs wrong gemspec for debug gem
Date: Thu, 16 Feb 2023 08:30:27 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-101889.20230216083026.7174@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-19158.20221129125715.7174@ruby-lang.org

Issue #19158 has been updated by hsbt (Hiroshi SHIBATA).





This issue caused by https://git.ruby-lang.org/ruby.git/tree/tool/lib/bundled_gem.rb#n53.



```ruby

    unless spec.extensions.empty?

      spec.dependencies.clear

      File.binwrite(File.join(dir, spec_dir, ".bundled.#{target}.gemspec"), spec.to_ruby)

    end

```



We removed dependencies of debug gem for testing from gemspec temporally. After that, We re-use this modified gemspec for installation.



I confirmed to keep dependencies of debug gem with the following patch.



```

diff --git tool/rbinstall.rb tool/rbinstall.rb

index 85d05eff251..97e1a47fbae 100755

--- tool/rbinstall.rb

+++ tool/rbinstall.rb

@@ -1027,9 +1027,12 @@ def install_default_gem(dir, srcdir, bindir)

     next if /^\s*(?:#|$)/ =~ name

     next unless /^(\S+)\s+(\S+).*/ =~ name

     gem_name = "#$1-#$2"

-    path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"

+    # Try to find the gemspec file for C ext gems

+    # ex .bundle/gems/debug-1.7.1/debug-1.7.1.gemspec

+    # This gemspec keep the original dependencies

+    path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"

     unless File.exist?(path)

-      path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"

+      path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"

       unless File.exist?(path)

          skipped[gem_name] = "gemspec not found"

          next

--

```



 







----------------------------------------

Bug #19158: Ruby 3.1.3 installs wrong gemspec for debug gem

https://bugs.ruby-lang.org/issues/19158#change-101889



* Author: deivid (David Rodríguez)

* Status: Assigned

* Priority: Normal

* Assignee: hsbt (Hiroshi SHIBATA)

* ruby -v: ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [arm64-darwin22]

* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: REQUIRED, 3.2: REQUIRED

----------------------------------------

A pristine installation of Ruby 3.1.3 shows an installed `debug-1.6.3.gemspec` file that claims that debug-1.6.3 has no dependencies. This is incorrect, and causes issues for Bundler as reported at https://github.com/rubygems/rubygems/issues/6082.



An issue workaround is to manually reinstall the gem with `gem install debug:1.6.3`. That will reinstall the gem, including a correct gemspec file.



This is the file diff before and after reinstalling the gem



```diff

--- old.gemspec	2022-11-29 13:54:36

+++ /Users/deivid/.asdf/installs/ruby/3.1.3/lib/ruby/gems/3.1.0/specifications/debug-1.6.3.gemspec	2022-11-29 13:55:25

@@ -24,4 +24,16 @@

   s.summary = "Debugging functionality for Ruby".freeze

 

   s.installed_by_version = "3.3.26" if s.respond_to? :installed_by_version

+

+  if s.respond_to? :specification_version then

+    s.specification_version = 4

+  end

+

+  if s.respond_to? :add_runtime_dependency then

+    s.add_runtime_dependency(%q<irb>.freeze, [">= 1.3.6"])

+    s.add_runtime_dependency(%q<reline>.freeze, [">= 0.3.1"])

+  else

+    s.add_dependency(%q<irb>.freeze, [">= 1.3.6"])

+    s.add_dependency(%q<reline>.freeze, [">= 0.3.1"])

+  end

 end

```



In general, the files installed by ruby-core for bundled gems should be identical to the ones installed by explicit `gem install`.



This issue is also present in master and I'm guessing it was introduced by https://github.com/ruby/ruby/commit/a2c66f52f402cb58372e271226f3341065561e53 (backported at https://github.com/ruby/ruby/commit/2d26e45135af8b427d9ccc6d47082c21be8b9c74).







-- 

https://bugs.ruby-lang.org/

 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/

  parent reply	other threads:[~2023-02-16  8:30 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-29 12:57 [ruby-core:111053] [Ruby master Bug#19158] Ruby 3.1.3 installs wrong gemspec for debug gem deivid
2022-11-30  1:46 ` [ruby-core:111077] " nagachika (Tomoyuki Chikanaga)
2022-11-30  8:33 ` [ruby-core:111086] " deivid
2022-11-30 18:28 ` [ruby-core:111096] " deivid
2023-01-05  9:21 ` [ruby-core:111644] " hsbt (Hiroshi SHIBATA) via ruby-core
2023-02-15 19:24 ` [ruby-core:112437] " deivid via ruby-core
2023-02-16  7:02 ` [ruby-core:112442] " hsbt (Hiroshi SHIBATA) via ruby-core
2023-02-16  8:30 ` hsbt (Hiroshi SHIBATA) via ruby-core [this message]
2023-02-22  7:11 ` [ruby-core:112530] " hsbt (Hiroshi SHIBATA) via ruby-core
2023-02-23  3:48 ` [ruby-core:112545] " nagachika (Tomoyuki Chikanaga) via ruby-core

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-101889.20230216083026.7174@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    --cc=noreply@ruby-lang.org \
    --cc=ruby-core@ml.ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).