mirror of
https://github.com/rbenv/ruby-build.git
synced 2026-05-15 00:46:53 -04:00
Compare commits
16 commits
master
...
binary-pac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d8999e9d1 | ||
|
|
e9129e5a34 | ||
|
|
972498d4bf | ||
|
|
aacb3afe1b | ||
|
|
4fbb207e0f | ||
|
|
59269d1571 | ||
|
|
d6da2d5fda | ||
|
|
6990108a1e | ||
|
|
2948dee888 | ||
|
|
97a48518e5 | ||
|
|
b5cc9ffb8b | ||
|
|
296cdb4384 | ||
|
|
eed1cd5f0c | ||
|
|
7c06228378 | ||
|
|
c152a226e6 | ||
|
|
7311e0dc23 |
757 changed files with 899 additions and 8710 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
|
@ -1 +0,0 @@
|
||||||
/share/man/man[1-8]/*.[1-8] linguist-generated
|
|
||||||
16
.github/ISSUE_TEMPLATE/bug.md
vendored
16
.github/ISSUE_TEMPLATE/bug.md
vendored
|
|
@ -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. -->
|
|
||||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -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
|
|
||||||
8
.github/ISSUE_TEMPLATE/enhancement.md
vendored
8
.github/ISSUE_TEMPLATE/enhancement.md
vendored
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
name: "⭐ Submit a feature request"
|
|
||||||
about: Suggest a feature to be added to ruby-build
|
|
||||||
title: ''
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
|
@ -1,6 +0,0 @@
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: 'github-actions'
|
|
||||||
directory: '/'
|
|
||||||
schedule:
|
|
||||||
interval: 'weekly'
|
|
||||||
22
.github/workflows/ci.yml
vendored
22
.github/workflows/ci.yml
vendored
|
|
@ -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
|
|
||||||
29
.github/workflows/differential-shellcheck.yml
vendored
29
.github/workflows/differential-shellcheck.yml
vendored
|
|
@ -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 }}
|
|
||||||
19
.github/workflows/release.yml
vendored
19
.github/workflows/release.yml
vendored
|
|
@ -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 }}
|
|
||||||
49
.github/workflows/update-ruby.yml
vendored
49
.github/workflows/update-ruby.yml
vendored
|
|
@ -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
1
.gitignore
vendored
|
|
@ -1 +0,0 @@
|
||||||
/bats
|
|
||||||
|
|
@ -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/
|
|
||||||
|
|
@ -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
33
LICENSE
|
|
@ -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
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
a copy of this software and associated documentation files (the
|
||||||
the Software without restriction, including without limitation the rights to
|
"Software"), to deal in the Software without restriction, including
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
of the Software, and to permit persons to whom the Software is furnished to do
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
so, subject to the following conditions:
|
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
|
The above copyright notice and this permission notice shall be
|
||||||
copies or substantial portions of the Software.
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
|
||||||
9
Makefile
9
Makefile
|
|
@ -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
270
README.md
|
|
@ -1,229 +1,95 @@
|
||||||
# ruby-build
|
# 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
|
This will install ruby-build into `/usr/local`. If you do not have
|
||||||
```sh
|
write permission to `/usr/local`, you will need to run `sudo
|
||||||
brew install ruby-build
|
./install.sh` instead. You can install to a different prefix by
|
||||||
```
|
setting the `PREFIX` environment variable.
|
||||||
|
|
||||||
Upgrade with:
|
### Installing Ruby
|
||||||
```sh
|
|
||||||
brew upgrade ruby-build
|
|
||||||
```
|
|
||||||
|
|
||||||
### Clone as rbenv plugin using git
|
To install a Ruby version, run the `ruby-build` command with the path
|
||||||
```sh
|
to a definition file and the path where you want to install it. (A
|
||||||
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
number of [built-in
|
||||||
```
|
definitions](https://github.com/sstephenson/ruby-build/tree/master/share/ruby-build)
|
||||||
|
may be specified instead.)
|
||||||
|
|
||||||
Upgrade with:
|
$ ruby-build 1.9.2-p290 ~/local/ruby-1.9.2-p290
|
||||||
```sh
|
...
|
||||||
git -C "$(rbenv root)"/plugins/ruby-build pull
|
$ ~/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:
|
$ ruby-build 1.9.2-p290 ~/.rbenv/versions/1.9.2-p290
|
||||||
```sh
|
|
||||||
tar -xzf ruby-build-*.tar.gz
|
|
||||||
PREFIX=/usr/local ./ruby-build-*/install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
ruby-build provides an `rbenv-install` command that shortens this to:
|
||||||
|
|
||||||
### Basic Usage
|
$ rbenv install 1.9.2-p290
|
||||||
|
|
||||||
```sh
|
### Version History
|
||||||
# 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
|
|
||||||
|
|
||||||
# As an rbenv plugin
|
#### 20110928
|
||||||
$ rbenv install 3.4.9 # installs Ruby 3.4.9 to ~/.rbenv/versions/3.4.9
|
|
||||||
$ rbenv install 3 # installs latest Ruby 3.x
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!WARNING]
|
* ruby-build now uses the `--with-gcc` configure flag on OS X Lion.
|
||||||
> 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.
|
* 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:
|
#### 20110914
|
||||||
- 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.
|
|
||||||
|
|
||||||
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.
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
- `truffleruby+graalvm`: The JVM standalone distribution of TruffleRuby.
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
### Advanced Usage
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
#### Custom Build Definitions
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
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
|
|
||||||
|
|
|
||||||
8
TODO
Normal file
8
TODO
Normal 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
|
||||||
|
|
@ -1,278 +1,82 @@
|
||||||
#!/usr/bin/env bash
|
#!/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
|
set -e
|
||||||
[ -n "$RBENV_DEBUG" ] && set -x
|
[ -n "$RBENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
# Add `share/ruby-build/` directory from each rbenv plugin to the list of
|
resolve_link() {
|
||||||
# paths where build definitions are looked up.
|
$(type -p greadlink readlink | head -1) $1
|
||||||
shopt -s nullglob
|
}
|
||||||
for plugin_path in "$RBENV_ROOT"/plugins/*/share/ruby-build; do
|
|
||||||
RUBY_BUILD_DEFINITIONS="${RUBY_BUILD_DEFINITIONS}:${plugin_path}"
|
abs_dirname() {
|
||||||
|
local cwd="$(pwd)"
|
||||||
|
local path="$1"
|
||||||
|
|
||||||
|
while [ -n "$path" ]; do
|
||||||
|
cd "${path%/*}"
|
||||||
|
local name="${path##*/}"
|
||||||
|
path="$(resolve_link "$name" || true)"
|
||||||
done
|
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
|
# Provide rbenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
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
|
exec ruby-build --definitions
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Load shared library functions
|
force_build=""
|
||||||
eval "$(ruby-build --lib)"
|
force_package=""
|
||||||
|
if [ "$1" = "--build" ]; then
|
||||||
usage() {
|
force_build=1
|
||||||
rbenv-help install 2>/dev/null
|
shift
|
||||||
[ -z "$1" ] || exit "$1"
|
elif [ "$1" = "--package" ]; then
|
||||||
}
|
force_package=1
|
||||||
|
shift
|
||||||
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"
|
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
indent() {
|
definition="$1"
|
||||||
sed 's/^/ /'
|
case "$definition" in
|
||||||
}
|
"" | -* )
|
||||||
|
usage
|
||||||
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
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
|
|
||||||
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
|
if [ -z "$RBENV_ROOT" ]; then
|
||||||
|
RBENV_ROOT="${HOME}/.rbenv"
|
||||||
# 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
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Define `before_install` and `after_install` functions that allow
|
version_name="${definition##*/}"
|
||||||
# plugin hooks to register a string of code for execution before or
|
prefix="${RBENV_ROOT}/versions/${version_name}"
|
||||||
# after the installation process.
|
|
||||||
declare -a before_hooks after_hooks
|
|
||||||
|
|
||||||
# shellcheck disable=SC2317
|
package() {
|
||||||
before_install() {
|
ruby-package install $* "$definition" "$prefix"
|
||||||
local hook="$1"
|
|
||||||
before_hooks["${#before_hooks[@]}"]="$hook"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# shellcheck disable=SC2317
|
build() {
|
||||||
after_install() {
|
ruby-build "$definition" "$prefix"
|
||||||
local hook="$1"
|
|
||||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IFS=$'\n' read -d '' -r -a scripts <<<"$(rbenv-hooks install)" || true
|
if [ -n "$force_build" ]; then
|
||||||
# shellcheck disable=SC1090
|
build
|
||||||
for script in "${scripts[@]}"; do source "$script"; done
|
elif [ -n "$force_package" ]; then
|
||||||
|
package
|
||||||
|
|
||||||
# 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"
|
|
||||||
else
|
else
|
||||||
printf ".\n"
|
package --fail-silently || build
|
||||||
fi
|
|
||||||
} >&2
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Execute `after_install` hooks.
|
rbenv rehash
|
||||||
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"
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
1658
bin/ruby-build
1658
bin/ruby-build
File diff suppressed because it is too large
Load diff
47
bin/ruby-package
Executable file
47
bin/ruby-package
Executable 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" "$@"
|
||||||
21
install.sh
21
install.sh
|
|
@ -1,22 +1,23 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Usage: PREFIX=/usr/local ./install.sh
|
|
||||||
#
|
|
||||||
# Installs ruby-build under $PREFIX.
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
if [ -z "${PREFIX}" ]; then
|
if [ -z "${PREFIX}" ]; then
|
||||||
PREFIX="/usr/local"
|
PREFIX="/usr/local"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BIN_PATH="${PREFIX}/bin"
|
BIN_PATH="${PREFIX}/bin"
|
||||||
SHARE_PATH="${PREFIX}/share/ruby-build"
|
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"
|
for file in bin/*; do
|
||||||
install -p -m 0644 share/ruby-build/* "$SHARE_PATH"
|
cp "${file}" "${BIN_PATH}"
|
||||||
install -p -m 0644 share/man/man1/*.1 "$MAN_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
99
libexec/ruby-package-build
Executable 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
72
libexec/ruby-package-fetch
Executable 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
54
libexec/ruby-package-install
Executable 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
4
libexec/ruby-package-platform
Executable 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
55
libexec/ruby-package-unpack
Executable 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"
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
bats ${CI:+--tap} test "$@"
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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"
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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ć
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
use_gcc42_on_lion
|
||||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
use_gcc42_on_lion
|
||||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
use_gcc42_on_lion
|
||||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
use_gcc42_on_lion
|
||||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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 "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
|
||||||
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 "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.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
install_package "rubygems-1.3.5" "http://production.cf.rubygems.org/rubygems/rubygems-1.3.5.tgz" ruby
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue