Compare commits

..

16 commits

Author SHA1 Message Date
Sam Stephenson
4d8999e9d1 Remove --force- prefix 2011-10-19 15:21:44 -05:00
Sam Stephenson
e9129e5a34 rbenv-install tries to install packages by default, then falls back to building 2011-10-19 14:07:56 -05:00
Sam Stephenson
972498d4bf ruby-package install --fail-silently 2011-10-19 13:45:55 -05:00
Sam Stephenson
aacb3afe1b Better error and progress messages 2011-10-19 13:34:55 -05:00
Sam Stephenson
4fbb207e0f ruby-package fetch --check 2011-10-19 12:49:10 -05:00
Sam Stephenson
59269d1571 Add TODO 2011-10-19 12:19:07 -05:00
Sam Stephenson
d6da2d5fda Just use ruby-build from $PATH 2011-10-18 17:11:29 -05:00
Sam Stephenson
6990108a1e Fix cleanup 2011-10-18 14:18:14 -05:00
Sam Stephenson
2948dee888 ruby-package 2011-10-18 14:07:05 -05:00
Sam Stephenson
97a48518e5 Add --verbose and --resume options 2011-10-17 18:02:22 -05:00
Sam Stephenson
b5cc9ffb8b Remove defunct binary rewriter 2011-10-17 17:55:09 -05:00
Sam Stephenson
296cdb4384 Encode platform in package name 2011-10-17 17:54:45 -05:00
Sam Stephenson
eed1cd5f0c Faster binary rewriter 2011-10-17 13:12:02 -05:00
Sam Stephenson
7c06228378 Merge branch 'master' into binary-packages 2011-10-17 12:23:12 -05:00
Sam Stephenson
c152a226e6 Merge branch 'master' into binary-packages 2011-10-11 15:19:37 -05:00
Sam Stephenson
7311e0dc23 WIP on binary packages 2011-09-25 16:29:13 -05:00
757 changed files with 899 additions and 8710 deletions

1
.gitattributes vendored
View file

@ -1 +0,0 @@
/share/man/man[1-8]/*.[1-8] linguist-generated

View file

@ -1,16 +0,0 @@
---
name: "🐛 Bug report"
about: Report a bug with ruby-build. For "BUILD FAILED" scenarios, see below
title: ''
labels: bug
assignees: ''
---
### Steps to reproduce the behavior
### Expected vs. actual behavior
### Logs
<!-- Paste the output from your terminal. Please enclose the pasted content within triple backticks. If the output suggests the full log was written to a file, copy the contents of that file to a new Gist and link it here. -->

View file

@ -1,8 +0,0 @@
blank_issues_enabled: true
contact_links:
- name: BUILD FAILED
about: Check the Discussions section for reports of a failing Ruby build. Submit your experience (plus logs) if you cannot find reports similar to yours.
url: https://github.com/rbenv/ruby-build/discussions
- name: Suggested build environment
about: Review the instructions about the suggested build environment for your operating system.
url: https://github.com/rbenv/ruby-build/wiki

View file

@ -1,8 +0,0 @@
---
name: "⭐ Submit a feature request"
about: Suggest a feature to be added to ruby-build
title: ''
labels: enhancement
assignees: ''
---

View file

@ -1,6 +0,0 @@
version: 2
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'

View file

@ -1,22 +0,0 @@
name: Test
on: [push, pull_request]
permissions:
contents: read
jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install bats
run: git clone --depth 1 --branch v1.10.0 https://github.com/bats-core/bats-core.git bats
- name: Run tests
run: PATH="./bats/bin:$PATH" script/test

View file

@ -1,29 +0,0 @@
# Doc: https://github.com/redhat-plumbers-in-action/differential-shellcheck#usage
---
name: Differential ShellCheck
on:
push:
branches: [master]
pull_request:
branches: [master]
permissions:
contents: read
security-events: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Repository checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Differential ShellCheck
uses: redhat-plumbers-in-action/differential-shellcheck@v5
with:
severity: warning
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,19 +0,0 @@
name: Release
on:
push:
tags: 'v*'
permissions:
contents: read
jobs:
homebrew:
name: Bump Homebrew formula
runs-on: ubuntu-latest
steps:
- uses: mislav/bump-homebrew-formula-action@v4
if: "!contains(github.ref, '-')" # skip prereleases
with:
formula-name: ruby-build
env:
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}

View file

@ -1,49 +0,0 @@
name: Update Ruby definitions
on:
workflow_dispatch:
inputs:
ruby_version:
description: 'Ruby version'
required: true
default: '3.3.4'
openssl_version:
description: 'OpenSSL version'
required: true
default: '3.0.15'
repository_dispatch:
types: [update-ruby]
jobs:
update-ruby:
name: Update Ruby definitions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Store Ruby version
run: echo "RUBY_VERSION=${{ github.event.client_payload.ruby_version || github.event.inputs.ruby_version }}" >> $GITHUB_ENV
- name: Store ABI version
run: echo "ABI_VERSION=$(echo ${{ env.RUBY_VERSION }} | cut -d '.' -f 1-2)" >> $GITHUB_ENV
- name: Store OpenSSL version
run: echo "OPENSSL_VERSION=${{ github.event.client_payload.openssl_version || github.event.inputs.openssl_version }}" >> $GITHUB_ENV
- name: Run script/update-cruby
run: |
curl -fsL https://cache.ruby-lang.org/pub/ruby/${{ env.ABI_VERSION }}/ruby-${{ env.RUBY_VERSION }}.tar.gz -O
curl -fsL https://www.openssl.org/source/openssl-${{ env.OPENSSL_VERSION }}.tar.gz -O
script/update-cruby ${{ env.RUBY_VERSION }} ${{ env.OPENSSL_VERSION }} .
rm *.gz
- name: commit and push
run: |
git config user.name "GitHub Actions Bot"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
git commit -m "Added ${{ env.RUBY_VERSION }} with OpenSSL ${{ env.OPENSSL_VERSION }}"
git push
env:
GITHUB_TOKEN: ${{ secrets.COMMITTER_TOKEN }}

1
.gitignore vendored
View file

@ -1 +0,0 @@
/bats

View file

@ -1,80 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting one of the project maintainers listed below. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Project Maintainers
* Sam Stephenson <<sstephenson@gmail.com>>
* Mislav Marohnić <<mislav.marohnic@gmail.com>>
* Erik Michaels-Ober <<sferik@gmail.com>>
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View file

@ -1,7 +0,0 @@
## Adding a new Ruby version
Use one of the scripts `script/update-*` to add a new Ruby version.
## Updating OpenSSL
Use `script/update-openssl`.

33
LICENSE
View file

@ -1,19 +1,20 @@
Copyright (c) 2012-2013 Sam Stephenson
Copyright (c) 2011 Sam Stephenson
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,9 +0,0 @@
release_version := $(shell grep "^RUBY_BUILD_VERSION" bin/ruby-build | cut -d\" -f2)
.PHONY: install
install:
bash install.sh
share/man/man1/%.1: share/man/man1/%.1.adoc bin/ruby-build
which asciidoctor || gem install asciidoctor
asciidoctor -b manpage -a version=$(release_version:v%=%) -o $@ $<

270
README.md
View file

@ -1,229 +1,95 @@
# ruby-build
ruby-build is a command-line tool that simplifies installation of any Ruby version from source on Unix-like systems.
ruby-build provides a simple way to compile and install different
versions of Ruby on UNIX-like systems.
It is available as a plugin for [rbenv][] as the `rbenv install` command, or as a standalone program as the `ruby-build` command.
### Installing ruby-build
## Installation
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ruby-build
$ ./install.sh
### Homebrew package manager
```sh
brew install ruby-build
```
This will install ruby-build into `/usr/local`. If you do not have
write permission to `/usr/local`, you will need to run `sudo
./install.sh` instead. You can install to a different prefix by
setting the `PREFIX` environment variable.
Upgrade with:
```sh
brew upgrade ruby-build
```
### Installing Ruby
### Clone as rbenv plugin using git
```sh
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
```
To install a Ruby version, run the `ruby-build` command with the path
to a definition file and the path where you want to install it. (A
number of [built-in
definitions](https://github.com/sstephenson/ruby-build/tree/master/share/ruby-build)
may be specified instead.)
Upgrade with:
```sh
git -C "$(rbenv root)"/plugins/ruby-build pull
```
$ ruby-build 1.9.2-p290 ~/local/ruby-1.9.2-p290
...
$ ~/local/ruby-1.9.2-p290/bin/ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
### Install manually as a standalone program
You can use it with [rbenv](https://github.com/sstephenson/rbenv):
First, download a tarball from https://github.com/rbenv/ruby-build/releases/latest. Then:
```sh
tar -xzf ruby-build-*.tar.gz
PREFIX=/usr/local ./ruby-build-*/install.sh
```
$ ruby-build 1.9.2-p290 ~/.rbenv/versions/1.9.2-p290
## Usage
ruby-build provides an `rbenv-install` command that shortens this to:
### Basic Usage
$ rbenv install 1.9.2-p290
```sh
# As a standalone program
$ ruby-build --list # lists latest stable releases for each Ruby
$ ruby-build --definitions # lists all definitions, including outdated ones
$ ruby-build 3.4.9 ~/.rubies/ruby-3.4.9 # installs Ruby 3.4.9
$ ruby-build -d ruby-3.4.9 ~/.rubies # alternate form for the previous example
$ ruby-build -d ruby-3.4 ~/.rubies # installs latest Ruby 3.4.x
### Version History
# As an rbenv plugin
$ rbenv install 3.4.9 # installs Ruby 3.4.9 to ~/.rbenv/versions/3.4.9
$ rbenv install 3 # installs latest Ruby 3.x
```
#### 20110928
> [!WARNING]
> ruby-build mostly does not verify that system dependencies are present before downloading and attempting to compile Ruby from source. Please ensure that [all requisite libraries][build-env] such as build tools and development headers are already present on your system.
* ruby-build now uses the `--with-gcc` configure flag on OS X Lion.
* Added definitions for REE 1.8.7-2010.02 and 1.8.6-2009.06.
* Modified `rbenv-install` to run `rbenv rehash` after installation.
* Added a Ruby 1.9.3-rc1 definition.
* Updated the JRuby defintions to install the `jruby-launcher` gem.
* Updated the rbx-2.0.0 definition to point to the master branch.
* Added a jruby-1.7.0-dev definition.
* Added a Ruby 1.9.4-dev definition.
Basically, what ruby-build does when installing a Ruby version is this:
- Downloads an official tarball of Ruby source code;
- Extracts the archive into a temporary directory on your system;
- Executes `./configure --prefix=/path/to/destination` in the source code;
- Runs `make install` to compile Ruby;
- Verifies that the installed Ruby is functional.
#### 20110914
Depending on the context, ruby-build does a little bit more than the above: for example, it will try to link Ruby to the appropriate OpenSSL version, even if that means downloading and compiling OpenSSL itself; it will discover and link to Homebrew-installed instances of some libraries like libyaml and readline, etc.
* Added an rbx-2.0.0-dev definition for Rubinius 2.0.0 from git.
* Added support for setting `./configure` options with the
`CONFIGURE_OPTS` environment variable.
* Added a 1.9.3-dev definition for Ruby 1.9.3 from Git.
* Added support for fetching package sources via Git.
* Added an `rbenv-install` script which provides an `install` command
for rbenv users.
### Ruby versions
#### 20110906.1
When listing "latest" Ruby versions, such as in `ruby-build --list` output, ruby-build only knows of Ruby versions that are bundled with this project. That means that when a new Ruby version comes out, ruby-build will not know about it immediately— you will have to upgrade ruby-build before you can use it to install the new Ruby version. This is because ruby-build bundles [definition files](#custom-build-definitions) for each individual Ruby version.
* Changed the REE definition not to install its default gem
collection.
* Reverted a poorly-tested change that intended to enable support for
relative installation paths.
If it's important to you that your installer tool always consults remote resources to download the list of latest Ruby versions (without having to upgrade the tool itself), check out [ruby-install][] as an alternative to ruby-build.
#### 20110906
### Ruby implementations
* Initial public release.
ruby-build ships with definitions for the following Ruby implementations, denoted by version prefixes in the `ruby-build --list` output:
### License
- [CRuby][]: listed in ruby-build as unprefixed version numbers in the `X.Y.Z` format. This is the main Ruby implementation that most people use and is also historically known as "MRI". ruby-build allows adding the `ruby-` prefix to CRuby version numbers for compatibility with other version managers.
(The MIT License)
- `jruby`: [JRuby][] is a high-performance Ruby implementation with real threading built on top of the Java virtual machine (JVM).
Copyright (c) 2011 Sam Stephenson
- `mruby`: [mruby][] is a lightweight, embeddable Ruby implementation for microcontrollers.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
- `picoruby`: [PicoRuby][] is an alternative mruby implementation for one-chip microcontrollers.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
- `truffleruby`: The Native standalone distribution of [TruffleRuby][], an implementation of Ruby on top of GraalVM's Truffle framework.
- `truffleruby+graalvm`: The JVM standalone distribution of TruffleRuby.
### Advanced Usage
#### Custom Build Definitions
To install a version of Ruby that is not available in ruby-build, you can specify the path to a custom build definition file in place of a Ruby version number.
```sh
# As a standalone program
$ ruby-build -d /path/to/3.4-custom /opt/rubies # installs to /opt/rubies/3.4-custom
# As an rbenv plugin
$ rbenv install /path/to/3.4-custom # installs to $(rbenv root)/versions/3.4-custom
```
You can also provide a _directory_ of custom build definition files.
The path(s) will be searched along with ruby-build's bundled `share/ruby-build/` directory.
(Perhaps a collection of 3rd-party build definitions published as a git repo,
or an organization's custom build definitions distributed in-house.)
```sh
# As a standalone program
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs ruby-build --definitions # lists all available versions of Ruby, including custom defs
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs ruby-build -d 3.5-custom /opt/rubies # installs to /opt/rubies/3.5-custom
# As an rbenv plugin
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs rbenv install --list # lists all available versions of Ruby, including custom defs
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs rbenv install 3.5-custom # installs to $(rbenv root)/versions/3.5-custom
```
Check out [default build definitions][definitions] as examples on how to write definition files.
#### Custom Build Configuration
The build process may be configured through the following environment variables:
| Variable | Function |
| ------------------------------- | ------------------------------------------------------------------------------------------------ |
| `TMPDIR` | Where temporary files are stored. |
| `RUBY_BUILD_BUILD_PATH` | Where sources are downloaded and built. (Default: a timestamped subdirectory of `TMPDIR`) |
| `RUBY_BUILD_CACHE_PATH` | Where to cache downloaded package files. (Default: `~/.rbenv/cache` if invoked as rbenv plugin) |
| `RUBY_BUILD_HTTP_CLIENT` | One of `aria2c`, `curl`, or `wget` to use for downloading. (Default: first one found in PATH) |
| `RUBY_BUILD_ARIA2_OPTS` | Additional options to pass to `aria2c` for downloading. |
| `RUBY_BUILD_CURL_OPTS` | Additional options to pass to `curl` for downloading. |
| `RUBY_BUILD_WGET_OPTS` | Additional options to pass to `wget` for downloading. |
| `RUBY_BUILD_MIRROR_URL` | Custom mirror URL root. |
| `RUBY_BUILD_MIRROR_PACKAGE_URL` | Custom complete mirror URL (e.g. http://mirror.example.com/package-1.0.0.tar.gz). |
| `RUBY_BUILD_SKIP_MIRROR` | Bypass the download mirror and fetch all package files from their original URLs. |
| `RUBY_BUILD_TARBALL_OVERRIDE` | Override the URL to fetch the ruby tarball from, optionally followed by `#checksum`. |
| `RUBY_BUILD_DEFINITIONS` | Colon-separated list of paths to search for build definition files. |
| `RUBY_BUILD_ROOT` | The path prefix to search for build definitions files. *Deprecated:* use `RUBY_BUILD_DEFINITIONS`|
| `RUBY_BUILD_VENDOR_OPENSSL` | Build and vendor openssl even if the system openssl is compatible |
| `CC` | Path to the C compiler. |
| `RUBY_CFLAGS` | Additional `CFLAGS` options (_e.g.,_ to override `-O3`). |
| `CONFIGURE_OPTS` | Additional `./configure` options. |
| `MAKE` | Custom `make` command (_e.g.,_ `gmake`). |
| `MAKE_OPTS` / `MAKEOPTS` | Additional `make` options. |
| `MAKE_INSTALL_OPTS` | Additional `make install` options. |
| `RUBY_CONFIGURE_OPTS` | Additional `./configure` options (applies only to Ruby source). |
| `RUBY_MAKE_OPTS` | Additional `make` options (applies only to Ruby source). |
| `RUBY_MAKE_INSTALL_OPTS` | Additional `make install` options (applies only to Ruby source). |
| `NO_COLOR` | Disable ANSI colors in output. The default is to use colors for output connected to a terminal. |
| `CLICOLOR_FORCE` | Use ANSI colors in output even when not connected to a terminal. |
| `RUBY_REPO` | The URL of the git repository to use when building `ruby-dev` |
| `RUBY_REF` | The git branch (or revision) to use when building `ruby-dev`, e.g. `some-branch@af12decf` |
#### Applying Patches
Both `rbenv install` and `ruby-build` commands support the `-p/--patch` flag to apply a patch to the Ruby source code before building. Patches are read from standard input:
```sh
# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <(curl -sSL http://git.io/ruby.patch)
# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
```
#### Checksum Verification
All Ruby definition files bundled with ruby-build include checksums for packages, meaning that all externally downloaded packages are automatically checked for integrity after fetching.
See the next section for more information on how to author checksums.
#### Package Mirrors
You may specify a custom mirror by setting `RUBY_BUILD_MIRROR_URL`. When set,
ruby-build will first attempt to download packages from the mirror before falling
back to the original URL.
```sh
# example:
export RUBY_BUILD_MIRROR_URL="https://my-mirror.example.com"
install_package "ruby-2.6.5" "https://ruby-lang.org/ruby-2.6.5.tgz#<SHA2>"
# Will first try: https://my-mirror.example.com/<SHA2>
```
ruby-build will first try to fetch this package from `$RUBY_BUILD_MIRROR_URL/<SHA2>`
(note: this is the complete URL), where `<SHA2>` is the checksum for the file. It
will fall back to downloading the package from the original location if:
- the package was not found on the mirror;
- the mirror is down;
- the download is corrupt, i.e. the file's checksum doesn't match;
- no tool is available to calculate the checksum; or
- `RUBY_BUILD_SKIP_MIRROR` is enabled.
If a mirror site doesn't conform to the above URL format, you can specify the
complete URL by setting `RUBY_BUILD_MIRROR_PACKAGE_URL`. It behaves the same as
`RUBY_BUILD_MIRROR_URL` except being a complete URL.
#### Keeping the build directory after installation
Both `ruby-build` and `rbenv install` accept the `-k` or `--keep` flag, which
tells ruby-build to keep the downloaded source after installation. This can be
useful if you need to use `gdb` and `memprof` with Ruby.
Source code will be kept in a parallel directory tree `~/.rbenv/sources` when
using `--keep` with the `rbenv install` command. You should specify the
location of the source code with the `RUBY_BUILD_BUILD_PATH` environment
variable when using `--keep` with `ruby-build`.
## Getting Help
Please see the [ruby-build wiki][wiki] for solutions to common problems.
If you can't find an answer on the wiki, open an issue on the [issue tracker][].
Be sure to include the full build log for build failures.
[rbenv]: https://github.com/rbenv/rbenv#readme
[definitions]: https://github.com/rbenv/ruby-build/tree/master/share/ruby-build
[wiki]: https://github.com/rbenv/ruby-build/wiki
[build-env]: https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
[issue tracker]: https://github.com/rbenv/ruby-build/issues
[cruby]: https://www.ruby-lang.org/
[truffleruby]: https://truffleruby.dev/
[picoruby]: https://github.com/picoruby/picoruby#readme
[mruby]: https://mruby.org/
[jruby]: https://www.jruby.org/
[ruby-install]: https://github.com/postmodern/ruby-install#readme
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

