summaryrefslogtreecommitdiff
path: root/lib/rubygems/installer.rb
AgeCommit message (Collapse)Author
2022-01-15[rubygems/rubygems] Support binstubs with `--enable-load-relative` prologDavid Rodríguez
https://github.com/rubygems/rubygems/commit/32a5e9057a
2022-01-15[rubygems/rubygems] Extract a bit of common logic to methodsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/9a1b891435
2022-01-15[rubygems/rubygems] Fix method documentation to be more correct EnglishDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bcffd92c48
2021-12-20[rubygems/rubygems] Add support in binstubs for trampolining bundlerDavid Rodríguez
If `bundler _<version>_` is given, I guess the most reasonable approach is to completely skip version switching, because the user is technically opting out of it. But since binstubs completely remove this argument from `ARGV` after processing it, we have no way of detecting that it was actually passed in the first place in order to skip the feature. So we set `BUNDLER_VERSION` explicitly in this case. https://github.com/rubygems/rubygems/commit/e0f360d6d7
2021-11-30[rubygems/rubygems] Fix race condition when reading & writing gemspecs ↵David Rodríguez
concurrently When bundler parallel installer installs gems concurrently, one can get confusing warnings like the following: ``` "[/home/runner/work/rubygems/rubygems/bundler/tmp/2/gems/system/specifications/zeitwerk-2.4.2.gemspec] isn't a Gem::Specification (NilClass instead). ``` I've got these warnings several times in the past, but I never managed to reproduce them, and never look deeply into the root cause, but this time a got a cause that reproduced quite frequently, so I looked into it. The problem is one thread reading a gemspec while another thread is writing it. The write of the gemspec was not protected, so `Gem::Specification.load` could end up seeing a truncated gemspec and thus throw this warning. The fix involve two changes: * Change the methods that write gemspecs to use `Gem.binary_write` which is protected by a lock. * Fix `Gem.binary_write` to create the file lock at file creation time, not when the file already exists after. The realworld user problem caused by this issue happens in bundler, but I'm fixing it in rubygems first, and then I'll backport to bundler whatever needs backporting to fix the issue on the bundler side. https://github.com/rubygems/rubygems/commit/a672e7555c
2021-11-30[rubygems/rubygems] Revert "Remove spec file before building"David Rodríguez
This reverts commit af604436d8141c34cb2e1e645b9b0d47bfd55a55. The issue that led to introducing it was never reproduced. I tried to repro with this patch and it still works just fine. Since this removal is getting in the middle for some race conditions I'm facing, I'm reverting the patch. https://github.com/rubygems/rubygems/commit/2dd267f0e4
2021-11-18[rubygems/rubygems] Protect specs access at a finer levelDavid Rodríguez
https://github.com/rubygems/rubygems/commit/c8cc053bde
2021-11-16Merge the master branch of rubygems repoHiroshi SHIBATA
Picked from https://github.com/rubygems/rubygems/commit/4b498709a015a94e14a3852a1841a7a3e669133d
2021-08-31[rubygems/rubygems] Prefer `require_relative` to `require` for internal requiresDavid Rodríguez
https://github.com/rubygems/rubygems/commit/c74fc58695 Notes: Merged: https://github.com/ruby/ruby/pull/4789
2021-08-31[rubygems/rubygems] Don't use gemdeps on bundler binstubDavid Rodríguez
https://github.com/rubygems/rubygems/commit/320fdc1513 Notes: Merged: https://github.com/ruby/ruby/pull/4789
2021-08-31[rubygems/rubygems] Use `Gem.use_gemdeps` only from binstubsDavid Rodríguez
The previous behavior was to automatically require `bundler/setup` everytime `rubygems` was required, which I think was too much. https://github.com/rubygems/rubygems/commit/b25379a295 Notes: Merged: https://github.com/ruby/ruby/pull/4789
2021-07-07Sync RubyGems and Bundler with upstreamHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/4634
2021-07-07Sync latest bundler & rubygems development versionDavid Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/4533
2021-04-15Merge the master branch of RubyGemsHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/4383
2020-12-23Merge RubyGems 3.2.3 and Bundler 2.2.3Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3982
2020-12-08Merge prepare version of RubyGems 3.2.0Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3864
2020-09-23Revert "Manually merged from https://github.com/rubygems/rubygems/pull/2636"Hiroshi SHIBATA
31a6eaabc165d8a222e176f2c809d90622d88ec2 is obsoleted with https://github.com/rubygems/rubygems/pull/3820
2020-09-23Manually merged from https://github.com/rubygems/rubygems/pull/2636Hiroshi SHIBATA
Enable Style/EmptyLinesAroundClassBody rubocop cop.
2020-07-31[rubygems/rubygems] Install plugins to user directoryNobuyoshi Nakada
Fixes the `Gem::FilePermissionError` without the privilege. Initialize `@plugins_dir` to the user gem directory, when installing with `--user` option. https://github.com/rubygems/rubygems/commit/21a71ac769 Notes: Merged: https://github.com/ruby/ruby/pull/3379
2020-07-31[rubygems/rubygems] Support PATH's using `File::ALT_SEPARATOR` in ↵David Rodríguez
`Gem::Installer` Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com> https://github.com/rubygems/rubygems/commit/710b969b60 Notes: Merged: https://github.com/ruby/ruby/pull/3379
2020-07-31[rubygems/rubygems] Move traling `if` to the same line for readablityDavid Rodríguez
https://github.com/rubygems/rubygems/commit/d722b8b578 Notes: Merged: https://github.com/ruby/ruby/pull/3379
2020-07-31[rubygems/rubygems] Prefer the standard separator on WindowsDavid Rodríguez
It seems like the most common case since it requires no tricks on our CI environment. Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com> https://github.com/rubygems/rubygems/commit/751c475574 Notes: Merged: https://github.com/ruby/ruby/pull/3379
2020-07-31Enforce no empty lines around class body in rubygemsDavid Rodríguez
To normalize the code style with `bundler`. Notes: Merged: https://github.com/ruby/ruby/pull/3379
2020-06-15Use space inside block braces everywhereDavid Rodríguez
To make rubygems code style consistent with bundler. Notes: Merged: https://github.com/ruby/ruby/pull/3229
2020-06-05Enable rubocop-performance StartWith copOlle Jonsson
- this would keep the could-be-a-string-method matches few Notes: Merged: https://github.com/ruby/ruby/pull/3184
2020-05-22Revert a commit miss in "Fixed potential memory leak"Nobuyoshi Nakada
This reverts an unintentional change in commit 79d9528ddca1dfe2dd99287dc88fd7c2b30f7137.
2020-05-22Fixed potential memory leakNobuyoshi Nakada
Create a wrapper object first, then buffer allocation which can fail.
2020-05-08[rubygems/rubygems] Prefer `tr` to `gsub` when replacing path separatorsDavid Rodríguez
This is not detected by the `Performance/StringReplacement` cop, I guess because of using constants. But still seems like a good change. Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com> https://github.com/rubygems/rubygems/commit/f862103133 Notes: Merged: https://github.com/ruby/ruby/pull/3092
2020-05-08[rubygems/rubygems] Shortcuit method earlierDavid Rodríguez
If the class variable is set, we can skip the whole thing from the beginning. Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com> https://github.com/rubygems/rubygems/commit/83abf3a3d4 Notes: Merged: https://github.com/ruby/ruby/pull/3092
2020-05-08[rubygems/rubygems] Fix race condition on bundler's parallel installerDavid Rodríguez
When installing in parallel, bundler creates several `Gem::Installer` instances that run in parallel. These installers access the `@@all` class variable of `Gem::Specification` concurrently. If a concurrent thread calls `Gem::Specification.reset` (resetting `@all` to `nil`) while another thread is running `Gem::Specification._all` or another method that expects `@@all` to be loaded and not `nil`, that can result in `Enumerable` methods being called on `nil`, resulting in crashes. I fix it by protecting the other concurrent access to the `@all` variable. https://github.com/rubygems/rubygems/commit/58b343c530 Notes: Merged: https://github.com/ruby/ruby/pull/3092
2020-05-08[rubygems/rubygems] Rename version horizon deprecation methodsbronzdoc
https://github.com/rubygems/rubygems/commit/6afd914fda Notes: Merged: https://github.com/ruby/ruby/pull/3087
2020-05-08[rubygems/rubygems] Modify files to use new version horizon deprecationsbronzdoc
https://github.com/rubygems/rubygems/commit/4fe5bb5bf3 Notes: Merged: https://github.com/ruby/ruby/pull/3087
2020-03-24Sync rubygems with current master (#2889)David Rodríguez
Notes: Merged-By: hsbt <hsbt@ruby-lang.org>
2020-02-01Merge the current master branch of rubygems/rubygems.Hiroshi SHIBATA
Just started to develop RubyGems 3.2.0.
2019-11-11Merge RubyGems 3.1.0.pre3Hiroshi SHIBATA
* Fix gem pristine not accounting for user installed gems. Pull request #2914 by Luis Sagastume. * Refactor keyword argument test for Ruby 2.7. Pull request #2947 by SHIBATA Hiroshi. * Fix errors at frozen Gem::Version. Pull request #2949 by Nobuyoshi Nakada. * Remove taint usage on Ruby 2.7+. Pull request #2951 by Jeremy Evans. * Check Manifest.txt is up to date. Pull request #2953 by David Rodríguez. * Clarify symlink conditionals in tests. Pull request #2962 by David Rodríguez. * Update command line parsing to work under ps. Pull request #2966 by David Rodríguez. * Properly test `Gem::Specifications.stub_for`. Pull request #2970 by David Rodríguez. * Fix Gem::LOADED_SPECS_MUTEX handling for recursive locking. Pull request #2985 by MSP-Greg. Notes: Merged: https://github.com/ruby/ruby/pull/2666
2019-09-26[rubygems/rubygems] filter dependency type and name strictly.Hiroshi SHIBATA
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org> https://github.com/rubygems/rubygems/commit/92892bbc3a
2019-09-26[rubygems/rubygems] Introduce default prerelease requirementDavid Rodríguez
https://github.com/rubygems/rubygems/commit/506c5bce49
2019-09-05[rubygems/rubygems] Bump rubocop to 0.74.0 and fix new offensesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/d4fc383497
2019-08-17Support the current stable version of Ruby like 2.5 and 2.6.Hiroshi SHIBATA
2019-08-17[rubygems/rubygems] installer.rb - fix #windows_stub_scriptMSP-Greg
use ruby_exe in heredocs instead of ruby.exe https://github.com/rubygems/rubygems/commit/9f1b7d6590
2019-08-14fix last commit.Koichi Sasada
2019-08-14change Proc#to_s format ('@...' -> ' ...') (#2362)Koichi Sasada
Now Proc#to_s returns "#<Proc:0x00000237a0f5f170@t.rb:1>". However, it is convenient to select a file name by (double-)clicking on some terminals by separating ' ' instead of '@' like "#<Proc:0x00000237a0f5f170 t.rb:1>" [Feature #16101]
2019-07-31[rubygems/rubygems] Move default specifications dir definition out of ↵Vít Ondruch
BasicSpecification. This was never the right place. The method got there just by evolution, not by design. Move it within default methods, where it suits better. Since this method is presumably used just internally, it should be safe to deprecate it and remove later. https://github.com/rubygems/rubygems/commit/0c0dd9458a
2019-07-31[rubygems/rubygems] Add a package attr_reader to Gem::Installer.Daniel Berger
Add some basic specs for the package attr_reader. https://github.com/rubygems/rubygems/commit/68af2a0ee3
2019-04-28Update rubygems with latest upstream changesDavid Rodríguez
Closes: https://github.com/ruby/ruby/pull/2154
2019-04-02Merge rubygems/rubygems from upstream.hsbt
The current master branch is https://github.com/rubygems/rubygems/commit/97b264f0fa248c864b6ee9a23d3ff1cdd217dddb git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-05Merge RubyGems upstream: 56c0bbb69e4506bda7ef7f447dfec5db820df20bhsbt
It fixed the multiple vulnerabilities. https://blog.rubygems.org/2019/03/05/security-advisories-2019-03.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-14Merge RubyGems master@9be7858f7f17eae3058204f3c03e4b798ba18b9chsbt
This version contains the some style changes by RuboCop. * https://github.com/rubygems/rubygems/commit/9d810be0ede925fb2e3af535848582c3f8e0e72f * https://github.com/rubygems/rubygems/commit/61ea98a727fb1b76b6fac52d74107ee4b02aaef2 * https://github.com/rubygems/rubygems/commit/795893dce3c5f8540804fc08144cc6a90f086b13 * https://github.com/rubygems/rubygems/commit/9be7858f7f17eae3058204f3c03e4b798ba18b9c git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-23Merge RubyGems 3.0.1 from rubygems/rubygems.hsbt
It fixed the issues of RubyGems 3.0.0. https://blog.rubygems.org/2018/12/23/3.0.1-released.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-28Merge rubygems upstream from ↵hsbt
https://github.com/rubygems/rubygems/commit/2c499655f29070c809dfea9f5fda6fac6850e62e https://github.com/rubygems/rubygems/pull/2493 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e