Commit graph

796 commits

Author SHA1 Message Date
Hiroshi SHIBATA
d0e7c67023
ruby-build 20240903 2024-09-03 16:23:34 +09:00
Charles Oliver Nutter
89eb562616 Clear LC_ALL for tr call
This resolves additional issues when tr is called in a shell that
has set LC_ALL to a specific encoding. In that case, the tr may
fail to ignore binary files, expecting that they are in some
encoding.

See https://github.com/rbenv/ruby-build/issues/2279
2024-07-30 15:27:06 -05:00
Mislav Marohnić
072022f689
ruby-build 20240727 2024-07-27 00:55:32 +02:00
Benoit Daloze
acbd79b4c2 ruby-build 20240722 2024-07-22 12:47:34 +02:00
Hiroshi SHIBATA
836e3bece4
ruby-build 20240709.1 2024-07-09 12:43:12 +09:00
Hiroshi SHIBATA
1260e002c4
ruby-build 20240709 2024-07-09 11:56:28 +09:00
Mislav Marohnić
cd7fd50818
ruby-build 20240702 2024-07-02 10:40:03 +02:00
Hiroshi SHIBATA
fe13cc8a5c
ruby-build 20240612 2024-06-12 05:33:02 +02:00
Mislav Marohnić
fb1b4da13d
Simplify JRuby version check
In case shelling out to jruby fails, the error output wouldn't get printed to
stderr but ruby-build would abort.
2024-06-10 11:54:48 +02:00
Hiroshi SHIBATA
db6c17529b
ruby-build 20240530.1 2024-05-30 15:33:07 +09:00
Hiroshi SHIBATA
f53dbed4d1
ruby-build 20240530 2024-05-30 13:21:43 +09:00
Hiroshi SHIBATA
0aefaa4e30
ruby-build 20240517 2024-05-17 10:06:16 +09:00
Mislav Marohnić
263640c9fe
ruby-build 20240501 2024-05-01 15:48:04 +02:00
Mislav Marohnić
81eed6c48e
rbenv install: error out instead of prompting in non-interactive mode 2024-05-01 15:45:23 +02:00
Hiroshi SHIBATA
346c0dccae
ruby-build 20240423 2024-04-23 21:54:43 +09:00
Benoit Daloze
5e5a2995e1 ruby-build 20240416 2024-04-16 17:27:04 +02:00
Mislav Marohnić
d3a7889c07
Simplify truffleruby+graalvm-dev build definition re: download redirect
The `http get <url> <destfile>` utility had a bug with aria2c downloader where it couldn't properly save to destfile if it was an absolute path.

I have tried having `http get <url> -` output the downloaded file to stdout, but this conflicted with the output of `log_command` (which is also to stdout) so for now let's keep using the temporary file to resolve manual URL redirects.
2024-03-22 16:14:21 +01:00
Benoit Daloze
89d30cf338 ruby-build 20240319 2024-03-19 16:55:48 +01:00
Benoit Daloze
926ed2a649 ruby-build 20240318 2024-03-18 18:57:42 +01:00
Hiroshi SHIBATA
09da542276
ruby-build 20240221 2024-02-21 19:52:10 +09:00
Hiroshi SHIBATA
e1b36a32fb
ruby-build 20240119 2024-01-19 08:22:53 +09:00
Benoit Daloze
a6c972e2c1 ruby-build 20240116 2024-01-16 15:59:20 +01:00
Mislav Marohnić
8465e028e8
Skip passing --with-readline-dir for Ruby 3.3+ 2024-01-07 14:24:40 +01:00
Hiroshi SHIBATA
a473f444de
ruby-build 20231225 2023-12-25 16:43:55 +09:00
Hiroshi SHIBATA
1b66c8345d
ruby-build 20231211 2023-12-11 20:14:52 +09:00
Mislav Marohnić
89617471f8
Fix linking to older OpenSSL for Ruby < 2.7.7
Explicitly set PKG_CONFIG_PATH when `--with-openssl-dir` is used for older Rubies.
Otherwise, Ruby will attempt to link to the latest OpenSSL found by pkg-config,
which could be incompatible.
2023-12-07 15:52:10 +01:00
Mislav Marohnić
c5346187ac
Simplify build & install steps for dev rubies
This merges "standard_build" and "standard_install" build steps into one again
and modifies "standard_install_with_bundled_gems" to just invoke "standard"
with the addition of `update-gems` & `extract-gems` targets.
2023-11-30 16:32:57 +01:00
Mislav Marohnić
efe73b4841
Fix compiling Ruby < 2.5 by omitting --with-ext
Using `--with-ext=+` only has the indended effect (compiling all extensions that would normally get compiled) on Ruby 2.5+. On older versions, it causes none of the default extensions to get compiled, resulting in a defunct installation.
2023-11-24 22:08:28 +01:00
Mislav Marohnić
4a3ff7e194
Surface make problems while building Ruby extensions
A very common type of build failure is that the Ruby "openssl" extension failed to compile. However, when that happens, ruby-build just prints a generic "BUILD FAILED" message. To find out what happened, the user would first have to open the ruby-build log, note the "Following extensions are not compiled" section, then figure out how to find the exact location to the "ext/openssl/mkmf.log" file for more information.

Now, when `make` fails, ruby-build will automatically forward the "Following extensions are not compiled" information to stderr.
2023-11-21 17:12:53 +01:00
Mislav Marohnić
6250069ccb
Instruct Ruby to fail the build if openssl or psych are missing
Normally, Ruby `make` step will print a warning about any missing
extensions, but will not abort the build and instead proceed as normal.

Since Ruby installations without openssl or psych are essentially
broken, ruby-build used to have a `verify_openssl` build step to test if
the newly built Ruby can load these extensions, and print helpful
information and abort the build on errors:

    Loading the Ruby openssl extension failed
    ERROR: Ruby install aborted due to missing extensions

The `verify_opensl` implementation was necessary to provide a good
experience for ruby-build users, but was hacky and I would prefer to
eliminate it.

It appears that passing `--with-ext=openssl,psych` to the Ruby configure
step marks those extensions as mandatory and fails the `make` process if
they failed to build. This is exactly the behavior we want, so this
enables the configure option for all Ruby builds.
2023-11-21 17:12:53 +01:00
Hiroshi SHIBATA
e4e49a1601
ruby-build 20231114 2023-11-14 21:13:25 +09:00
Mislav Marohnić
270ecd0bcb
Merge pull request #2304 from rbenv/fix-wget
Abandon using `--show-progress` for wget
2023-11-09 02:08:54 +01:00
Mislav Marohnić
4c07370ac4
Abandon using --show-progress for wget
It seems like there exist platforms that have wget which does not
support the `--show-progress` option. This reverts to using wget in its
default verbose mode where a progress bar and bunch more information are
printed to stderr.
2023-11-09 01:59:21 +01:00
Mislav Marohnić
c4f811a23d
Fix commands printed when TMPDIR is empty 2023-11-08 23:56:03 +01:00
Mislav Marohnić
bb18f12e64
ruby-build 20231107 2023-11-07 19:16:07 +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ć
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ć
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ć
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ć
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