678 Commits

Author SHA1 Message Date
xndcn
ac3f80a58e [rubygems/rubygems] Add writable check for cache dir
Sometimes "install_dir/cache" directory is not writable although "install_dir" is writable.

https://github.com/rubygems/rubygems/commit/665221cb69
2020-09-28 14:54:22 +09:00
Yusuke Endoh
c55b5f1062 [rubygems/rubygems] Avoid duplicated generation of APISpecification objects
As far as I could see, `Gem::Resolver::APISpecification` objects are
supposed to be immutable.  If my guessing is correct, then we can cache
and reuse its instances for performance.
At least, `rake` passes on my machine.

Before this change:

```
$ time ruby -I lib bin/gem install --no-doc aws-sdk
Successfully installed aws-sdk-3.0.1
1 gem installed
real    0m37.104s
user    0m36.952s
sys     0m0.333s
```

After this change:

```
$ time ruby -I lib bin/gem install --no-doc aws-sdk
Successfully installed aws-sdk-3.0.1
1 gem installed
real    0m23.905s
user    0m23.740s
sys     0m0.365s
```

https://github.com/rubygems/rubygems/commit/7e8fbba85c
2020-09-28 14:54:22 +09:00
Jean Boussier
91865230cd [rubygems/rubygems] Eval defaults with frozen_string_literal: true
https://github.com/rubygems/rubygems/commit/d498ae3d62
2020-09-28 14:54:22 +09:00
Ellen Marie Dash
9bbca93aa8 [rubygems/rubygems] Remove last remaining line of output from gem update --system --silent
https://github.com/rubygems/rubygems/commit/038203aaf8
2020-09-28 14:54:22 +09:00
Ellen Marie Dash
e8274a7683 [rubygems/rubygems] Add test for "gem update --system --silent"
https://github.com/rubygems/rubygems/commit/c3fb0db930
2020-09-28 14:54:22 +09:00
Ellen Marie Dash
7fc8f83edb [rubygems/rubygems] Have "gem update --system" pass through the --silent flag.
https://github.com/rubygems/rubygems/commit/5a1e56e892
2020-09-28 14:54:22 +09:00
Hiroshi SHIBATA
ab5e9516b7 [rubygems/rubygems] Added Ruby version for oldest supported version of rubygems
https://github.com/rubygems/rubygems/commit/dd87d70f51
2020-09-28 14:54:22 +09:00
David Rodríguez
c6bdf75049 Disallow downgrades to too old versions
Consider the version original included with each ruby as the minimum
supported version.
2020-09-28 14:54:22 +09:00
bronzdoc
828cefd629 [rubygems/rubygems] Add --dryrun to the deprecated options when showing the help message
https://github.com/rubygems/rubygems/commit/38230a77c1
2020-09-28 14:54:22 +09:00
bronzdoc
777840a16a [rubygems/rubygems] We don't need shortucts for a deprecated flag
https://github.com/rubygems/rubygems/commit/087a1f9720
2020-09-28 14:54:22 +09:00
bronzdoc
be980dd9fa [rubygems/rubygems] Deprecate --dryrun
https://github.com/rubygems/rubygems/commit/1715610648
2020-09-28 14:54:22 +09:00
bronzdoc
b83787b1ce [rubygems/rubygems] Make --dry-run flag consistent across rubygems commands
https://github.com/rubygems/rubygems/commit/addc644cad
2020-09-28 14:54:22 +09:00
Nobuyoshi Nakada
0629e695e3 Added --platform option to build command 2020-09-28 14:54:22 +09:00
Hiroshi SHIBATA
b717f73402
Revert "Manually merged from https://github.com/rubygems/rubygems/pull/2636"
31a6eaabc165d8a222e176f2c809d90622d88ec2 is obsoleted with
  https://github.com/rubygems/rubygems/pull/3820
2020-09-23 22:01:44 +09:00
Hiroshi SHIBATA
31a6eaabc1
Manually merged from https://github.com/rubygems/rubygems/pull/2636
Enable Style/EmptyLinesAroundClassBody rubocop cop.
2020-09-23 21:02:56 +09:00
Benoit Daloze
d7492a0be8 Revert changes to rdoc & rubygems regarding Tempfile.open(&block)
* They likely want to support older Ruby/tempfile versions
* Reverts part of e8c3872555fc85640505974e6b1c39d315572689
2020-08-29 12:49:20 +02:00
Benoit Daloze
e8c3872555 Simplify Tempfile.open calls with a block as they now unlink the file automatically 2020-08-29 12:23:23 +02:00
David Rodríguez
f80020bc50 [rubygems/rubygems] Read path binarily
I believe this should fix a flaky test on Windows.

https://github.com/rubygems/rubygems/commit/a516b49a0a
2020-07-31 21:07:19 +09:00
David Rodríguez
b7e88e3c2f [rubygems/rubygems] Don't format executables on gem update --system
This restores 3.0 behavior and goes back to not formatting executables
by default on `gem update --system`. This is friendlier for jruby and
doesn't really affect OS packagers.

