summaryrefslogtreecommitdiff
path: root/lib/rubygems/ext/ext_conf_builder.rb
AgeCommit message (Collapse)Author
2025-12-16[ruby/rubygems] Pass down value of `BUNDLE_JOBS` to RubyGems before compiling:Edouard CHIN
- ### Problem Since https://github.com/ruby/rubygems/pull/9131, we are now compiling make rules simultaneously. The number of jobs is equal to the number of processors. This may be problematic for some users as they want to control this value. ### Solution The number of jobs passed to `make` will now be equal to the `BUNDLE_JOBS` value. ### Side note It's also worth to note that since Bundler installs gems in parallel, we may end up running multiple `make -j<JOB>` in parallel which would cause exhaust the number of processors we have. This problem can be fixed by implementing a GNU jobserver, which I plan to do. But I felt that this would be too much change in one PR. https://github.com/ruby/rubygems/commit/d51995deb9
2025-11-29[ruby/rubygems] Also use String#include? for RUBY_PLATFORMHiroshi SHIBATA
https://github.com/ruby/rubygems/commit/5fd95f38d3
2025-11-29Fixup with mswin and nmake build for -j flagHiroshi SHIBATA
2025-11-28[ruby/rubygems] Use String#include? with suggested by ↵Hiroshi SHIBATA
Performance/StringInclude cop https://github.com/ruby/rubygems/commit/fdd3419144
2025-11-29nmake didn't support -j flagHiroshi SHIBATA
2025-11-28[ruby/rubygems] Add `MAKEFLAGS=-j` by default before compiling:Edouard CHIN
- Depending on the native extension, it can greatly reduce compilation time when executing recipes simultaneously. For example on Prism: ``` # Before time gem install prism Building native extensions. This could take a while... Successfully installed prism-1.6.0 1 gem installed gem install prism 3.61s user 0.80s system 95% cpu 4.595 total ``` ``` # After time MAKEFLAGS="-j" gem install prism Building native extensions. This could take a while... Successfully installed prism-1.6.0 1 gem installed MAKEFLAGS="-j" gem install prism 4.47s user 1.27s system 246% cpu 2.330 total ``` I don't think adding `-j` as a default is harmful, but I'm admitedly not very knowledgable when it comes to compiler. https://github.com/ruby/rubygems/commit/61340081c6 Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2025-08-18[rubygems/rubygems] Use spaces around optional parameter valuesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/b58829a868
2025-08-18[rubygems/rubygems] Don't worry about missing Makefile.Samuel Williams
https://github.com/rubygems/rubygems/commit/0e92346d88
2024-06-18[rubygems/rubygems] Disable `install_extension_in_lib` when cross-compilingYuta Saito
https://github.com/rubygems/rubygems/commit/643e154f32
2024-06-18[rubygems/rubygems] Add `--target-rbconfig` option to `gem install` and `gem ↵Yuta Saito
update` commands This patch adds `--target-rbconfig` option to specify the rbconfig.rb file for the deployment target platform. This is useful when cross-compiling gems. At the moment, this option is only available for `extconf.rb`-based extensions. https://github.com/rubygems/rubygems/commit/cf2843f7a2
2024-02-20[rubygems/rubygems] Keep Gem.install_extension_in_lib for compatibilityHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/b2bf239147
2024-02-20[rubygems/rubygems] Now install extension in lib is trueHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/bbcad80772
2024-02-20[rubygems/rubygems] Allow to set install_extension_in_lib as Gem configurationHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/c59d40f425
2024-02-05[rubygems/rubygems] Revert "Simplify how extensions are built"David Rodriguez
This reverts commit https://github.com/rubygems/rubygems/commit/0b8faf1e3926. https://github.com/rubygems/rubygems/commit/7528e0f1ce
2024-01-29[rubygems/rubygems] Simplify how extensions are builtDavid Rodríguez
https://github.com/rubygems/rubygems/commit/0b8faf1e39
2023-12-07[rubygems/rubygems] Use modern hashes consistentlyDavid Rodríguez
https://github.com/rubygems/rubygems/commit/bb66253f2c
2023-03-23Refactor and fix usage of Gem.rubyなつき
Notes: Merged: https://github.com/ruby/ruby/pull/7582
2023-03-23Move duplicated logic to parent classなつき
Notes: Merged: https://github.com/ruby/ruby/pull/7582
2023-03-23Make sure native extensions are loaded correctly in ext_conf builderなつき
Notes: Merged: https://github.com/ruby/ruby/pull/7582
2023-03-23util/rubocop -A --only Layout/EmptyLineAfterMagicCommentHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/7582
2023-03-17[rubygems/rubygems] util/rubocop -A --only Style/CommentAnnotationHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/4e77a1d1d5
2023-03-17[rubygems/rubygems] util/rubocop -A --only Lint/UselessAccessModifierHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/5070f90987
2022-12-20[rubygems/rubygems] Cleanup intermediate artifacts after installing built ↵Eloy Espinaco
extensions https://github.com/rubygems/rubygems/commit/98b6a959bd Notes: Merged: https://github.com/ruby/ruby/pull/6966
2022-08-09Merge rubygems/bundler HEAD.Hiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/dfbb5a38114640e0d8d616861607f3de73ee0199 Notes: Merged: https://github.com/ruby/ruby/pull/6224
2022-07-22RubyGems: Enable Style/StringLiterals copTakuya Noguchi
Signed-off-by: Takuya Noguchi <takninnovationresearch@gmail.com>
2022-06-17[rubygems/rubygems] Bring TODO message up to dateDavid Rodríguez
https://github.com/rubygems/rubygems/commit/e07dba0923
2022-06-17[rubygems/rubygems] Remove part of comment that fell out of dateDavid Rodríguez
https://github.com/rubygems/rubygems/commit/272ac23aa8
2022-06-17[rubygems/rubygems] Don't modify RbConfig at all when building extensionsDavid Rodríguez
Instead, pass sitearchdir and sitelibdir directly to `make`. This also removes the need to create and use the siteconf file at all when generating makefiles. https://github.com/rubygems/rubygems/commit/dea41fa2dc
2022-06-17[rubygems/rubygems] Remove unnecessary conditionDavid Rodríguez
This variable can't be falsy. https://github.com/rubygems/rubygems/commit/b838f9a6f0
2022-06-17[rubygems/rubygems] No need to change `RbConfig::CONFIG` at allDavid Rodríguez
Only `RbConfig::MAKEFILE_CONFIG` is actually used. https://github.com/rubygems/rubygems/commit/b767cc0929
2022-04-28Merge rubygems master 1e4eda741d732ca1bd7031aef0a16c7348adf7a5Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/5669
2021-07-27[rubygems/rubygems] Lazily load `shellwords` libraryDavid Rodríguez
https://github.com/rubygems/rubygems/commit/e5532ef886
2021-07-07Sync latest bundler & rubygems development versionDavid Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/4533
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-08-29Revert changes to rdoc & rubygems regarding Tempfile.open(&block)Benoit Daloze
* They likely want to support older Ruby/tempfile versions * Reverts part of e8c3872555fc85640505974e6b1c39d315572689
2020-08-29Simplify Tempfile.open calls with a block as they now unlink the file ↵Benoit Daloze
automatically
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-05[rubygems/rubygems] Delay `fileutils` loading to fix some warningsDavid Rodríguez
If the following conditions are met: * You have a default version of fileutils and a higher version of fileutils installed as a regular gem. This case is common on ruby 2.6. * You use a bundler generated binstub on a gem setup with a `Gemfile` using the `gemspec` DSL. Then `fileutils` redefinition warnings happen because of the following: The gist of a bundler generated binstub is: ```ruby require "bundler/setup" load Gem.bin_path("rake", "rake") ``` First configure bundler, then load the requested gem. When `require "bundler/setup"` is called under the previously mentioned setup, `ext_conf_builder.rb` ends up being required because of the new validation that gemspecs with rake extensions depend on `rake`. And that loads the latest version of `fileutils` because of using "rubygems monkeypatched require" that auto-chooses the latest version of default gems. After that, when `Gem.bin_path` gets called, `ext_conf_builder.rb` gets required again, but this time already using "bundler's unmonkeypatched require" which means the default version is chosen and thus the redefinition warning happens. The solution as usual is to lazily load `fileutils`. https://github.com/rubygems/rubygems/commit/08d64e5f06 Notes: Merged: https://github.com/ruby/ruby/pull/3184
2020-03-30[rubygems/rubygems] Enable Style/PercentLiteralDelimiters cop in rubygemsDavid Rodríguez
So it matches the style used by bundler. https://github.com/rubygems/rubygems/commit/ab0580fd65
2019-08-05[rubygems/rubygems] Fixed to warn with shadowing outer local variable.Hiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/b0588a87b1
2019-07-31[rubygems/rubygems] Enable `Layout/EmptyLinesAroundAccessModifier`David Rodríguez
https://github.com/rubygems/rubygems/commit/41b1cebc33
2019-07-31[rubygems/rubygems] Migrate extension builder to use Open3David Rodríguez
Since it works on jruby. https://github.com/rubygems/rubygems/commit/5229e00df4
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-11-21Merge master branch from rubygems/rubygems upstream.hsbt
* Enable Style/MethodDefParentheses in Rubocop https://github.com/rubygems/rubygems/pull/2478 * Enable Style/MultilineIfThen in Rubocop https://github.com/rubygems/rubygems/pull/2479 * Fix required_ruby_version with prereleases and improve error message https://github.com/rubygems/rubygems/pull/2344 * Fix bundler rubygems binstub not properly looking for bundler https://github.com/rubygems/rubygems/pull/2426 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-31Merge upstream from rubygems/rubygems master branch.hsbt
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-22Merge rubygems master branch from github.com/rubygems/rubygems.hsbt
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-30Merge RubyGems 3.0.0.beta1.hsbt
* It drop to support < Ruby 2.2 * Cleanup deprecated methods and classes. * Mark obsoleted methods to deprecate. * and other enhancements. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e