Граф коммитов

62556 Коммитов

Автор SHA1 Сообщение Дата
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 1b2bda72fc [rubygems/rubygems] Extend the script to allow reverting the patch when tried locally
https://github.com/rubygems/rubygems/commit/00ebf8c9f7
2020-07-31 21:07:19 +09:00
David Rodríguez 69881a41f2 [rubygems/rubygems] Add a CI test for basic rubygems functionality without openssl
The whole test suite actually passes on my system, but it has weird
errors in CI. Since I don't want to spend time on it, instead of running
the whole test suite, I'm just adding a bare test to check that `gem
list` works.

https://github.com/rubygems/rubygems/commit/a40d9a394a
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 6eb89f8637 [rubygems/rubygems] Remove now unneeded code
We patch `net-http-persistent` to not autoload `openssl`.

https://github.com/rubygems/rubygems/commit/757dec3cf2
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 6608bc77b6 [rubygems/rubygems] Fix skip message
https://github.com/rubygems/rubygems/commit/a763e539cd
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 779f1a9c69 [rubygems/rubygems] Set the expected hash in one step
https://github.com/rubygems/rubygems/commit/25912ce6c9
2020-07-31 21:07:19 +09:00
David Rodríguez 34527927e8 [rubygems/rubygems] Remove unnecessary check
No check is done for the other expectation and they are completely
symmetric as far as I can see.

https://github.com/rubygems/rubygems/commit/4de89e0718
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 07dc9691a8 [rubygems/rubygems] https functionality was merged into `net/https`
https://github.com/rubygems/rubygems/commit/d81ce9e457
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
David Rodríguez d3efba0950 [rubygems/rubygems] Run `test/rubygems/test_bundled_ca.rb` locally
It's not that slow.

https://github.com/rubygems/rubygems/commit/9b928a4503
2020-07-31 21:07:19 +09:00
David Rodríguez ed3794495d [rubygems/rubygems] Remove unused TEST_SSL environment variable
https://github.com/rubygems/rubygems/commit/1e2c3cf118
2020-07-31 21:07:19 +09:00
Nobuyoshi Nakada db2047ebaf [rubygems/rubygems] Fix encoding mismatch errors on MinGW
GNU make in MSys is localized to use UTF-8 while Ruby's filesystem
encoding is set to OEM CodePage (e.g., CP932 in Japanese Edition),
the read output from the make has broken encoding and results in
"invalid byte sequence" errors.  As `DESTDIR` is set to a US-ASCII
7bit clean string, matching as binary encoding should have no
problems.

https://github.com/rubygems/rubygems/commit/96a5e7523b
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
Jean Boussier 76722c4928 [rubygems/rubygems] Optimize Gem.already_loaded?
Profiling a simple `ruby -e '1'` I see:

```
==================================
  Mode: wall(10)
  Samples: 3414 (55.10% miss rate)
  GC: 856 (25.07%)
==================================
     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       689  (20.2%)         669  (19.6%)     Gem.already_loaded?
       462  (13.5%)         462  (13.5%)     (marking)
       393  (11.5%)         393  (11.5%)     (sweeping)
       815  (23.9%)         365  (10.7%)     Gem::Specification.load
      1050  (30.8%)         156   (4.6%)     Gem.register_default_spec
       100   (2.9%)          84   (2.5%)     Gem::Specification#files
        64   (1.9%)          64   (1.9%)     Gem::BasicSpecification#internal_init
       136   (4.0%)          59   (1.7%)     <top (required)>
      2312  (67.7%)          58   (1.7%)     <top (required)>
        57   (1.7%)          57   (1.7%)     RbConfig.expand
        81   (2.4%)          55   (1.6%)     Gem::Requirement.parse
       191   (5.6%)          51   (1.5%)     <top (required)>
       128   (3.7%)          47   (1.4%)     Gem::Requirement#initialize
        41   (1.2%)          41   (1.2%)     Gem.suffix_regexp
       229   (6.7%)          35   (1.0%)     <module:Gem>
       260   (7.6%)          34   (1.0%)     Kernel#require
