Commit graph

11330 commits

Author SHA1 Message Date
David Rodríguez
0a6b9924bd [rubygems/rubygems] Fix generated standalone script for default gems
The installer is actually rewriting the spec's full gem path to be the
one of the newly installed gem, however the accessor was not properly
working for `StubSpecification` instances, and default gems are always
of this type, because they are always present locally.

Fix the accessor to properly update the underlying full specification.

efa41babfa
2022-06-01 17:07:35 +09:00
David Rodríguez
f5b88d93ae [rubygems/rubygems] Remove code that seems unnecessary
This change was never covered with a spec, and we have recently covered
the case of partially deleted gems with specs and it works fine
(installation is "auto-healed").

6e66ee4235
2022-06-01 17:07:34 +09:00
David Rodríguez
8381c568e7 [rubygems/rubygems] Restore ability to load old marshalled gemspec that use YAML::PrivateType
This issue was not detected because when all traces of old YAML parser
and emitter `Syck` were removed, this null-type.gemspec.rz marshalled
gemspec was updated to no longer load `YAML::Syck::PrivateType` but load
`Psych::PrivateType` instead.

However, realworld old marshalled gemspecs still use the
`YAML::PrivateType` constant, so this commit replaces the gemspec to be
the real pry-0.4.7 marshalled gemspec, so that it catches this issue.

51b330b8d2
2022-06-01 17:06:52 +09:00
David Rodríguez
ebb534801f [rubygems/rubygems] Remove no longer needed Psych::PrivateType cleanup
This old bug used to affect the `rubyforge_project` field in serialized
gemspecs. However, this field has been removed and it's no longer
present in marshaled loaded gemspecs.

So, while the constant is still present in these marshalled gemspecs and
we still need to make sure it exists, we no longer need to clean it up
from the loaded data.

09df18e522
2022-06-01 17:06:51 +09:00
David Rodríguez
fd83b8887f [rubygems/rubygems] Skip duplicated dependency warning for gemspec dev deps
Generally this warning is skipped for gemspec development dependencies.
I think because it's common to override them in the Gemfile to change
the source, for example.

But the order of conditions was not correct and the warning was still
being printed in one case.

da9d1d6a3f
2022-06-01 00:14:31 +09:00
David Rodríguez
e2b421d679 [rubygems/rubygems] Give better conflict resolution advice
This alternative really uses only the Gemfile, and can never end up
being absurd, because it will never be suggested when there's no
lockfile, and it suggests deleting the lockfile.

5d154dd50e
2022-05-31 16:13:52 +09:00
Burdette Lamar
c50c9d4051 [ruby/fileutils] [DOC] Enhanced RDoc (https://github.com/ruby/fileutils/pull/77)
Treats:
    ::copy_entry
    ::copy_file
    ::copy_stream
    ::mv

d6d7e5330d
2022-05-31 02:30:07 +09:00
David Rodríguez
d6684f063b [rubygems/rubygems] Fix crash when commenting out a mirror in configuration
2d99277328
2022-05-30 17:43:12 +09:00
David Rodríguez
ea31c5bcd1 [rubygems/rubygems] Fix crash when installing gems with symlinks
If BUNDLE_PATH is configured to a symlinked path, installing gems with
symlinks would crash with an error like this:

```
Gem::Package::SymlinkError: installing symlink 'man/man0/README.markdown' pointing to parent path /usr/home/stevewi/srv/mail/lib/tools/.vendor/ruby/3.1.0/gems/binman-5.1.0/README.markdown of /srv/mail/lib/tools/.vendor/ruby/3.1.0/gems/binman-5.1.0 is not allowed
```

This commit fixes the problem by changing the bundle path to be the
realpath of the configured value, right after we're sure the path has
been created.

3cd3dd142a
2022-05-30 17:42:39 +09:00
David Rodríguez
0a974e4700 [rubygems/rubygems] Remove seemingly unnecessary code
f5dd5204ca
2022-05-30 17:42:37 +09:00
David Rodríguez
08b82e6b40 [rubygems/rubygems] Ignore Errno::EROFS errors when creating bundler.lock
Apparently old versions of MacOS would set `GEM_HOME` to a `/System`
folder, and trying to create a file there raises `Errno::EROFS`.

We ignore the error. Any permission issues should be better handled
further down the line.

ef90c071d0
2022-05-30 00:27:43 +09:00
David Rodríguez
373dabe00a [rubygems/rubygems] Ignore Errno::EPERM errors when creating bundler.lock
This kind of error can happen when setting `GEM_HOME` to a path
under MacOS System Integrity Protection.

We ignore the error. Any permission issues should be better handled
further down the line.

174cb66863
2022-05-29 22:19:35 +09:00
David Rodríguez
6e3295e554 [rubygems/rubygems] Make code to find target update version easier to follow
a7f81cc7ee
2022-05-28 19:22:54 +09:00
David Rodríguez
e9c4e37f1f [rubygems/rubygems] Remove unnecessary name and platform filter
It's already done before.

49d28cfde5
2022-05-28 19:22:53 +09:00
David Rodríguez
e78c1ddb1e [rubygems/rubygems] Fix rubygems update when non default --install-dir is configured
9f3b21192d
2022-05-28 19:22:15 +09:00
David Rodríguez
6778d321a7 [rubygems/rubygems] Show better error when previous installation fails to be removed
Instead of guessing on the culprit.

We actually have a helper, `Bundler.rm_rf`, with exactly the behavior
that we want:

* Allow the passed folder to not exist.
* No exception swallowing other than that.

5fa3e6f04a
2022-05-27 17:26:22 +09:00
Burdette Lamar
012eb9b70d [ruby/fileutils] [DOC] Enhanced RDoc for copy_entry (https://github.com/ruby/fileutils/pull/76)
27a3c376c7
2022-05-26 07:08:26 +09:00
Nobuyoshi Nakada
cd6f87eefc [ruby/timeout] Set the flag surely before return
f3a31abdfb
2022-05-25 19:50:47 +09:00
Nobuyoshi Nakada
8006a15edf [ruby/timeout] Add epoch.rake [ci skip]
5153ae9cad
2022-05-25 19:05:16 +09:00
Nobuyoshi Nakada
df7a1377e6 [ruby/timeout] Update spec files not to include unused files [ci skip]
01c44b591f
2022-05-25 18:58:46 +09:00
Nobuyoshi Nakada
e77e233935 [ruby/timeout] Hack to avoid leak checker
9a9b03b44c
2022-05-25 18:47:26 +09:00
Hiroshi SHIBATA
fde4519af8 [ruby/timeout] Bump version to 0.3.0
f69f954a94
2022-05-25 18:08:01 +09:00
nicholas a. evans
d020334e9e [ruby/reline] Workaround libncurses.so as a linker script
This maybe isn't probably isn't the best approach, but it will allow
`Fiddle::Terminfo.curses_dl` to work.  I documented more details about
this in an issue on fiddle: https://github.com/ruby/fiddle/issues/107

It is probably better to deal with it there.  But this is workaround is
simpler.

FYI: `reline` itself seems to be working just fine for me _without_
loading ncurses.  But I wanted to be able to use `Reline::Terminfo` for
my own projects. :)

fd4bdb35e2
2022-05-25 06:34:28 +09:00
David Rodríguez
9fdef28687 [rubygems/rubygems] Show exception cause in bug report template
84b163e804
2022-05-25 01:17:59 +09:00
Burdette Lamar
ae09fffbff [ruby/fileutils] [DOC] Enhanced RDoc for ::cp_r (https://github.com/ruby/fileutils/pull/75)
a4da433443
2022-05-25 00:38:14 +09:00
David Rodríguez
633608ebd4 [rubygems/rubygems] Fix crash when printing resolution conflicts on metadata requirements
b69e1e9374
2022-05-24 21:24:57 +09:00
Burdette Lamar
9c9c217045 [ruby/fileutils] [DOC] Enhanced RDoc for ::cp (https://github.com/ruby/fileutils/pull/74)
956b345ceb
2022-05-24 07:57:52 +09:00
Burdette Lamar
08b2f22c27 [ruby/fileutils] Enhanced RDoc for ::ln_sf and ::link_entry (https://github.com/ruby/fileutils/pull/73)
ff49055f8a
2022-05-24 01:17:11 +09:00
Burdette Lamar
479884d596 [ruby/fileutils] [DOC] Enhanced RDoc for ::ln_s (https://github.com/ruby/fileutils/pull/72)
db612c5e22
2022-05-23 22:00:33 +09:00
Yusuke Endoh
663915ddf4 [rubygems/rubygems] Support the change of did_you_mean about Exception#detailed_message
I am asking did_you_mean to use Exception#detailed_message to add
"Did you mean?" suggestion instead of overriding #message method.

https://github.com/ruby/did_you_mean/pull/177

Unfortunately, the change will affect Gem::UnknownCommandError, which
excepts did_you_mean to override #message method.

This PR absorbs the change of did_you_mean.
Gem::CommandManager now calls #detailed_message method to get a message
string with "Did you mean?" suggestion from an exception.

8f104228d3
2022-05-23 20:51:17 +09:00
Nobuyoshi Nakada
4cf155e007 [ruby/net-http] [DOC] Get rid of a RDoc bug
RDoc overrides class name by the assigned name unexpectedly when
assigned using a qualified class path.

a7bded0407
2022-05-23 18:23:22 +09:00
Burdette Lamar
aef36bb933 [ruby/fileutils] Enhanced RDoc for #cp_lr (https://github.com/ruby/fileutils/pull/71)
39772bccca
2022-05-21 08:55:57 +09:00
Nobuyoshi Nakada
8fa9e168be [ruby/net-http] Make the recommended name formal
`HTTPServerException` is the name deprecated since years ago.

b3028fef5a
2022-05-21 00:41:54 +09:00
ima1zumi
bcdbfe4b6e
[ruby/reline] Require Ruby >= 2.6
fix https://github.com/ruby/reline/pull/428

dae9eca323
2022-05-20 17:49:15 +09:00
Burdette Lamar
589f1c1d55
[ruby/tempfile] Enhanced RDoc for ::new and ::create (https://github.com/ruby/tempfile/pull/10)
a5e53aa82a
2022-05-20 17:49:14 +09:00
Olle Jonsson
6923dd932b
[ruby/tempfile] Drop unused gemspec directives
This gem exposes no executables.

07fde5fe14
2022-05-20 17:49:14 +09:00
Hiroshi SHIBATA
aeea88174d
Merge RubyGems and Bundler HEAD
125415593e
2022-05-20 17:32:19 +09:00
Jean byroot Boussier
bd8df25cdc
[ruby/did_you_mean] Fix frozen_string_literal is ignored after any tokens warning. (https://github.com/ruby/did_you_mean/pull/172)
```
did_you_mean/formatters/verbose_formatter.rb:5: warning: `frozen_string_literal' is ignored after any tokens
```

531760f323
2022-05-20 17:32:18 +09:00
Benoit Daloze
75fcfb1416 [ruby/timeout] Remove redundant done? check
* It's already checked inside #interrupt.

5f43254f81
2022-05-19 07:19:42 +09:00
Benoit Daloze
240ac9eaa8 [ruby/timeout] Synchronize all accesses to @done
* So it is trivially correct.
* Performance seems the same overall.

5e0d8e1637
2022-05-19 07:19:41 +09:00
Benoit Daloze
354cd6f210 [ruby/timeout] Handle Timeout + fork and add test for it
4baee63b9b
2022-05-19 07:19:40 +09:00
Benoit Daloze
89fbec224d [ruby/timeout] Reimplement Timeout.timeout with a single thread and a Queue
2bafc458f1
2022-05-19 07:19:39 +09:00
Kouhei Yanagita
e658da9408 [ruby/irb] Fix documents for .irbrc path
af99c01b0d
2022-05-18 07:12:29 +09:00
Kazuhiro NISHIYAMA
f2dc972940 [ruby/set] Fix a typo
71a876ae81
2022-05-16 23:43:04 +09:00
David Rodríguez
641c3830df [rubygems/rubygems] Use Array#concat in SpecSet#for to save memory
On `rails/rails` repository Gemfile, running the following script

```
# script.rb
require "bundler/setup"
```

#### Before

```
➜  rails git:(main) ✗ BUNDLER_VERSION=2.4.0.dev ruby-memory-profiler --pretty --no-detailed --allocated-strings=0 --retained-strings=0 script.rb
Total allocated: 24.37 MB (207937 objects)
Total retained:  2.98 MB (34152 objects)
```

#### After

```
➜  rails git:(main) ✗ BUNDLER_VERSION=2.4.0.dev ruby-memory-profiler --pretty --no-detailed --allocated-strings=0 --retained-strings=0 script.rb
Total allocated: 22.27 MB (206856 objects)
Total retained:  2.98 MB (34152 objects)
```

2ea2523afd

Co-authored-by: Josh Nichols <josh.nichols@gusto.com>
2022-05-16 17:24:14 +09:00
David Rodríguez
c380aac19d [rubygems/rubygems] Improve bundler/setup performance again
On a different patch, it was noticed Ngam Pham that we are calling
`LazySpecification#hash` many times, and simply memoizing that led to a
very considerable performance improvement in his app.

I noticed though that we shouldn't be calling `LazySpecification#hash`
that many times, and I located the culprit at `SpecSet#for` where we
were deduplicating the partial aggregated result on every iteration. It
is enough to do it just once at the end.

This leads on a 12% speedup on Rails repository Gemfile vs the previous
8% I was getting from memoizing `LazySpecification#hash`. Also, after
this patch memoizing `LazySpecification#hash` has no effect in
performance anymore.

68d00a9edd

Co-authored-by: Ngan Pham <ngan@users.noreply.github.com>
2022-05-16 17:24:14 +09:00
Nobuyoshi Nakada
774b9e27ae [ruby/racc] [DOC] Remove stale Object::ParseError documentation
4ecc13c9cb
2022-05-16 12:24:10 +09:00
Burdette Lamar
48002ff187 [ruby/fileutils] [DOC] Enhanced RDoc for #ln (https://github.com/ruby/fileutils/pull/69)
Enhanced RDoc for #ln

79fc67f03f

Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2022-05-14 22:38:22 +09:00
Burdette Lamar
9639dc91d9 [ruby/logger] [DOC] Enhanced RDoc for Logger (https://github.com/ruby/logger/pull/77)
Enhanced RDoc for Logger

c601ed0370

Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2022-05-14 05:02:18 +09:00
Burdette Lamar
55ba414405 [ruby/logger] Update lib/logger.rb
a5a2f2da4a

Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2022-05-13 22:52:59 +09:00