https://github.com/rubygems/rubygems/commit/1a504b651d
2020-07-31 21:07:19 +09:00
Hiroshi SHIBATA
0e2d8c487c [rubygems/rubygems] unset XDG_* environmental variables for testing of rubygems.
https://github.com/rubygems/rubygems/commit/539fd9a39a
2020-07-31 21:07:19 +09:00
David Rodríguez
aa4ecfe7f7 [rubygems/rubygems] Revert "Disallow warnings to creep into the test suite"
This reverts commit 694e6afee769ffb3168a564ee7d315af2a934993.

It was failed on Windows and I'm unsure why. Also, the check seems
brittle since it could fail potentially fail because of warnings outside
of our control.

https://github.com/rubygems/rubygems/commit/908e9344dd
2020-07-31 21:07:19 +09:00
David Rodríguez
fe53e5a9f3 [rubygems/rubygems] Remove fileutils autoload
https://github.com/rubygems/rubygems/commit/dca345441f
2020-07-31 21:07:19 +09:00
David Rodríguez
fedaa61b3f [rubygems/rubygems] Remove explicit require for autoloaded constant
https://github.com/rubygems/rubygems/commit/a54230093e
2020-07-31 21:07:19 +09:00
David Rodríguez
3921ab8291 [rubygems/rubygems] Let more exceptions flow
If any error happens while verifying a package entry, it doesn't mean
that the package is corrupt. It could be a bug in rubygems, for example.
This in fact happened in CI and the current error doesn't make it easy
to troubleshoot the root cause, since it doesn't provide a backtrace.

See
https://github.com/rubygems/rubygems/pull/3807/checks?check_run_id=862526615.

So I propose to let the exception happens. There was something useful
about the previous message, which is the file entry where the error
happened, so I'm keeping that information in a warning message.

https://github.com/rubygems/rubygems/commit/ece87d858f
2020-07-31 21:07:19 +09:00
Nobuyoshi Nakada
ebf008b9ae [rubygems/rubygems] Install plugins to user directory
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
2020-07-31 21:07:19 +09:00
David Rodríguez
6c71033ac3 [rubygems/rubygems] Remove more unnecessary requires
Since `rubygems/util` is autoloaded.

https://github.com/rubygems/rubygems/commit/52a9f88b99
2020-07-31 21:07:19 +09:00
David Rodríguez
9057e9c7b1 [rubygems/rubygems] The file is only ever required when openssl is available
https://github.com/rubygems/rubygems/commit/41976ef3ec
2020-07-31 21:07:19 +09:00
David Rodríguez
ea8f7d4a81 [rubygems/rubygems] Gem::Specification#to_ruby doesn't need openssl
The `openssl` require when openssl not present was having the
side-effect the our custom require fallbacks would end up loading `Gem::Specification.stubs`.

Co-authored-by: Alyssa Ross <hi@alyssa.is>

https://github.com/rubygems/rubygems/commit/22c4ded4ad
2020-07-31 21:07:19 +09:00
David Rodríguez
e1494145d9 [rubygems/rubygems] Make sure tests at least load without openssl
https://github.com/rubygems/rubygems/commit/054d57f74b
2020-07-31 21:07:19 +09:00
David Rodríguez
69fa0d6d30 [rubygems/rubygems] Move openssl require to a separate file
So it can be reused.

https://github.com/rubygems/rubygems/commit/b9fc6e40db
2020-07-31 21:07:19 +09:00
David Rodríguez
6b14249c98 [rubygems/rubygems] In the rubies we support Exception#path is always there
https://github.com/rubygems/rubygems/commit/babf943144
2020-07-31 21:07:19 +09:00
David Rodríguez
0a7f12fcc6 [rubygems/rubygems] Only require what we are using
https://github.com/rubygems/rubygems/commit/d92b94f3cf
2020-07-31 21:07:19 +09:00
David Rodríguez
9ad9c2d9c3 [rubygems/rubygems] Let the original error happen
It will give more useful information.

https://github.com/rubygems/rubygems/commit/efcecb5af5
2020-07-31 21:07:19 +09:00
David Rodríguez
b84b4e8bfa [rubygems/rubygems] Remove unnecessary stuff
The `rubygems/security` require already does this.

https://github.com/rubygems/rubygems/commit/bbb444b6f1
2020-07-31 21:07:19 +09:00
bronzdoc
6c19b0ec6e [rubygems/rubygems] Reword warning
https://github.com/rubygems/rubygems/commit/cbd4abf8cf
2020-07-31 21:07:19 +09:00
bronzdoc
00bdac18cf [rubygems/rubygems] Warn on duplicate dependency in a specification
https://github.com/rubygems/rubygems/commit/af3e5f7883
2020-07-31 21:07:19 +09:00
David Rodríguez
985309ac38 [rubygems/rubygems] Support PATH's using File::ALT_SEPARATOR in Gem::Installer
Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com>

