Skip to content

Conversation

@eregon
Copy link
Contributor

@eregon eregon commented Nov 22, 2019

@postmodern @havenwood Could you merge this soon as it might prevent macOS Cataline users to install TruffleRuby? (truffleruby/truffleruby#1820 for details)

* TruffleRuby 19.3+ uses an internal LLVM toolchain and no longer depends on LLVM.
* The full dependencies are listed at
  https://github.com/oracle/truffleruby/blob/master/README.md#dependencies
* Previous versions of TruffleRuby detect if LLVM is missing and print
  a nice error message, so it is not an issue to remove the dependency
  for older versions.
Copy link
Collaborator

@havenwood havenwood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@havenwood havenwood merged commit 402cbde into postmodern:master Nov 22, 2019
@eregon
Copy link
Contributor Author

eregon commented Nov 22, 2019

Thanks for the quick review and merge :)

@eregon
Copy link
Contributor Author

eregon commented Dec 23, 2019

The dependencies are going to change again, for instance libxml2 won't be needed in TruffleRuby 20.0, and openssl-devel might no longer be a dependency in the future.

@postmodern @havenwood I'm thinking dependencies should be part of ruby-versions, and also be per version so we can easily change them for each release if needed. Any thoughts on that?

We could have something like:
truffleruby/dnf which contains lines like 19.3.0: zlib-devel openssl-devel make gcc libxml2.
And truffleruby/apt similarly, etc.

@havenwood
Copy link
Collaborator

Should we only maintain bleeding edge dependencies, or also deps for older versions? Deps can be tied to Ruby or OS version, but they also feel like a totally different thing than Ruby versions metadata.

Would this be maybe better in a new ruby-dependencies repo, or do you think it's a good fit for ruby-versions?

@postmodern
Copy link
Owner

As a general rule we should support the stable version(s) of Rubies and OS/distros, as those are officially supported by their upstream maintainers. Tracking the dependencies for all Rubies, all Ruby versions, all package managers, and all OS/distro releases would be a path to madness; and duplicate data.

@eregon as a compromise, once < 20.0 becomes unsupported we can drop those dependencies.

@eregon
Copy link
Contributor Author

eregon commented Dec 27, 2019

all OS/distro releases

Yeah that one would be a path to madness, and is only very rarely needed (openssl vs openssl-compat was one case for old distros).

I think the rest would still be reasonable (see my example, it's only 2 levels per Ruby implementation), but I get your point.

For the point of view of a Ruby implementer, it would make most sense if the dependencies are associated to a given release, because that's at those points dependencies can change, and it does change as we see here (MRI also changed dependencies a few times).

Also having it in ruby-versions means users could get updated dependencies easily (and therefore a better user experience, if e.g., a new dependency was added), in comparison to ruby-install which is more complicated to update (needs a release, uninstall/reinstall, etc).

An an example of a highly problematic case, see #360 / truffleruby/truffleruby#1820 (comment)
where installing truffleruby fails because the depencies are outdated (and Homebrew removed the llvm@4 formula).
@postmodern To mitigate that one, could you make a new release of ruby-install?

@postmodern
Copy link
Owner

Storing dependencies in ruby-versions is out of scope; ruby-versions tracks releases and release artifacts. A better long-term solution might be to standardize on a metadata format for specifying dependencies, and include it with ruby releases themselves. Until then, ruby-install either has to pick generic package names for maximum compatibility, or we have to introduce messy logic to pick the right package name depending on the ruby version, package manager, and platform.

@eregon
Copy link
Contributor Author

eregon commented May 12, 2020

@postmodern Could you do a release of ruby-install?
People are still hitting this issue: truffleruby/truffleruby#2008

@eregon
Copy link
Contributor Author

eregon commented Jul 19, 2020

Yet another user hitting this, could you make a 0.7.1 release with this fix (or current master) soon?

@postmodern
Copy link
Owner

Prepping a 0.7.1 release. Will be offline until evening when it cools down; currently too hot to continue running the workstation.

@postmodern
Copy link
Owner

0.7.1 has finally been released!

@eregon
Copy link
Contributor Author

eregon commented Jul 22, 2020

Thank you!

@eregon
Copy link
Contributor Author

eregon commented Dec 3, 2025

@postmodern @havenwood I'm thinking dependencies should be part of ruby-versions, and also be per version so we can easily change them for each release if needed. Any thoughts on that?

It's now possible to have different dependencies per Ruby engine version with ff740a0 🎉

eregon added a commit to eregon/ruby-install that referenced this pull request Dec 10, 2025
eregon added a commit to eregon/ruby-install that referenced this pull request Dec 10, 2025
eregon added a commit to eregon/ruby-install that referenced this pull request Jan 11, 2026
postmodern pushed a commit that referenced this pull request Jan 12, 2026
* Reuse truffleruby dependencies for truffleruby-graalvm dependencies since they are the same
* Follow repo move from https://github.com/oracle/truffleruby to https://github.com/truffleruby/truffleruby
* Use the proper and consistent URLs for TruffleRuby 23.0.0 now that they are available
* TruffleRuby 33+ no longer depends on `openssl` and `libyaml`
  * See https://github.com/truffleruby/truffleruby/blob/master/doc/user/installing-libssl.md
    and https://github.com/truffleruby/truffleruby/blob/master/doc/user/installing-libyaml.md
* `libxml2` is not needed since 20.0 so just drop that:
  #359 (comment)
* Fix order of arguments to `assertEquals` in tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants