Commit graph

2374 commits

Author SHA1 Message Date
Mislav Marohnić
1aa0bfce12
Add ruby-build(1) man page 2023-11-07 18:20:59 +01:00
Mislav Marohnić
b80edb1889
💅 Tidy up ruby-build help output 2023-11-07 18:20:59 +01:00
Mislav Marohnić
91c95bbf8f
Respect NO_COLOR and CLICOLOR_FORCE (#2295)
http://bixense.com/clicolors/
2023-11-07 16:05:27 +01:00
Mislav Marohnić
8e2662fa65
Merge pull request #2230 from rbenv/output-redesign
Restructure console output
2023-11-07 15:49:55 +01:00
Mislav Marohnić
e320bdfbc7
Add helpful comments explaining ruby-build inner workings 2023-11-07 11:06:23 +01:00
Mislav Marohnić
ff4f335cb1
Simplify printing various error messages to stderr
There is no need to redirect to &3 to most cases anymore: &2 will suffice.

Also, it is better to print failure errors like checksum mismatches to
stderr instead of to the log file at &4.
2023-11-07 11:03:53 +01:00
Mislav Marohnić
5d1bebaccc
Improve verify_openssl output
- The command line invocation is now printed in the log.

- For every extension that failed, print the absolute location to its
  mkmf.log to encourage the user to look there when troubleshooting.

- Do not print "Configure options used" since ruby-build now prints the
  full `./configure` invocation as part of the build output.
2023-11-07 10:59:18 +01:00
Mislav Marohnić
1f72acb6d9
Connect git commands to the original stderr
Git commands that perform network fetching can now render progress on
the terminal. This also stops writing any git output to the log file.
2023-11-07 10:55:01 +01:00
Mislav Marohnić
56242478b1
Simplify build_package_rbx
This removes the `isolated_gem_dependency` hack as well as the `rake` &
`bundle` shell wrapper functions. The main reason is to avoid having to
use the `command` shell builtin to be able to invoke the real `rake` and
`bundle`. In my testing on bash 3.2, `command` does not respect the
usual bash error handling rules, and thus a failed `command` invocation
can trigger the ERR trap mechanism even when we don't want it to.
2023-11-07 10:51:43 +01:00
Mislav Marohnić
ae653983d8
💅 Cleanup build_package steps implementation
This stops writing raw pushd/popd output to the log file, which is noisy
and potentially confusing out-of-context. Instead, when changing the
directory in a way that is significant to the log, just print `cd`
followed by the name of the new directory.
2023-11-07 10:23:41 +01:00
Mislav Marohnić
93c50bbaf0
Show progress of downloaded files in the terminal
This connects the stderr of download utilities like curl and wget to the
original stderr of the process so that they can detect a terminal and
print progress bars to it.
2023-11-07 10:17:54 +01:00
Mislav Marohnić
61e50df552
Improve "BUILD FAILED" output
- "BUILD FAILED" is now printed in red instead of in highlight color.

- Print CPU architecture information after OS information.

- Do NOT print last 10 lines of the log anymore. Due to the verbosity of
  compilers, that rarely includes the actual error message, but users
  think it does and so they paste it in their GitHub reports instead of
  perusing the log file.
2023-11-07 10:07:41 +01:00
Mislav Marohnić
c6f8eb38cf
Print external commands that ruby-build executes
ruby-build now prints the full invocation of (almost) every external
command that it runs. Typically that is something like:

    -> ./configure --prefix=/path/to/ruby
    -> make -j 2
    -> make install

All output of these commands still goes to the log file by default.

This changes the behavior of `--verbose` mode to simply redirect all
command output to the stdout & stderr of the parent process instead of
writing to and then tailing the log file. This allows implementations of
commands like `./configure` or `make` to detect a terminal and output
color.
2023-11-07 09:48:04 +01:00
Mislav Marohnić
3c5059633f
Merge pull request #2294 from rbenv/fire-topaz-maglev
Remove Topaz, Maglev
2023-11-07 01:14:26 +01:00
Mislav Marohnić
945d124335
Remove topaz
I can't find evidence that Topaz is still in development nor that it has had a release in the last 10 years.
2023-11-06 16:50:49 +01:00
Mislav Marohnić
a706e117d7
Remove maglev
Maglev Ruby hasn't seen a release in 10 years.
2023-11-06 16:49:29 +01:00
Mislav Marohnić
469a0af96d
Merge pull request #2289 from headius/jruby_9.4.5.0_9.3.13.0
Add JRuby 9.4.5.0 and 9.3.13.0
2023-11-05 14:18:07 +01:00
Mislav Marohnić
4a72b9c28f
Merge pull request #2292 from rbenv/fix-system-openssl-check
Fix checking system OpenSSL version
2023-11-05 14:11:58 +01:00
Mislav Marohnić
f6923c65f0
Fix checking system OpenSSL version
The value of OPENSSL_VERSION_TEXT seems to be printed in double quotes.
2023-11-05 13:56:45 +01:00
Mislav Marohnić
224e942bd7
Tweak basic usage instructions 2023-11-03 18:00:45 +01:00
Mislav Marohnić
e0b71e7d32
Merge pull request #2275 from rbenv/auto-homebrew-openssl
Automatically link to Homebrew openssl
2023-11-03 17:49:24 +01:00
Charles Oliver Nutter
208fbb4564 Add JRuby 9.4.5.0 and 9.3.13.0 2023-11-02 11:15:20 -05:00
Mislav Marohnić
315373b1de
Change legacy needs_openssl_* conditions to one with inline arguments 2023-11-02 13:53:50 +01:00
Mislav Marohnić
31e53468b6
Automatically link to Homebrew OpenSSL
If a system OpenSSL version was not found or is at version that is incompatible with a Ruby being installed, ruby-build would typically download and compile a new OpenSSL version scoped to that Ruby installation.

Now the `needs_openssl` condition will also check for Homebrew-installed OpenSSL and automatically link to the first one found that satisfies the version requirement. This primarily helps speed up Ruby installation on macOS where the system OpenSSL is never compatible and where Homebrew is a de-facto standard package manager.
2023-11-02 13:53:50 +01:00
Mislav Marohnić
8f294c43ad
Allow inline arguments in --if conditions
Example:

    install_package openssl-1.1 "https://..." --if needs_openssl:1.0.1-3.1.x

In the example, the two values are passed as arguments to the `needs_openssl` function.
2023-11-02 13:53:30 +01:00
Mislav Marohnić
b54a73b127
Merge pull request #2286 from rbenv/2.7-unsupported
Unmark Ruby 2.7 as soon-to-be-EOL since it's already EOL
2023-10-28 16:46:03 +02:00
Mislav Marohnić
2ae1416948
Unmark Ruby 2.7 as soon-to-be-EOL since it's already EOL 2023-10-27 16:07:26 +02:00
Benoit Daloze
8afc6e179b ruby-build 20231025 2023-10-25 11:57:47 +02:00
Benoit Daloze
4996d18f46 Add TruffleRuby and TruffleRuby GraalVM 23.1.1 2023-10-25 11:57:34 +02:00
Hiroshi SHIBATA
490517914e
Merge pull request #2283 from rbenv/openssl-3-1-4
Bump up OpenSSL 3.1.4
2023-10-25 10:47:06 +09:00
Hiroshi SHIBATA
fbcb6bdc3a
Bump up OpenSSL 3.1.4 2023-10-25 09:56:17 +09:00
Benoit Daloze
39f77ffd17 Skip ri/rdoc when installing jruby-launcher 2023-10-23 12:28:10 +02:00
Mislav Marohnić
c3bae8b6a9 Fix fixing JRuby shebangs on macOS
LC_CTYPE is "utf-8" on macOS, which instructs utilities like `tr` to expect Unicode input. However, in case of binary files, which we here explicitly guard against, the utility will fail because of invalid input encoding.

The solution is to set LC_CTYPE=C which effectively removes the expectation around input encoding and allows `tr` to process the input byte-by-byte.
2023-10-23 12:11:16 +02:00
Mislav Marohnić
99fda28fc4 JRuby: remove openssl@1.1 requirement from jruby-dev
This is to allow JRuby itself to check for compatible OpenSSL versions and not have ruby-build abort early on macOS.
2023-10-20 15:09:45 +02:00
Mislav Marohnić
db600ccdfd TruffleRuby: remove explicit openssl@1.1 requirement on macOS
TruffleRuby build definitions used to explicitly rely on `brew --prefix openssl@1.1` on macOS and abort installation if that was not found. However, this check didn't take into account that the user might have set OPENSSL_PREFIX in their environment, or that they have another `openssl@*` version installed via Homebrew. This change removes the `use_homebrew_openssl` check and allows TruffleRuby to perform its own OpenSSL detection.

https://github.com/oracle/truffleruby/blob/vm-23.1.0/lib/truffle/truffle/openssl-prefix.rb#L14-L17
2023-10-20 15:09:45 +02:00
Hiroshi SHIBATA
0e4c61d868
Merge pull request #2277 from headius/jruby-9.4.4.0
Add JRuby 9.4.4.0
2023-10-19 08:50:40 +09:00
Charles Oliver Nutter
0be9ae1956 Add JRuby 9.4.4.0 2023-10-18 13:52:53 -05:00
Mislav Marohnić
1dc3628be3
Merge pull request #2276 from rbenv/openssl-test
Add tests for functionality related to linking to OpenSSL
2023-10-17 16:08:59 +02:00
Mislav Marohnić
08b1cfaf71
Add needs_openssl test 2023-10-17 15:33:08 +02:00
Mislav Marohnić
a559b30fd8
Improve cached_tarball test helper
- Now only generates a `configure` script if explicitly specified
- Add ability to add arbitrary files to the tarball
- Cache most common tarballs in fixtures directory to speed up tests
2023-10-17 12:40:17 +02:00
Mislav Marohnić
fe933abbf8
Merge pull request #2271 from rbenv/ldflags-clean
Remove implicit LDFLAGS, CPPFLAGS, and "ldflags_dirs" build step
2023-10-16 18:19:29 +02:00
Mislav Marohnić
aada31aed5
Avoiding excessive cd when fetching git repos (#2273) 2023-10-16 14:40:04 +02:00
Mislav Marohnić
7a741cfb68
Merge pull request #2270 from rbenv/openssl-clean
Cleanup in OpenSSL compilation step
2023-10-16 14:38:58 +02:00
Mislav Marohnić
1d9b4e268f
Merge pull request #2274 from rbenv/ruby-configure-opts
Avoid compiling OpenSSL if the user supplied `--with-openssl-dir` on the command line
2023-10-14 14:01:09 +02:00
Mislav Marohnić
7773f82f74 Cleanup in truffleruby+graalvm installation
Reuse original `build_package_copy` instead of having to maintain an additional `build_package_copy_to` step.

As a bonus, this prevents a global variable `to` from leaking.
2023-10-14 12:30:53 +02:00
Benoit Daloze
536495d1d3 ruby-build 20231014 2023-10-14 12:19:11 +02:00
Mislav Marohnić
5f4cea14d9
Merge pull request #2258 from eregon/overridable-url
Add RUBY_BUILD_TARBALL_OVERRIDE to override the ruby tarball URL
2023-10-13 21:25:59 +02:00
Mislav Marohnić
9b8749105f
Avoid compiling OpenSSL if the user supplied --with-openssl-dir on the command line
Same with linking libyaml, gmp, etc. to Homebrew. This considers all user configuration inputs when checking for existing flags.
2023-10-13 19:52:42 +02:00
Mislav Marohnić
04ba857b6c
Remove "ldflags_dirs" step from build definitions 2023-10-13 19:25:03 +02:00
Mislav Marohnić
47eda17460
Remove implicit LDFLAGS, CPPFLAGS, and "ldflags_dirs" build step
The default settings for LDFLAGS and CPPFLAGS were there since the initial commit to ruby-build:

    LDFLAGS="-L${PREFIX_PATH}/lib"
    CPPFLAGS="-I${PREFIX_PATH}/include"

However, it's not clear to me what these settings help with. A typical Ruby installation will initialize files in these directories, but it will do so regardless of the environment variables.

So, let's remove them and see what breaks.
2023-10-13 19:21:04 +02:00