https://github.com/rubygems/rubygems/commit/710b969b60
2020-07-31 21:07:19 +09:00
David Rodríguez
04d3e0727a [rubygems/rubygems] Move traling if to the same line for readablity
https://github.com/rubygems/rubygems/commit/d722b8b578
2020-07-31 21:07:19 +09:00
David Rodríguez
c090c64b4f [rubygems/rubygems] Prefer the standard separator on Windows
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
2020-07-31 21:07:19 +09:00
Colby Swandale
65a4b03781 [rubygems/rubygems] fix missing identation
https://github.com/rubygems/rubygems/commit/2cca6714f3
2020-07-31 21:07:19 +09:00
Jean Boussier
561576367b [rubygems/rubygems] Deduplicate the requirement operators in memory
https://github.com/rubygems/rubygems/commit/9963d33cf2
2020-07-31 21:07:19 +09:00
Jeremy Evans
1a935606b5 [rubygems/rubygems] Fix Kernel#warn override to handle backtrace location with nil path
It's very unlikely to hit this case, but it is possible, as
Thread::Backtrace::Location#path can return nil if the location is
a cfunc with no previous iseq.  See location_path in vm_backtrace.c
in Ruby.

https://github.com/rubygems/rubygems/commit/511935645a
2020-07-31 21:07:19 +09:00
Benoit Daloze
331fe6a88f [rubygems/rubygems] Ignore internal frames in RubyGems' Kernel#warn
* See https://github.com/oracle/truffleruby/issues/2046
* `<internal:` is a common prefix also used by core Ruby files in CRuby.
* test_no_kernel_require_in_*warn_with_uplevel already test this.
* Unfortunately just skipping `<internal:` in the Ruby implementation
  is not enough, because RubyGems' #warn would not skip the
  `<internal:` require (TruffleRuby defines #require in Ruby),
  and the Ruby implementation's #warn would not skip
  RubyGems's #require. The #caller_locations(0) look like this:

  warnee.rb:1:in `<top (required)>' # where #warn is called
  <internal:core> core/kernel.rb:234:in `gem_original_require' # not skipped by RubyGems' warn, skipped by the Ruby impl
  rubygems/core_ext/kernel_require.rb:54:in `require' # not skipped by the Ruby impl's warn, what would be shown without this fix
  warn.rb:1:in `<main>' # what would be correct

  warn.rb is
  require "warnee"
  warnee.rb is
  puts caller_locations(0), nil
  warn "oops", uplevel: 1

https://github.com/rubygems/rubygems/commit/7c838f7419
2020-07-31 21:07:19 +09:00
David Rodríguez
14ab281faa [rubygems/rubygems] Disallow warnings to creep into the test suite
https://github.com/rubygems/rubygems/commit/694e6afee7
2020-07-31 21:07:19 +09:00
David Rodríguez
9d6123da15 [rubygems/rubygems] Fix test warning
https://github.com/rubygems/rubygems/commit/f4c4cddb68
2020-07-31 21:07:19 +09:00
David Rodríguez
06f84d0567 [rubygems/rubygems] Don't super on main test setup
The `teardown` method doesn't call it either and I don't think it's
necessary.

https://github.com/rubygems/rubygems/commit/ca2a5d485d
2020-07-31 21:07:19 +09:00
David Rodríguez
d0cc4ecb8f [rubygems/rubygems] Remove very old compatibility code
https://github.com/rubygems/rubygems/commit/6e4bef758b
2020-07-31 21:07:19 +09:00
David Rodríguez
1260d22cae [rubygems/rubygems] Extract some common code into a private method
https://github.com/rubygems/rubygems/commit/d1be8cdb3a
2020-07-31 21:07:19 +09:00
David Rodríguez
d5b5a7ab31 [rubygems/rubygems] Remove very old TODO note
It was added 10 years ago on a "146 additions, 170 deletions" commit
named "Deprecation removals and minor cleanup." that didn't explain much
other than that.

This TODO doesn't necessarily apply nowadays. I don't see how anyways.
TODO notes, if useful at all, should include a clear explanation of what
should be done either via the note itself or the commit message. This
note doens't meet any of these.

So I want to remove it because it distracts me every time I go through
it.

https://github.com/rubygems/rubygems/commit/58d81e8a32
2020-07-31 21:07:19 +09:00
Bart de Water
734c5276f0 [rubygems/rubygems] Simplify digest name selection and use SHA256
The previous commit introduces the Gem::Security.create_digest method, allowing to:
- decouple algorithm choice from implementation (OpenSSL or Ruby built-in)
- untangle the SHA512 fallback for TarWriter from the generic hashing digest choice (undoing commit 9471f8ed2bdc12248d2619bbbce6e53cd6c16cb6)

https://github.com/rubygems/rubygems/commit/1bc03231e4
2020-07-31 21:07:19 +09:00