```

So clearly `Gem.already_loaded?` is a major hotspot.

After this optimization, it's down to:
```
==================================
  Mode: wall(10)
  Samples: 2653 (58.21% miss rate)
  GC: 718 (27.06%)
==================================
     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       416  (15.7%)         416  (15.7%)     (marking)
       715  (27.0%)         312  (11.8%)     Gem::Specification.load
       299  (11.3%)         299  (11.3%)     (sweeping)
       279  (10.5%)         279  (10.5%)     Gem.already_loaded?
       564  (21.3%)         106   (4.0%)     Gem.register_default_spec
        95   (3.6%)          80   (3.0%)     Gem::Specification#files
        72   (2.7%)          72   (2.7%)     Gem::BasicSpecification#internal_init
       129   (4.9%)          58   (2.2%)     <top (required)>
        53   (2.0%)          53   (2.0%)     RbConfig.expand
      1697  (64.0%)          52   (2.0%)     <top (required)>
        68   (2.6%)          49   (1.8%)     Gem::Requirement.parse
       183   (6.9%)          48   (1.8%)     <top (required)>
       112   (4.2%)          44   (1.7%)     Gem::Requirement#initialize
       220   (8.3%)          33   (1.2%)     <module:Gem>
       250   (9.4%)          32   (1.2%)     Kernel#require
```

The idea is that the vast majority of the time `already_loaded?` won't match
anything. So by first looking for candidate paths that `end_with?` the file we
look for, we save `default_gem_load_paths.size` iterations and string concatenations.

https://github.com/rubygems/rubygems/commit/c60ce88d49
2020-07-31 21:07:19 +09:00
Hiroshi SHIBATA 832fe77879 Bump version to 3.2.0.rc.1 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
Bart de Water 8161cf85ba Stop using deprecated OpenSSL::Digest constants 2020-07-31 21:07:19 +09:00
Karol Bucek e7b6e0ff58 [rubygems/rubygems] remove explicit require(s) for auto-loaded constant(s)
the Gem module's auto-loads will handle loading these as needed,

this started as a redundancy found in *rubygems.rb* which had:
`autoload :Specification, 'rubygems/specification'` as well as
`require 'rubygems/specification'`

https://github.com/rubygems/rubygems/commit/43ceae7ac0
2020-07-31 21:07:19 +09:00
Marc-Andre Lafortune c3b480b776 [rubygems/rubygems] Test files should not be included in spec.files
https://github.com/rubygems/rubygems/commit/0c0760b734
2020-07-31 21:07:19 +09:00
David Rodríguez a89665b7b1 Enforce no empty lines around class body in rubygems
To normalize the code style with `bundler`.
2020-07-31 21:07:19 +09:00
Jeremy Evans a6bfc951aa Document Array#flatten{,!} accept explicit nil argument [ci skip]
Fixes [Bug #10475]
2020-07-30 12:39:54 -07:00
Aaron Patterson 7533519990
NODE_MATCH needs reference updating 2020-07-30 11:11:13 -07:00
git b933b43b67 * 2020-07-31 [ci skip] 2020-07-31 00:59:33 +09:00
Nobuyoshi Nakada 47f2c5429b
Added NUL-contained cases 2020-07-31 00:54:34 +09:00
Marc-Andre Lafortune 352895b751 [ruby/racc] Return `nil` for all syntax errors
https://github.com/ruby/racc/commit/51817ce0f6
2020-07-30 10:07:06 -04:00
Marc-Andre Lafortune 1b1ea7b3bc Fix Array#flatten for recursive array when given positive depth [Bug #17092] 2020-07-30 09:53:42 -04:00
Hiroshi SHIBATA 2bd1f827f1
Promote io-nonblock to the default gems. 2020-07-30 21:21:08 +09:00
Hiroshi SHIBATA d75b42a70a
Promote io-wait to the default gems 2020-07-30 21:10:28 +09:00