And I see that this causes raising an error when running bundle install on ruby/openssl with Ruby on the master branch. I captured the Gemeifile.lock by bundle lock. And I see the rdoc depending on psych depending on stringio.
The workaround was to add gem "stringio", "< 3.0.7" to the Gemfile. However, it's not convenient. Is it an expected behavior? Or should the ruby/ruby always merge the static version of the ruby/* (upstream standard libraries such as "stringio") rater than the development version?
$ which ruby
~/.local/ruby-bd786e7896/bin/ruby
$ ruby -v
ruby 3.3.0dev (2023-05-22T03:58:17Z master bd786e7896) [x86_64-linux]
$ pwd
/home/jaruga/git/ruby/openssl
$ bundle install --standalone
...
stringio-3.0.7 is built in to Ruby, and can't be cached because your Gemfile doesn't have any sources that contain it.
...
Bundler::GemNotFound: Could not find stringio-3.0.7.gem for installation
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/source/rubygems.rb:157:in
`install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/gem_installer.rb:54:in
`install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/parallel_installer.rb:156:in
`do_install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/parallel_installer.rb:147:in
`block in worker_pool'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:62:in `apply_func'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:57:in `block in
process_queue'
<internal:kernel>:187:in `loop'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:54:in `process_queue'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:90:in `block (2
levels) in create_threads'
An error occurred while installing stringio (3.0.7), and Bundler cannot continue.
Could you show the output of gem list | grep stringio?
Sure. Below is the result.
$ which gem
~/.local/ruby-bd786e7896/bin/gem
$ gem --version
3.5.0.dev
$ gem list | grep stringio
stringio (default: 3.0.7)
I think that I installed the used Ruby by the commands below from the ruby/ruby master branch commit bd786e78969f9d4a8699376ceafe10934b6ad533 that is relatively a new commit, and the commit date is 2 days ago.
$ ./configure \
--prefix=${HOME}/.local/ruby-bd786e7896 \
--enable-shared \
--enable-mkmf-verbose
$ make -j$(nproc)
$ make install
I was able to reproduce this on the latest master branch 78e9197f4a01676ab194d014d20c3ba4e9a1ee87 in the ruby/opnessl.
$ git remote -v | grep origin
origin git@github.com:ruby/openssl.git (fetch)
origin git@github.com:ruby/openssl.git (push)
$ git log --pretty=oneline | head -1
78e9197f4a01676ab194d014d20c3ba4e9a1ee87 Merge pull request #623 from junaruga/wip/enable-mkmf-verbose
$ which bundle
~/.local/ruby-bd786e7896/bin/bundle
$ bundle --version
Bundler version 2.5.0.dev
$ bundle install --standalone
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching rake 13.0.6
Installing rake 13.0.6
Using bundler 2.5.0.dev
Using openssl 3.1.0 from source at `.`
Fetching power_assert 2.0.3
stringio-3.0.7 is built in to Ruby, and can't be cached because your Gemfile doesn't have any sources that contain it.
Fetching rake-compiler 1.2.1
Installing power_assert 2.0.3
Fetching test-unit 3.5.8
Installing rake-compiler 1.2.1
Installing test-unit 3.5.8
Bundler::GemNotFound: Could not find stringio-3.0.7.gem for installation
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/source/rubygems.rb:157:in
`install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/gem_installer.rb:54:in
`install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/parallel_installer.rb:156:in
`do_install'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/installer/parallel_installer.rb:147:in
`block in worker_pool'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:62:in `apply_func'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:57:in `block in
process_queue'
<internal:kernel>:187:in `loop'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:54:in `process_queue'
/home/jaruga/.local/ruby-bd786e7896/lib/ruby/3.3.0+0/bundler/worker.rb:90:in `block (2
levels) in create_threads'
An error occurred while installing stringio (3.0.7), and Bundler cannot continue.
In Gemfile:
rdoc was resolved to 6.5.0, which depends on
psych was resolved to 5.1.0, which depends on
stringio
Ah, sorry. I missed that you use the --standalone option.
Can you remove the --standalone option?
Yes, okay. Yeah, it works with bundle install without --standalone option.
$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rake 13.0.6
Using openssl 3.1.0 from source at `.`
Using power_assert 2.0.3
Using stringio 3.0.7
Fetching rake-compiler 1.2.1
Using bundler 2.5.0.dev
Using test-unit 3.5.8
Using psych 5.1.0
Using rdoc 6.5.0
Installing rake-compiler 1.2.1
Bundle complete! 5 Gemfile dependencies, 9 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Why do you think so? I want to know the opinions for the following questions I wrote for the topic title and content. What are your opinions for the questions?
Is it an expected behavior?
Should a development version of the standard library be included in ruby/ruby? = Should the ruby/ruby always merge the static version of the ruby/* (upstream standard libraries such as "stringio") rater than the development version?
Should a development version of the standard library be included in ruby/ruby? = Should the ruby/ruby always merge the static version of the ruby/* (upstream standard libraries such as "stringio") rater than the development version?
I don't think "should". I think "may".
I think that there is no problem that ruby/ruby includes not released ruby/*.
Should a development version of the standard library be included in ruby/ruby? = Should the ruby/ruby always merge the static version of the ruby/* (upstream standard libraries such as "stringio") rater than the development version?
Yes, it should or may happen. And it's not a problem for users. Because in the Ruby development version, that bundle install --standalone may not work due to the development version of the standard libraries that don't exist in RubyGems. However, users can still use the bundle install without --standalone option as a workaround, while it's not the exact replacement.
So, I think we can close this ticket. And thank you for checking my issue.