8
TODO Normal file
View file

@ -0,0 +1,8 @@
Binary packages
---------------
X Better error messages
X Show 'Downloading' and 'Installing' messages a la ruby-build
* Rewrite RbConfig::CONFIG['CC'] on install
* Patch rbx since the rewriter doesn't work there
X rbenv-install should check for binary packages before building

View file

@ -1,278 +1,82 @@
#!/usr/bin/env bash
#
# Summary: Install a Ruby version using ruby-build
#
# Usage: rbenv install [-f|-s] [-kpv] <version> [-- <configure-args...>]
# rbenv install [-f|-s] [-kpv] <definition-file>
# rbenv install --list
# rbenv install --version
#
# -l, --list List latest stable versions for each Ruby
# -L, --list-all List all local versions, including outdated ones
# -f, --force Allow overwriting an existing installed version
# -s, --skip-existing Avoid overwriting an existing installed version
#
# ruby-build options:
#
# -v, --verbose Verbose mode: forward all build output to stdout/stderr
# -p, --patch Apply a patch from stdin before building
# -k, --keep Keep source tree in RBENV_BUILD_ROOT after installation
# (defaults to "RBENV_ROOT/sources")
# --version Show version of ruby-build
#
# For detailed information on installing Ruby versions with ruby-build,
# including a list of environment variables for adjusting compilation,
# see: https://github.com/rbenv/ruby-build#usage
#
set -e
[ -n "$RBENV_DEBUG" ] && set -x
# Add `share/ruby-build/` directory from each rbenv plugin to the list of
# paths where build definitions are looked up.
shopt -s nullglob
for plugin_path in "$RBENV_ROOT"/plugins/*/share/ruby-build; do
RUBY_BUILD_DEFINITIONS="${RUBY_BUILD_DEFINITIONS}:${plugin_path}"
resolve_link() {
$(type -p greadlink readlink | head -1) $1
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
export RUBY_BUILD_DEFINITIONS
shopt -u nullglob
pwd
cd "$cwd"
}
usage() {
{ echo "usage: rbenv install [--build | --package] VERSION"
echo " rbenv install /path/to/definition"
echo
echo "Available versions:"
ruby-build --definitions | sed 's/^/ /'
echo
} >&2
exit 1
}
bin_dir="$(abs_dirname "$0")"
export PATH="${bin_dir}:$PATH"
# Provide rbenv completions
if [ "$1" = "--complete" ]; then
echo --list
echo --list-all
echo --force
echo --skip-existing
echo --keep
echo --patch
echo --verbose
echo --version
exec ruby-build --definitions
fi
# Load shared library functions
eval "$(ruby-build --lib)"
usage() {
rbenv-help install 2>/dev/null
[ -z "$1" ] || exit "$1"
}
definitions() {
local query="$1"
ruby-build --definitions | $(type -p ggrep grep | head -1) -F "$query" || true
}
suggest_selecting_global() {
# shellcheck disable=SC2155
local version_file="$(rbenv-version-file)"
[[ "$version_file" != "$RBENV_ROOT"/version || -e "$version_file" ]] && return 0
echo
colorize 1 "NOTE:"
echo -n " to activate this Ruby version as the new default, run: "
colorize 33 "rbenv global $VERSION_NAME"
echo
}
colorize() {
if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
else printf "%s" "$2"
force_build=""
force_package=""
if [ "$1" = "--build" ]; then
force_build=1
shift
elif [ "$1" = "--package" ]; then
force_package=1
shift
fi
}
indent() {
sed 's/^/ /'
}
unset FORCE
unset SKIP_EXISTING
unset KEEP
unset VERBOSE
unset HAS_PATCH
parse_options "$@"
for option in "${OPTIONS[@]}"; do
case "$option" in
"h" | "help" )
usage 0
;;
"l" | "list" )
ruby-build --list
[ ! -t 1 ] || {
echo
echo "Only latest stable releases for each Ruby implementation are shown."
echo "Use \`rbenv install --list-all' to show all local versions."
} 1>&2
exit
;;
"L" | "list-all" )
ruby-build --definitions
exit
;;
"f" | "force" )
FORCE=true
;;
"s" | "skip-existing" )
SKIP_EXISTING=true
;;
"k" | "keep" )
[ -n "${RBENV_BUILD_ROOT}" ] || RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
;;
"v" | "verbose" )
VERBOSE="-v"
;;
"p" | "patch" )
HAS_PATCH="-p"
;;
"version" )
exec ruby-build --version
;;
* )
usage 1 >&2
definition="$1"
case "$definition" in
"" | -* )
usage
;;
esac
done
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
# The first argument contains the definition to install. If the
# argument is missing, try to install whatever local app-specific
# version is specified by rbenv. Show usage instructions if a local
# version is not specified.
DEFINITION="${ARGUMENTS[0]}"
[ -n "$DEFINITION" ] || DEFINITION="$(rbenv-local 2>/dev/null || true)"
[ -n "$DEFINITION" ] || usage 1 >&2
if VERSION_NAME="$(ruby-build --resolve "$DEFINITION")"; then
DEFINITION="$VERSION_NAME"
else
unset VERSION_NAME
if [ -z "$RBENV_ROOT" ]; then
RBENV_ROOT="${HOME}/.rbenv"
fi
# Define `before_install` and `after_install` functions that allow
# plugin hooks to register a string of code for execution before or
# after the installation process.
declare -a before_hooks after_hooks
version_name="${definition##*/}"
prefix="${RBENV_ROOT}/versions/${version_name}"
# shellcheck disable=SC2317
before_install() {
local hook="$1"
before_hooks["${#before_hooks[@]}"]="$hook"
package() {
ruby-package install $* "$definition" "$prefix"
}
# shellcheck disable=SC2317
after_install() {
local hook="$1"
after_hooks["${#after_hooks[@]}"]="$hook"
build() {
ruby-build "$definition" "$prefix"
}
IFS=$'\n' read -d '' -r -a scripts <<<"$(rbenv-hooks install)" || true
# shellcheck disable=SC1090
for script in "${scripts[@]}"; do source "$script"; done
# Set VERSION_NAME from $DEFINITION, if it is not already set. Then
# compute the installation prefix.
[ -n "$VERSION_NAME" ] || VERSION_NAME="${DEFINITION##*/}"
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
[ -d "${PREFIX}" ] && PREFIX_EXISTS=1
# If the installation prefix exists, prompt for confirmation unless
# the --force option was specified.
if [ -d "${PREFIX}/bin" ]; then
if [ -z "$FORCE" ] && [ -z "$SKIP_EXISTING" ]; then
echo "rbenv: $PREFIX already exists" >&2
if [ ! -t 0 ]; then
echo "rbenv: must use \`--force' or \`--skip-existing' in non-interactive mode" >&2
exit 1
fi
read -rp "continue with installation? (y/N) "
case "$REPLY" in
y* | Y* ) ;;
* ) exit 1 ;;
esac
elif [ -n "$SKIP_EXISTING" ]; then
# Since we know the ruby version is already installed, and are opting to
# not force installation of existing versions, we just `exit 0` here to
# leave things happy
exit 0
fi
fi
# If RBENV_BUILD_ROOT is set, always pass keep options to ruby-build.
if [ -n "${RBENV_BUILD_ROOT}" ]; then
export RUBY_BUILD_BUILD_PATH="${RBENV_BUILD_ROOT}/${VERSION_NAME}"
KEEP="-k"
fi
# Set RUBY_BUILD_CACHE_PATH to $RBENV_ROOT/cache, if the directory
# exists and the variable is not already set.
if [ -z "${RUBY_BUILD_CACHE_PATH}" ] && [ -d "${RBENV_ROOT}/cache" ]; then
export RUBY_BUILD_CACHE_PATH="${RBENV_ROOT}/cache"
fi
# Default RBENV_VERSION to the globally-specified Ruby version. (The
# REE installer requires an existing Ruby installation to run. An
# unsatisfied local .ruby-version file can cause the installer to
# fail.)
# shellcheck disable=SC2155
export RBENV_VERSION="$(rbenv-global 2>/dev/null || true)"
# Execute `before_install` hooks.
for hook in "${before_hooks[@]}"; do eval "$hook"; done
# Plan cleanup on unsuccessful installation.
cleanup() {
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
}
trap cleanup SIGINT
build_args=(${KEEP:+--keep} ${VERBOSE:+--verbose} ${HAS_PATCH:+--patch} "$DEFINITION" "$PREFIX")
[ ${#EXTRA_ARGUMENTS[@]} -eq 0 ] || build_args+=(-- "${EXTRA_ARGUMENTS[@]}")
# Invoke `ruby-build` and record the exit status in $STATUS.
STATUS=0
ruby-build "${build_args[@]}" || STATUS="$?"
# Display a more helpful message if the definition wasn't found.
if [ "$STATUS" == "2" ]; then
{ candidates="$(definitions "$DEFINITION")"
here="$(dirname "${0%/*}")"
if [ -n "$candidates" ]; then
echo
echo "The following versions contain \`$DEFINITION' in the name:"
echo "$candidates" | indent
fi
echo
echo "See all available versions with \`rbenv install --list-all'."
echo
echo -n "If the version you need is missing, try upgrading ruby-build"
if [ "$here" != "${here#"$(brew --prefix 2>/dev/null)"}" ]; then
printf ":\n\n"
echo " brew upgrade ruby-build"
elif [ -d "${here}/.git" ]; then
display_here="$here"
[[ -z "${HOME%/}" || $here != "${HOME}/"* ]] || display_here="~${here#"$HOME"}"
printf ":\n\n"
echo " git -C $display_here pull"
if [ -n "$force_build" ]; then
build
elif [ -n "$force_package" ]; then
package
else
printf ".\n"
fi
} >&2
package --fail-silently || build
fi
# Execute `after_install` hooks.
for hook in "${after_hooks[@]}"; do eval "$hook"; done
# Run `rbenv-rehash` after a successful installation.
if [ "$STATUS" == "0" ]; then
rbenv-rehash
suggest_selecting_global
else
cleanup
fi
exit "$STATUS"
rbenv rehash

View file

@ -1,91 +0,0 @@
#!/usr/bin/env bash
#
# Summary: Uninstall a specific Ruby version
#
# Usage: rbenv uninstall [-f|--force] <version>
#
# -f Attempt to remove the specified version without prompting
# for confirmation. If the version does not exist, do not
# display an error message.
#
# See `rbenv versions` for a complete list of installed versions.
#
set -e
# Provide rbenv completions
if [ "$1" = "--complete" ]; then
echo --force
exec rbenv versions --bare
fi
usage() {
rbenv-help uninstall 2>/dev/null
[ -z "$1" ] || exit "$1"
}
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
usage 0
fi
unset FORCE
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
FORCE=true
shift
fi
[ "$#" -eq 1 ] || usage 1 >&2
DEFINITION="$1"
case "$DEFINITION" in
"" | -* )
usage 1 >&2
;;
esac
declare -a before_hooks after_hooks
before_uninstall() {
local hook="$1"
before_hooks["${#before_hooks[@]}"]="$hook"
}
after_uninstall() {
local hook="$1"
after_hooks["${#after_hooks[@]}"]="$hook"
}
OLDIFS="$IFS"
IFS=$'\n' scripts=(`rbenv-hooks uninstall`)
IFS="$OLDIFS"
for script in "${scripts[@]}"; do source "$script"; done
VERSION_NAME="${DEFINITION##*/}"
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
if [ -z "$FORCE" ]; then
if [ ! -d "$PREFIX" ]; then
echo "rbenv: version \`$VERSION_NAME' not installed" >&2
exit 1
fi
if [ ! -t 0 ]; then
echo "rbenv: must use \`--force' in non-interactive mode" >&2
exit 1
fi
read -p "rbenv: remove $PREFIX? [yN] "
case "$REPLY" in
y* | Y* ) ;;
* ) exit 1 ;;
esac
fi
for hook in "${before_hooks[@]}"; do eval "$hook"; done
if [ -d "$PREFIX" ]; then
rm -rf "$PREFIX"
rbenv-rehash
fi
for hook in "${after_hooks[@]}"; do eval "$hook"; done

File diff suppressed because it is too large Load diff

47
bin/ruby-package Executable file
View file

@ -0,0 +1,47 @@
#!/usr/bin/env bash
set -e
resolve_link() {
$(type -p greadlink readlink | head -1) $1
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
pwd
cd "$cwd"
}
usage() {
echo "usage: ruby-package <command> [<args>]" >&2
exit 1
}
bin_dir="$(abs_dirname "$0")"
export PATH="${bin_dir}/../libexec:${bin_dir}:$PATH"
command="$1"
command_path="$(command -v ruby-package-"$1" || true)"
if [ -z "$TMPDIR" ]; then
export TMPDIR="/tmp"
else
export TMPDIR="${TMPDIR%/}"
fi
if [ -z "$command" ]; then
usage
elif [ -z "$command_path" ]; then
echo "ruby-package: ${command}: command not found" >&2
usage
fi
shift
exec "$command_path" "$@"

View file

@ -1,22 +1,23 @@
#!/bin/sh
# Usage: PREFIX=/usr/local ./install.sh
#
# Installs ruby-build under $PREFIX.
set -e
cd "$(dirname "$0")"
if [ -z "${PREFIX}" ]; then
PREFIX="/usr/local"
fi
BIN_PATH="${PREFIX}/bin"
SHARE_PATH="${PREFIX}/share/ruby-build"
MAN_PATH="${PREFIX}/share/man/man1"
mkdir -p "$BIN_PATH" "$SHARE_PATH" "$MAN_PATH"
mkdir -p "${BIN_PATH}"
mkdir -p "${SHARE_PATH}"
install -p bin/* "$BIN_PATH"
install -p -m 0644 share/ruby-build/* "$SHARE_PATH"
install -p -m 0644 share/man/man1/*.1 "$MAN_PATH"
for file in bin/*; do
cp "${file}" "${BIN_PATH}"
done
for file in share/ruby-build/*; do
cp "${file}" "${SHARE_PATH}"
done
echo "Installed ruby-build at ${PREFIX}"

99
libexec/ruby-package-build Executable file
View file

@ -0,0 +1,99 @@
#!/usr/bin/env bash
set -e
resolve_link() {
$(type -p greadlink readlink | head -1) $1
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
pwd
cd "$cwd"
}
usage() {
echo "usage: ruby-package build [-v | --verbose] [--resume] DEFINITION"
exit 1
}
bin_root="$(abs_dirname "$0")"
verbose=""
resume=""
while :; do
case "$1" in
"-v" | "--verbose" )
verbose="-v"
shift
;;
"--resume" )
resume=1
shift
;;
"-"* )
usage
;;
* )
break
;;
esac
done
definition="$1"
if [ -z "$definition" ]; then
usage
fi
package="${definition##*/}"
prefix="/tmp/ruby-build/-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/$package"
package_dir="${package}.$(ruby-package platform)"
if [ -z "$resume" ]; then
ruby-build $verbose "$definition" "$prefix"
fi
cwd="$(pwd)"
cd "${prefix}/.."
mkdir -p "${package_dir}/bin"
cp "${bin_root}/../share/ruby-package/ruby-package-install" "${package_dir}/bin"
cp "${bin_root}/../share/ruby-package/ruby-package-rewrite-text" "${package_dir}/bin"
cc -Wall "${bin_root}/../share/ruby-package/ruby-package-rewrite-binary.c" -o "${package_dir}/bin/ruby-package-rewrite-binary"
mkdir -p "${package_dir}/metadata"
echo -n "$prefix" > "${package_dir}/metadata/prefix"
echo -n "$package" > "${package_dir}/metadata/package"
cd "$package"
while read line; do
binary="${line#Binary file }"
if [ "$line" = "$binary" ]; then
# plain text match
text="${line%%:*}"
echo "$text" >> "../${package_dir}/metadata/text-files"
else
# binary match
binary="${binary% matches}"
echo "$binary" >> "../${package_dir}/metadata/binary-files"
fi
done < <( grep -m 1 -R "$prefix" * )
tar cf "../${package_dir}/package.tar" *
cd ..
tar czf "${cwd}/${package_dir}.rubypackage" "$package_dir"
rm -fr "$package_dir"
echo "${package_dir}.rubypackage"

72
libexec/ruby-package-fetch Executable file
View file

@ -0,0 +1,72 @@
#!/usr/bin/env bash
set -e
usage() {
echo "usage: ruby-package fetch [--check] PACKAGE" >&2
exit 1
}
check() {
local url="$1"
set +e
curl -ILfs "$url" >/dev/null
local result="$?"
set -e
if [ "$result" -ne 0 ]; then
return 1
fi
}
download() {
local url="$1"
local filename="$2"
set +e
curl -Lfs "$url" > "$filename"
local result="$?"
set -e
if [ "$result" -ne 0 ]; then
return 1
elif [ ! -f "$filename" ]; then
return 1
else
echo "$filename"
fi
}
check=""
if [ "$1" = "--check" ]; then
check=1
shift
fi
package="$1"
if [ -z "$package" ]; then
usage
fi
package_name="${package}.$(ruby-package platform).rubypackage"
package_repo="${RUBY_PACKAGE_REPO%/}"
if [ -z "$ruby_package_repo" ]; then
package_repo="https://github.com/downloads/sstephenson/ruby-packages"
fi
package_url="${package_repo}/${package_name}"
if [ -n "$check" ]; then
check "$package_url" || {
echo "error: package \`$package' not found ($package_url)"
exit 1
} >&2
else
package_filename="${TMPDIR}/${package_name}.$$"
echo "Downloading $package_url..." >&2
download "$package_url" "$package_filename" || {
echo "error: couldn't download package \`$package' ($package_url)"
exit 1
} >&2
fi

54
libexec/ruby-package-install Executable file
View file

@ -0,0 +1,54 @@
#!/usr/bin/env bash
set -e
usage() {
echo "usage: ruby-package install [--fail-silently] PACKAGE DESTINATION" >&2
exit 1
}
cleanup_packages() {
if [ -n "$package_root" ]; then
rm -rf "${package_root%/*}"
fi
if [ -n "$package_file" ]; then
if [ "$package" != "$package_file" ]; then
rm -rf "$package_file"
fi
fi
}
fail_silently=""
if [ "$1" = "--fail-silently" ]; then
fail_silently=1
shift
fi
package="$1"
if [ -z "$package" ]; then
usage
fi
destination="$2"
if [ -z "$destination" ]; then
usage
fi
if [ -f "$package" ]; then
package_file="$package"
else
if [ -n "$fail_silently" ]; then
ruby-package fetch --check "$package" 2>/dev/null
fi
package_file="$(ruby-package fetch "$package")"
fi
trap cleanup_packages SIGINT SIGTERM EXIT
package_root="$(ruby-package unpack "$package_file")"
package_name="$(cat "${package_root}/metadata/package")"
echo "Installing ${package_name}..." >&2
"${package_root}/bin/ruby-package-install" "$destination"
echo "Installed ${package_name} to ${destination}" >&2

4
libexec/ruby-package-platform Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -e
echo "$(uname -m)-$(uname -s)" | tr '[A-Z] ' '[a-z]_'

55
libexec/ruby-package-unpack Executable file
View file

@ -0,0 +1,55 @@
#!/usr/bin/env bash
set -e
resolve_link() {
$(type -p greadlink readlink | head -1) $1
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}" 2>/dev/null
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
pwd
cd "$cwd"
}
usage() {
echo "usage: ruby-package unpack PACKAGE_FILE" >&2
exit 1
}
package_file="$1"
if [ -z "$package_file" ]; then
usage
fi
package_path="$(abs_dirname "$package_file")/${package_file##*/}"
if [ ! -f "$package_path" ]; then
echo "error: file not found: $1" >&2
exit 1
fi
root="${TMPDIR}/ruby-package.$$"
rm -fr "$root"
mkdir -p "$root"
cd "$root"
tar xzf "$package_path"
cd *
package_root="$(pwd)"
package_name="$(cat "$package_root"/metadata/package)"
package_name_with_platform="${package_root##*/}"
if [ "${package_name}.$(ruby-package platform)" != "$package_name_with_platform" ]; then
echo "error: invalid package format" >&2
exit 2
fi
echo "$package_root"

View file

@ -1,49 +0,0 @@
#!/usr/bin/env bash
# Usage: script/release
#
# - checks out the master branch
# - changes version in `bin/ruby-build` to current date
# - commits and tags the change
# - pushes master & the new tag to GitHub
# - creates a new Release on GitHub
# - [automated] a GitHub Action will create a Homebrew PR for the new release
set -e
git fetch -q --tags origin master
git checkout -q master
git merge --ff-only '@{upstream}'
existing="$(git tag --points-at HEAD)"
if [ -n "$existing" ]; then
echo "Aborting: HEAD is already tagged as '${existing}'" >&2
exit 1
fi
binfile="bin/ruby-build"
new_version="$(date '+%Y%m%d')"
version_suffix=""
while git show-ref --verify --quiet -- "refs/tags/v${new_version}${version_suffix}"; do
version_suffix=".$(( ${version_suffix#.} + 1 ))"
done
new_version="${new_version}${version_suffix}"
version_tag="v${new_version}"
previous_tag="$(git describe --tags HEAD --abbrev=0)"
if git diff --quiet "${previous_tag}..HEAD" -- bin share; then
echo "Aborting: No features to release since '${previous_tag}'" >&2
exit 1
fi
sed -i.bak -E "s!^(RUBY_BUILD_VERSION=).+!\\1\"${new_version}\"!" "$binfile"
rm -f "${binfile}.bak"
make share/man/man1/ruby-build.1
git commit -m "ruby-build ${new_version}" -- "$binfile" share/man/man1/ruby-build.1
git tag "$version_tag"
git push origin master "${version_tag}"
gh release create "$version_tag" --title "ruby-build ${new_version}" --generate-notes

View file

@ -1,4 +0,0 @@
#!/bin/bash
set -e
bats ${CI:+--tap} test "$@"

View file

@ -1,49 +0,0 @@
#!/usr/bin/env bash
set -e
set -o pipefail
if [ $# -ne 3 ]; then
echo "usage: $0 VERSION OPENSSL_VERSION RELEASE_DIRECTORY"
exit 1
fi
version="$1"
openssl_version="$2"
release_directory="$3"
file="share/ruby-build/${version}"
basename="ruby-${version}.tar.gz"
openssl_basename="openssl-${openssl_version}.tar.gz"
major_minor_version=$(echo ${version} | cut -d '.' -f 1,2)
url="https://cache.ruby-lang.org/pub/ruby/${major_minor_version}/${basename}"
if command -v sha256sum >/dev/null; then
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
elif command -v shasum >/dev/null; then
sha256=$(shasum -a 256 "$release_directory/$basename" | cut -d ' ' -f 1)
else
echo "$0 requires sha256sum or shasum to be installed on the system."
exit 1
fi
openssl_url="https://github.com/openssl/openssl/releases/download/openssl-${openssl_version}/openssl-${openssl_version}.tar.gz"
if command -v sha256sum >/dev/null; then
openssl_sha256=$(sha256sum "$release_directory/$openssl_basename" | cut -d ' ' -f 1)
elif command -v shasum >/dev/null; then
openssl_sha256=$(shasum -a 256 "$release_directory/$openssl_basename" | cut -d ' ' -f 1)
else
echo "$0 requires sha256sum or shasum to be installed on the system."
exit 1
fi
major_version=$(echo ${version} | cut -d '.' -f 1)
if [ "$major_version" -ge 4 ]; then
needs_openssl="needs_openssl:1.1.1-3.x.x"
else
needs_openssl="needs_openssl:1.0.2-3.x.x"
fi
cat > "$file" <<EOS
install_package "openssl-${openssl_version}" "${openssl_url}#${openssl_sha256}" openssl --if ${needs_openssl}
install_package "ruby-${version}" "${url}#${sha256}" enable_shared standard
EOS

View file

@ -1,36 +0,0 @@
#!/usr/bin/env bash
# Adds "warn_unsupported" or "warn_eol" to CRuby definitions based on the
# information from endoflife.date.
set -e
date_to_seconds() {
# BSD date
date -jf '%Y-%m-%d' -v 0H -v 0M -v 0S "$1" '+%s' 2>/dev/null ||
# GNU date
date --date "$1" '+%s'
}
now_seconds="$(date '+%s')"
while read -r cycle eol_date; do
eol_seconds="$(date_to_seconds "$eol_date")"
days_to_eol=$(((eol_seconds - now_seconds) / 60 / 60 / 24))
if [ $days_to_eol -lt 0 ]; then
grep -L warn_eol share/ruby-build/"$cycle"[.-]* | grep -ve '-dev$' | \
xargs sed -i.bak -E '/openssl/n; s/ warn_unsupported//; s/(.+)"/\1" warn_eol/'
elif [ $days_to_eol -lt 180 ]; then
grep -L warn_unsupported share/ruby-build/"$cycle"[.-]* | grep -ve '-dev$' | \
xargs sed -i.bak -E '/openssl/n; s/(.+)"/\1" warn_unsupported/'
fi
done < <(
curl -fsSL https://endoflife.date/api/ruby.json | jq -r '.[] | [.cycle,.eol] | @tsv'
printf "%s\t%s\n" "jruby-9.0" "1970-01-01"
printf "%s\t%s\n" "jruby-9.1" "1970-01-01"
printf "%s\t%s\n" "jruby-9.2" "1970-01-01"
printf "%s\t%s\n" "jruby-9.3" "2024-01-01"
printf "%s\t%s\n" "jruby-9.4" "2026-05-01"
)
num_updated="$(rm -fv share/ruby-build/*.bak | wc -l)"
printf "definition files updated: %d\n" "$num_updated"

View file

@ -1,29 +0,0 @@
#!/usr/bin/env bash
set -e
set -o pipefail
if [ $# -ne 2 ]; then
echo "usage: $0 VERSION RELEASE_DIRECTORY"
exit 1
fi
version="$1"
release_directory="$2"
file="share/ruby-build/jruby-${version}"
basename="jruby-dist-${version}-bin.tar.gz"
url="https://repo1.maven.org/maven2/org/jruby/jruby-dist/${version}/${basename}"
archive="$release_directory/$basename"
[ -e "$archive" ] || wget -O "$archive" "$url"
sha256=$(sha256sum "$archive" | cut -d ' ' -f 1)
min_java_version="8"
if [ "${version%%.*}" -ge 10 ]; then
min_java_version="21"
fi
cat > "$file" <<EOS
require_java ${min_java_version}
install_package "jruby-${version}" "${url}#${sha256}" jruby
EOS

View file

@ -1,37 +0,0 @@
#!/usr/bin/env ruby
require 'open-uri'
require 'digest/sha2'
require 'tempfile'
raise "Usage: #{$0} NEW_VERSION" unless ARGV.size == 1
new_version = ARGV[0]
major_minor = new_version.split('.')[0..1].join('.')
url = "https://github.com/openssl/openssl/releases/download/openssl-#{new_version}/openssl-#{new_version}.tar.gz"
sha = nil
Tempfile.create(['openssl', '.tar.gz']) do |tmpfile|
URI.open(url) do |remote_file|
IO.copy_stream(remote_file, tmpfile)
end
tmpfile.rewind
sha = Digest::SHA256.file(tmpfile.path).hexdigest
end
Dir.glob('share/ruby-build/*') do |file|
contents = File.read(file)
openssl_package = "\"openssl-#{major_minor}"
next unless contents.include? openssl_package
lines = contents.lines
line = lines.find { |line| line.include? openssl_package }
old_version = line[/"openssl-([\d.]+[a-z]?)"/, 1] or raise
line.gsub!(old_version, new_version)
line.sub!(/\.tar\.gz#(\h+)"/, ".tar.gz##{sha}\"")
File.write(file, lines.join)
end

View file

@ -1,47 +0,0 @@
#!/usr/bin/env bash
set -e
set -o pipefail
if [ $# -ne 2 ]; then
echo "usage: $0 VERSION RELEASE_DIRECTORY"
exit 1
fi
version="$1"
release_directory="$2"
file="share/ruby-build/truffleruby-${version}"
add_platform() {
platform="$1"
basename="truffleruby-${version}-${platform}.tar.gz"
url="https://github.com/truffleruby/truffleruby/releases/download/graal-${version}/${basename}"
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
cat >> "$file" <<EOS
install_package "truffleruby-${version}" "${url}#${sha256}" truffleruby
;;
EOS
}
cat > "$file" <<EOS
platform="\$(uname -s)-\$(uname -m)"
case \$platform in
Linux-x86_64)
EOS
add_platform "linux-amd64"
cat >> "$file" <<EOS
Linux-aarch64)
EOS
add_platform "linux-aarch64"
cat >> "$file" <<EOS
Darwin-arm64)
EOS
add_platform "macos-aarch64"
cat >> "$file" <<EOS
*)
colorize 1 "Unsupported platform: \$platform"
return 1
;;
esac
EOS

View file

@ -1,47 +0,0 @@
#!/usr/bin/env bash
set -e
set -o pipefail
if [ $# -ne 2 ]; then
echo "usage: $0 VERSION RELEASE_DIRECTORY"
exit 1
fi
version="$1"
release_directory="$2"
file="share/ruby-build/truffleruby+graalvm-${version}"
add_platform() {
platform="$1"
basename="truffleruby-jvm-${version}-${platform}.tar.gz"
url="https://github.com/truffleruby/truffleruby/releases/download/graal-${version}/${basename}"
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
cat >> "$file" <<EOS
install_package "truffleruby+graalvm-${version}" "${url}#${sha256}" truffleruby
;;
EOS
}
cat > "$file" <<EOS
platform="\$(uname -s)-\$(uname -m)"
case \$platform in
Linux-x86_64)
EOS
add_platform "linux-amd64"
cat >> "$file" <<EOS
Linux-aarch64)
EOS
add_platform "linux-aarch64"
cat >> "$file" <<EOS
Darwin-arm64)
EOS
add_platform "macos-aarch64"
cat >> "$file" <<EOS
*)
colorize 1 "Unsupported platform: \$platform"
return 1
;;
esac
EOS

View file

@ -1,399 +0,0 @@
'\" t
.\" Title: ruby-build
.\" Author: Mislav Marohnić
.\" Generator: Asciidoctor 2.0.26
.\" Date: 2026-05-07
.\" Manual: ruby-build Manual
.\" Source: ruby-build 20260512
.\" Language: English
.\"
.TH "RUBY\-BUILD" "1" "2026-05-07" "ruby\-build 20260512" "ruby\-build Manual"
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.ss \n[.ss] 0
.nh
.ad l
.de URL
\fI\\$2\fP <\\$1>\\$3
..
.als MTO URL
.if \n[.g] \{\
. mso www.tmac
. am URL
. ad l
. .
. am MTO
. ad l
. .
. LINKSTYLE blue R < >
.\}
.SH "NAME"
ruby-build \- Download, compile, and install a version of Ruby
.SH "SYNOPSIS"
.sp
ruby\-build [\-dvpk] \fI<definition>\fP \fI<prefix>\fP [\-\- \fI<configure\-args>\fP.\|.\|.]
.br
ruby\-build {\-\-list|\-\-definitions}
.br
ruby\-build \-\-resolve \fI<version>\fP
.br
ruby\-build \-\-version
.SH "DESCRIPTION"
.sp
ruby\-build downloads, compiles, and installs a Ruby version named by the
\fIdefinition\fP argument into the location specified by \fIprefix\fP.
.sp
The \fIdefinition\fP argument can be a path to a file on disk, in which case
it is sourced into ruby\-build as a bash script.
.sp
Optionally, extra Ruby \fIconfigure\-args\fP may be listed after "\-\-" and
will get forwarded to the \f(CR./configure\fP invocation.
.sp
By default, all compile output is redirected to a log file at
\f(CR$TMPDIR/ruby\-build.*.log\fP. Activate the verbose mode to skip the log file
and print everything to standard streams.
.SH "RUBY VERSIONS"
.sp
When listing "latest" Ruby versions, such as in \f(CR\-\-list\fP output,
ruby\-build only knows of Ruby versions that are bundled with this project.
That means that when a new Ruby version comes out, ruby\-build will not
know about it immediately; you will have to upgrade ruby\-build before you
can use it to install the new Ruby version.
.SH "RUBY IMPLEMENTATIONS"
.sp
ruby\-build ships with definitions for the following Ruby implementations:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
This is the main Ruby implementation that most people use.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
"jruby": High\-performance Ruby implementation with real threading built
on top of the Java virtual machine (JVM).
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
"mruby": Lightweight Ruby for microcontrollers.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
"picoruby": Alternative mruby implementation for one\-chip microcontrollers.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
"truffleruby": The Native standalone distribution of TruffleRuby, an
implementation of Ruby on top of GraalVM\(cqs Truffle framework.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
"truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
.RE
.sp
The \fIdefinition\fP argument may optionally start with "ruby\-", in which case
it resolves to a CRuby that matches the version number that follows. The
\fIdefinition\fP argument may also be a name of one of the alternative Ruby
implementations, in which case the latest version of that implementation
will be installed.
.SH "OPTIONS"
.sp
\fB\-l, \-\-list\fP
.RS 4
List latest stable releases for each Ruby
.RE
.sp
\fB\-\-definitions\fP
.RS 4
List all local definitions, including outdated ones
.RE
.sp
\fB\-\-resolve\fP
.RS 4
Print the definition name of the latest stable Ruby version matching the \fIversion\fP argument
.RE
.sp
\fB\-\-version\fP
.RS 4
Show version of ruby\-build
.RE
.sp
\fB\-d, \-\-dir\fP
.RS 4
Install the Ruby in the \fIprefix/definition\fP destination instead of directly in \fIprefix\fP
.RE
.sp
\fB\-v, \-\-verbose\fP
.RS 4
Verbose mode: forward all build output to stdout/stderr
.RE
.sp
\fB\-p, \-\-patch\fP
.RS 4
Apply a patch from stdin before building
.RE
.sp
\fB\-k, \-\-keep\fP
.RS 4
Do not remove source tree after installation
.RE
.sp
\fB\-4, \-\-ipv4\fP
.RS 4
Resolve names to IPv4 addresses only
.RE
.sp
\fB\-6, \-\-ipv6\fP
.RS 4
Resolve names to IPv6 addresses only
.RE
.SH "EXAMPLES"
.sp
Install a Ruby version while tweaking some configuration options:
.sp
.if n .RS 4
.nf
.fam C
$ ruby\-build 3.4.9 /path/to/destination \-\- \-\-disable\-install\-doc \-\-with\-openssl\-dir=/opt/openssl
.fam
.fi
.if n .RE
.sp
Install a Ruby version to \f(CR~/.rubies/ruby\-3.4.9\fP:
.sp
.if n .RS 4
.nf
.fam C
$ ruby\-build \-\-dir ruby\-3.4.9 ~/.rubies
.fam
.fi
.if n .RE
.sp
Install the latest Ruby 3.x version to \f(CR~/.rubies/ruby\-3.x.y\fP:
.sp
.if n .RS 4
.nf
.fam C
$ ruby\-build \-\-dir ruby\-3 ~/.rubies
.fam
.fi
.if n .RE
.sp
Install a Ruby version to \f(CR~/.rbenv/versions/3.3.11\fP:
.sp
.if n .RS 4
.nf
.fam C
$ ruby\-build \-\-dir 3.3.11 ~/.rbenv/versions
.fam
.fi
.if n .RE
.sp
Usage as rbenv plugin, accomplishes the same as the previous example:
.sp
.if n .RS 4
.nf
.fam C
$ rbenv install 3.3.11
.fam
.fi
.if n .RE
.SH "ENVIRONMENT VARIABLES"
.sp
\fBTMPDIR\fP
.RS 4
The location to write temporary files on disk
.RE
.sp
\fBRUBY_BUILD_BUILD_PATH\fP (default: a timestamped subdirectory of \fITMPDIR\fP)
.RS 4
The build location for downloading source files to and compiling
.RE
.sp
\fBRUBY_BUILD_CACHE_PATH\fP (default: "~/.rbenv/cache" if invoked as rbenv plugin)
.RS 4
Where to cache downloaded package files
.RE
.sp
\fBRUBY_BUILD_HTTP_CLIENT\fP (default: first tool found in PATH)
.RS 4
One of "aria2c", "curl", or "wget" to use for downloading
.RE
.sp
\fBRUBY_BUILD_ARIA2_OPTS\fP
.RS 4
Additional options to pass to aria2c for downloading
.RE
.sp
\fBRUBY_BUILD_CURL_OPTS\fP
.RS 4
Additional options to pass to curl for downloading
.RE
.sp
\fBRUBY_BUILD_WGET_OPTS\fP
.RS 4
Additional options to pass to wget for downloading
.RE
.sp
\fBRUBY_BUILD_MIRROR_URL\fP (default: a sponsored Amazon CloudFront mirror)
.RS 4
Custom mirror URL root to download packages from
.RE
.sp
\fBRUBY_BUILD_MIRROR_PACKAGE_URL\fP
.RS 4
Custom complete mirror URL
.RE
.sp
\fBRUBY_BUILD_SKIP_MIRROR\fP
.RS 4
Bypass the download mirror and fetch all package files from their original URLs
.RE
.sp
\fBRUBY_BUILD_ROOT\fP (default: "share/ruby\-build" within ruby\-build install location)
.RS 4
Custom build definition directory
.RE
.sp
\fBRUBY_BUILD_TARBALL_OVERRIDE\fP
.RS 4
Override the URL to fetch the ruby tarball from, optionally followed by "#<checksum>"
.RE
.sp
\fBRUBY_BUILD_DEFINITIONS\fP
.RS 4
Paths to search for build definitions in addition to \fIRUBY_BUILD_ROOT\fP
.RE
.sp
\fBCC\fP
.RS 4
Path to the C compiler
.RE
.sp
\fBRUBY_CFLAGS\fP
.RS 4
Additional \f(CRCFLAGS\fP options to use for Ruby compilation
.RE
.sp
\fBCONFIGURE_OPTS\fP
.RS 4
Additional "./configure" arguments
.RE
.sp
\fBMAKE\fP (default: "make")
.RS 4
Custom make command (e.g., "gmake")
.RE
.sp
\fBMAKE_OPTS\fP, \fBMAKEOPTS\fP
.RS 4
Additional arguments for "make"
.RE
.sp
\fBMAKE_INSTALL_OPTS\fP
.RS 4
Additional arguments for "make install"
.RE
.sp
\fBRUBY_CONFIGURE_OPTS\fP
.RS 4
Additional "./configure" arguments that apply only to Ruby source
.RE
.sp
\fBRUBY_MAKE_OPTS\fP
.RS 4
Additional make arguments that apply only to Ruby source
.RE
.sp
\fBRUBY_MAKE_INSTALL_OPTS\fP
.RS 4
Additional "make install" arguments that apply only to Ruby source
.RE
.sp
\fBNO_COLOR\fP (default: allow colors when connected to terminal)
.RS 4
Disable ANSI colors in output
.RE
.sp
\fBCLICOLOR_FORCE\fP
.RS 4
Use ANSI colors in output even when not connected to a terminal
.RE
.SH "NOTES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
.URL "https://github.com/rbenv/ruby\-build#readme" "" ""
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
.URL "https://github.com/rbenv/ruby\-build/wiki" "" ""
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
. sp -1
. IP \(bu 2.3
.\}
.URL "https://github.com/rbenv/ruby\-build/discussions" "" ""
.RE
.SH "AUTHOR"
.sp
Mislav Marohnić

View file

@ -1,206 +0,0 @@
= ruby-build(1)
Mislav Marohnić
:doctype: manpage
:man manual: ruby-build Manual
:man source: ruby-build {version}
:man-linkstyle: pass:[blue R < >]
== Name
ruby-build - Download, compile, and install a version of Ruby
== Synopsis
ruby-build [-dvpk] _<definition>_ _<prefix>_ [-- _<configure-args>_...] +
ruby-build {--list|--definitions} +
ruby-build --resolve _<version>_ +
ruby-build --version
== Description
ruby-build downloads, compiles, and installs a Ruby version named by the
_definition_ argument into the location specified by _prefix_.
The _definition_ argument can be a path to a file on disk, in which case
it is sourced into ruby-build as a bash script.
Optionally, extra Ruby _configure-args_ may be listed after "--" and
will get forwarded to the `./configure` invocation.
By default, all compile output is redirected to a log file at
`$TMPDIR/ruby-build.*.log`. Activate the verbose mode to skip the log file
and print everything to standard streams.
== Ruby versions
When listing "latest" Ruby versions, such as in `--list` output,
ruby-build only knows of Ruby versions that are bundled with this project.
That means that when a new Ruby version comes out, ruby-build will not
know about it immediately; you will have to upgrade ruby-build before you
can use it to install the new Ruby version.
== Ruby implementations
ruby-build ships with definitions for the following Ruby implementations:
- CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
This is the main Ruby implementation that most people use.
- "jruby": High-performance Ruby implementation with real threading built
on top of the Java virtual machine (JVM).
- "mruby": Lightweight Ruby for microcontrollers.
- "picoruby": Alternative mruby implementation for one-chip microcontrollers.
- "truffleruby": The Native standalone distribution of TruffleRuby, an
implementation of Ruby on top of GraalVM's Truffle framework.
- "truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
The _definition_ argument may optionally start with "ruby-", in which case
it resolves to a CRuby that matches the version number that follows. The
_definition_ argument may also be a name of one of the alternative Ruby
implementations, in which case the latest version of that implementation
will be installed.
== Options
*-l, --list*::
List latest stable releases for each Ruby
*--definitions*::
List all local definitions, including outdated ones
*--resolve*::
Print the definition name of the latest stable Ruby version matching the _version_ argument
*--version*::
Show version of ruby-build
*-d, --dir*::
Install the Ruby in the _prefix/definition_ destination instead of directly in _prefix_
*-v, --verbose*::
Verbose mode: forward all build output to stdout/stderr
*-p, --patch*::
Apply a patch from stdin before building
*-k, --keep*::
Do not remove source tree after installation
*-4, --ipv4*::
Resolve names to IPv4 addresses only
*-6, --ipv6*::
Resolve names to IPv6 addresses only
== Examples
Install a Ruby version while tweaking some configuration options:
----
$ ruby-build 3.4.9 /path/to/destination -- --disable-install-doc --with-openssl-dir=/opt/openssl
----
Install a Ruby version to `~/.rubies/ruby-3.4.9`:
----
$ ruby-build --dir ruby-3.4.9 ~/.rubies
----
Install the latest Ruby 3.x version to `~/.rubies/ruby-3.x.y`:
----
$ ruby-build --dir ruby-3 ~/.rubies
----
Install a Ruby version to `~/.rbenv/versions/3.3.11`:
----
$ ruby-build --dir 3.3.11 ~/.rbenv/versions
----
Usage as rbenv plugin, accomplishes the same as the previous example:
----
$ rbenv install 3.3.11
----
== Environment Variables
*TMPDIR*::
The location to write temporary files on disk
*RUBY_BUILD_BUILD_PATH* (default: a timestamped subdirectory of _TMPDIR_)::
The build location for downloading source files to and compiling
*RUBY_BUILD_CACHE_PATH* (default: "~/.rbenv/cache" if invoked as rbenv plugin)::
Where to cache downloaded package files
*RUBY_BUILD_HTTP_CLIENT* (default: first tool found in PATH)::
One of "aria2c", "curl", or "wget" to use for downloading
*RUBY_BUILD_ARIA2_OPTS*::
Additional options to pass to aria2c for downloading
*RUBY_BUILD_CURL_OPTS*::
Additional options to pass to curl for downloading
*RUBY_BUILD_WGET_OPTS*::
Additional options to pass to wget for downloading
*RUBY_BUILD_MIRROR_URL* (default: a sponsored Amazon CloudFront mirror)::
Custom mirror URL root to download packages from
*RUBY_BUILD_MIRROR_PACKAGE_URL*::
Custom complete mirror URL
*RUBY_BUILD_SKIP_MIRROR*::
Bypass the download mirror and fetch all package files from their original URLs
*RUBY_BUILD_ROOT* (default: "share/ruby-build" within ruby-build install location)::
Custom build definition directory
*RUBY_BUILD_TARBALL_OVERRIDE*::
Override the URL to fetch the ruby tarball from, optionally followed by "#<checksum>"
*RUBY_BUILD_DEFINITIONS*::
Paths to search for build definitions in addition to _RUBY_BUILD_ROOT_
*CC*::
Path to the C compiler
*RUBY_CFLAGS*::
Additional `CFLAGS` options to use for Ruby compilation
*CONFIGURE_OPTS*::
Additional "./configure" arguments
*MAKE* (default: "make")::
Custom make command (e.g., "gmake")
*MAKE_OPTS*, *MAKEOPTS*::
Additional arguments for "make"
*MAKE_INSTALL_OPTS*::
Additional arguments for "make install"
*RUBY_CONFIGURE_OPTS*::
Additional "./configure" arguments that apply only to Ruby source
*RUBY_MAKE_OPTS*::
Additional make arguments that apply only to Ruby source
*RUBY_MAKE_INSTALL_OPTS*::
Additional "make install" arguments that apply only to Ruby source
*NO_COLOR* (default: allow colors when connected to terminal)::
Disable ANSI colors in output
*CLICOLOR_FORCE*::
Use ANSI colors in output even when not connected to a terminal
== Notes
* https://github.com/rbenv/ruby-build#readme
* https://github.com/rbenv/ruby-build/wiki
* https://github.com/rbenv/ruby-build/discussions

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.5-p113" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p113.tar.bz2#216600f9ad07648c501766a25069009c5c543010821da2ad916dd2ca808efd01" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.5-p114" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.bz2#c503ae8eb47db72f78fb7a79fe1874ffef40a7094f7e803bacbf994a924244d9" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.5-p115" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.bz2#3b5b799d6445b4ec8bc8b2944c6797dbd031b22e1756c9ae8b08c1f5d6cdc398" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.5-p231" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.bz2#b31a8db0a3b538c28bca1c9b08a07eb55a39547fdaad00c045f073851019639c" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.5-p52" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p52.tar.bz2#17e4bde8e6fc93866774e66c556fe581104f5cdf162a07430a9e976e46915500" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2#0fc6ad0b31d8ec3997db2a56a2ac1c235283a3607abb876300fc711b3f8e3dd7" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p110" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p110.tar.bz2#88a8a63dae9219fa38faa6c308dbfc9ac9e9c15f6d8f6848c452b9c920183169" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p111" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2#85c694678313818a5083bcfd66ae389fc053b506d93b5ad46f3764981c120fbb" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p114" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.bz2#4ac0d0271324c54525210f775e5fcc9a37e3d8a10b96d68cdfeeb361c6f64a63" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p230" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.bz2#603708301fc3fd7ef1c47bb4a24d7799c26e28db08d69cda240adcbdbff514d7" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p286" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p286.tar.bz2#d800552900e1157bbeaae39a4c253683b2444820a5d1ba0a207a13cc469168b7" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p287" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2#ac15a1cb78c50ec9cc7e831616a143586bdd566bc865c6b769a0c47b3b3936ce" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p36" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p36.tar.bz2#a9b9715235580e1ba9248aeef5f9a8d329824b04d1b0af2a30ab74d3123c801c" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p368" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2#1bd398a125040261f8e9e74289277c82063aae174ada9f300d2bea0a42ccdcc1" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p369" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.bz2#fb6974ab8a0de52511e846eacf113432b5227a867e3c9741d65775f162e13715" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p383" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.bz2#c39dd7e211cb7245d08d9a7a3d4fe0c7b9f796a4bed9f92fed500ad58bb53d1a" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p388" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2#8536b18413f2475698fa275b356daff6ceab5232bc503496f4afbee64e8b4abc" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p398" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p398.tar.bz2#9890c5eb899f19d5bca7b9b04bba597d14ec6627e992ee376143147c19e3990d" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.6-p399" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p399.tar.bz2#20ca08aeefa21ca2581a9791f8f9ace3addc92bd978cf36f2f95c109085a50a7" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,2 +1,3 @@
install_package "ruby-1.8.6-p420" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p420.tar.bz2#5ed3e6b9ebcb51baf59b8263788ec9ec8a65fbb82286d952dd3eb66e22d9a09f" warn_eol auto_tcltk standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
use_gcc42_on_lion
install_package "ruby-1.8.6-p420" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p420.tar.gz"
install_package "rubygems-1.3.7" "http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2#65f2a862ba5e88bac7a78cff15bcb88d7534e741b51a1ffb79a0136c7041359a" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p160" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2#e524a086212d2142c03eb6b82cd602adcac9dcf8bf60049e89aa4ca69864984d" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p17" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p17.tar.bz2#f205c586764ffbd944b4ec6439bd08286e3e7b27bc9448e74949e76c63f6016b" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p173" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p173.tar.bz2#7cec49bc4afb82188ca4bdb5a0400ec7ede6bf0937af9dd6acaca4e54b8aa760" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p174" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.bz2#203978b6db1cc77a79ff03d141d162f6f17d86c3574f76de9eae9d0c8cb920bc" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p22" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2#477968408e27d067ef56f552d7fc2a9e6f5cae2d1a72f17cd838ebf5e0d30149" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p248" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.bz2#3d238c4cf0988797d33169ab05829f1a483194e7cacae4232f3a0e2cc01b6bfc" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +1,3 @@
install_package "ruby-1.8.7-p249" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2#8b89448fc79df6862660e9f77e884f06c76da28f078d8edd2f17567a615f3af5" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
use_gcc42_on_lion
install_package "ruby-1.8.7-p249" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz"
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p299" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.bz2#3d8a1e4204f1fb69c9e9ffd637c7f7661a062fc2246c559f25fda5312cfd65d8" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p301" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p301.tar.bz2#6ddd929722d177240c52e9fafa637dae4d7f8a30825faabb33b1c5391b004029" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p302" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2#3537cc81cc2378a2bc319cd16c4237ddee14a2839cfd1515b27dce108d061a68" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p330" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2#486c73b023b564c07e062e2e61114e81de970913b04fac6798d0fbe8b7723790" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +1,3 @@
install_package "ruby-1.8.7-p334" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2#3e7f1a15fb2c205ac9eb0da804983b83bf8c0ffeb2f146d1eb9e0579ea2507da" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
use_gcc42_on_lion
install_package "ruby-1.8.7-p334" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz"
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby

View file

@ -1,2 +1,3 @@
install_package "ruby-1.8.7-p352" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.bz2#9df4e9108387f7d24a6ab8950984d0c0f8cdbc1dad63194e744f1a176d1c5576" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
use_gcc42_on_lion
install_package "ruby-1.8.7-p352" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz"
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p357" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p357.tar.bz2#5c64b63a597b4cb545887364e1fd1e0601a7aeb545e576e74a6d8e88a2765a37" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p358" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p358.tar.bz2#309ccd427e47ef41a70f96462bd3c2ef2e7911ce1b22432ab502f5bc6e949c1b" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p370" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2#6359b03a1c8ba16630a96fcb5f972c7af15bd33b752e324cd87964224ab1fe31" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p371" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p371.tar.bz2#2dd0e463cd82039beb75c9b9f4ee20bef5f5b5ff68527008e5aee61cfb3b55e1" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p373" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p373.tar.bz2#720029cb528a2d5a132bbff7f47413f0b731ecc558f68f613d319fa9442afcb5" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p374" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2#b4e34703137f7bfb8761c4ea474f7438d6ccf440b3d35f39cc5e4d4e239c07e3" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p71" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p71.tar.bz2#ce74802744b9dfcd77bdd365a1543d050a56d9b366ed5e7a9bf2df25028fd411" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-p72" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2#a8f8a28e286dd76747d8e97ea5cfe7a315eb896906ab8c8606d687d9f6f6146e" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-preview1" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview1.tar.bz2#e432ab1ab9b4570c0b7fe5c0c2730de0fda4c49a47811ea3a9170a311cf110b9" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-preview2" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview2.tar.bz2#d02c1d22bff5c8365aa4adb25387950c0b58206a18cb18afcc4f2bd9401997e5" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-preview3" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview3.tar.bz2#a73649f8c595cae34dc74e0d6c8b74998cc708d26d7d7300b16254d876dc7fe0" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,2 +0,0 @@
install_package "ruby-1.8.7-preview4" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview4.tar.bz2#9f81d584a5b1bda92d933c48a336edd0ce6818eaa3a4e95cab59a73c85a7b285" warn_eol auto_tcltk standard
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-0" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2#7995fdb2879cbb67b1ae4b5bbdf5460f70221598086f4e48e15fa5f48f2866e3" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1.tar.bz2#88427424d6249c7544ddc53b31d871f1a6dce1dbded402cacc6306feb8d97f3b" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.bz2#913d2bfd03e4285f61e3d343925ab8286ebfc5f7f4a7c861de7a160219cd1351" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-3" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-3.tar.bz2#d5ca832db445e3251113c4027f2528d17e32ed9508d2dd507c469e546ad180db" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-4" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-4.tar.bz2#09a91a60fba308a45ab8d3e691ec5ab279b36b646e75ad68d1d45679bdc4cbce" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.0-5" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-5.tar.bz2#6641148785a8bd3b352c2f990e5b20c1bd244f61275150139671b9b84610d996" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p0" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2#de7d33aeabdba123404c21230142299ac1de88c944c9f3215b816e824dd33321" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p129" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p129.tar.bz2#cb730f035aec0e3ac104d23d27a79aa9625fdeb115dae2295de65355f449ce27" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p243" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2#39c9850841c0dd5d368f96b854f97c19b21eb28a02200f8b4e151f608092e687" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p376" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2#79164e647e23bb7c705195e0075ce6020c30dd5ec4f8c8a12a100fe0eb0d6783" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +1,3 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p378" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2#649e623f77190990d990089a819bc4ee60e21816f682ec37cee98d43adb46e51" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
install_package "ruby-1.9.1-p378" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz"
install_package "rubygems-1.3.5" "http://production.cf.rubygems.org/rubygems/rubygems-1.3.5.tgz" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p429" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.bz2#e0b9471d77354628a8041068f45734eb2d99f5b5df08fe5a76d785d989a47bfb" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p430" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2#8d5cc11d819e476fb651db783f714cc4100922f47447f7acdce87ed769cf9d97" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-p431" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2#81a46c947cd0c3ab99bc727e1465dab334432df7fbbfd0acfc08cf7111eb0c6c" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-preview1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2#dc39000537d7c7528ef26af8e1c3a6215b30b6c579c615eaec7013513410456a" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-preview2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview2.tar.bz2#2c419dc325c6a75fb7b961496c0dd54f2729e6e01730589c4fb06e34ddd7a7cc" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-rc1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-rc1.tar.bz2#35acfb6b8d9dd9159ef308ac763c629092cda2e8c9f41254e72a7b9fa454c27f" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

View file

@ -1,3 +0,0 @@
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
install_package "ruby-1.9.1-rc2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-rc2.tar.bz2#acb5061123fa7170597e713ef773e21ddd9dd167f27aaae2c5440b5ec12df2ec" warn_eol standard
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby

Some files were not shown because too many files have changed in this diff Show more