Skip to content

Commit

Permalink
Try the new ruby caches
Browse files Browse the repository at this point in the history
  • Loading branch information
willnode committed Feb 2, 2025
1 parent 95b7b24 commit 741c6f2
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 113 deletions.
120 changes: 56 additions & 64 deletions src/binaries/metadata.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
{
"x64": {
"rubyVersionsList": [
"3.4.1",
"3.3.7",
"3.2.6",
"3.1.6",
"3.0.7",
"2.7.8",
"2.6.10",
"2.5.9",
"2.4.10",
"2.3.8",
"2.2.10",
"2.1.9"
"truffleruby-24.1.2",
"truffleruby-24.0.2",
"ruby-3.4.1",
"ruby-3.3.7",
"ruby-3.2.6",
"ruby-3.1.6",
"ruby-3.0.7",
"jruby-9.4.11.0",
"jruby-9.3.15.0"
],
"pythonVersionsList": [
"3.13.1",
Expand All @@ -22,16 +19,16 @@
"3.9.21"
],
"javaVersionsList": [
"23.0.1+11",
"23.0.2+7",
"22.0.2+9",
"21.0.5+11.0.LTS",
"21.0.6+7.0.LTS",
"20.0.2+9",
"19.0.2+7",
"18.0.2+101",
"17.0.13+11",
"17.0.14+7",
"16.0.2+7",
"11.0.25+9",
"8.0.432+6"
"11.0.26+4",
"8.0.442+6"
],
"pythonVersionsMap": {
"3.10.16": "https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.10.16+20250115-x86_64_v3-unknown-linux-gnu-pgo+lto-full.tar.zst",
Expand All @@ -41,44 +38,40 @@
"3.9.21": "https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.9.21+20250115-x86_64_v3-unknown-linux-gnu-pgo+lto-full.tar.zst"
},
"javaVersionsMap": {
"8.0.432+6": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u432-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u432b06.tar.gz",
"11.0.25+9": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.25%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.25_9.tar.gz",
"8.0.442+6": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u442b06.tar.gz",
"11.0.26+4": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_linux_hotspot_11.0.26_4.tar.gz",
"16.0.2+7": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz",
"17.0.13+11": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.13%2B11/OpenJDK17U-jdk_x64_linux_hotspot_17.0.13_11.tar.gz",
"17.0.14+7": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.14%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz",
"18.0.2+101": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_linux_hotspot_18.0.2.1_1.tar.gz",
"19.0.2+7": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_x64_linux_hotspot_19.0.2_7.tar.gz",
"20.0.2+9": "https://github.com/adoptium/temurin20-binaries/releases/download/jdk-20.0.2%2B9/OpenJDK20U-jdk_x64_linux_hotspot_20.0.2_9.tar.gz",
"21.0.5+11.0.LTS": "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz",
"21.0.6+7.0.LTS": "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.6_7.tar.gz",
"22.0.2+9": "https://github.com/adoptium/temurin22-binaries/releases/download/jdk-22.0.2%2B9/OpenJDK22U-jdk_x64_linux_hotspot_22.0.2_9.tar.gz",
"23.0.1+11": "https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_x64_linux_hotspot_23.0.1_11.tar.gz"
"23.0.2+7": "https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_x64_linux_hotspot_23.0.2_7.tar.gz"
},
"rubyVersionsMap": {
"2.1.9": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.1.9-ubuntu-24.04.tar.gz",
"2.2.10": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.2.10-ubuntu-24.04.tar.gz",
"2.3.8": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.3.8-ubuntu-24.04.tar.gz",
"2.4.10": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.4.10-ubuntu-24.04.tar.gz",
"2.5.9": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.5.9-ubuntu-24.04.tar.gz",
"2.6.10": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.6.10-ubuntu-24.04.tar.gz",
"2.7.8": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.7.8-ubuntu-24.04.tar.gz",
"3.0.7": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.0.7-ubuntu-24.04.tar.gz",
"3.1.6": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.1.6-ubuntu-24.04.tar.gz",
"3.2.6": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.2.6-ubuntu-24.04.tar.gz",
"3.3.7": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.3.7-ubuntu-24.04.tar.gz",
"3.4.1": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.4.1-ubuntu-24.04.tar.gz"
"truffleruby-24.1.2": "https://ruby-builder-amd64.domcloud.dev/truffleruby-24.1.2.tar.gz",
"truffleruby-24.0.2": "https://ruby-builder-amd64.domcloud.dev/truffleruby-24.0.2.tar.gz",
"ruby-3.4.1": "https://ruby-builder-amd64.domcloud.dev/ruby-3.4.1.tar.gz",
"ruby-3.3.7": "https://ruby-builder-amd64.domcloud.dev/ruby-3.3.7.tar.gz",
"ruby-3.2.6": "https://ruby-builder-amd64.domcloud.dev/ruby-3.2.6.tar.gz",
"ruby-3.1.6": "https://ruby-builder-amd64.domcloud.dev/ruby-3.1.6.tar.gz",
"ruby-3.0.7": "https://ruby-builder-amd64.domcloud.dev/ruby-3.0.7.tar.gz",
"jruby-9.4.11.0": "https://ruby-builder-amd64.domcloud.dev/jruby-9.4.11.0.tar.gz",
"jruby-9.3.15.0": "https://ruby-builder-amd64.domcloud.dev/jruby-9.3.15.0.tar.gz"
}
},
"arm64": {
"rubyVersionsList": [
"3.4.1",
"3.3.7",
"3.2.6",
"3.1.6",
"3.0.7",
"2.7.8",
"2.6.10",
"2.5.9",
"2.4.10",
"2.3.8"
"truffleruby-24.1.2",
"truffleruby-24.0.2",
"ruby-3.4.1",
"ruby-3.3.7",
"ruby-3.2.6",
"ruby-3.1.6",
"ruby-3.0.7",
"jruby-9.4.11.0",
"jruby-9.3.15.0"
],
"pythonVersionsList": [
"3.13.1",
Expand All @@ -88,16 +81,16 @@
"3.9.21"
],
"javaVersionsList": [
"23.0.1+11",
"23.0.2+7",
"22.0.2+9",
"21.0.5+11.0.LTS",
"21.0.6+7.0.LTS",
"20.0.2+9",
"19.0.2+7",
"18.0.2+101",
"17.0.13+11",
"17.0.14+7",
"16.0.2+7",
"11.0.25+9",
"8.0.432+6"
"11.0.26+4",
"8.0.442+6"
],
"pythonVersionsMap": {
"3.10.16": "https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.10.16+20250115-aarch64-unknown-linux-gnu-lto-full.tar.zst",
Expand All @@ -107,28 +100,27 @@
"3.9.21": "https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.9.21+20250115-aarch64-unknown-linux-gnu-lto-full.tar.zst"
},
"javaVersionsMap": {
"8.0.432+6": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u432-b06/OpenJDK8U-jdk_aarch64_linux_hotspot_8u432b06.tar.gz",
"11.0.25+9": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.25%2B9/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.25_9.tar.gz",
"8.0.442+6": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jdk_aarch64_linux_hotspot_8u442b06.tar.gz",
"11.0.26+4": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.26_4.tar.gz",
"16.0.2+7": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_aarch64_linux_hotspot_16.0.2_7.tar.gz",
"17.0.13+11": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.13%2B11/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.13_11.tar.gz",
"17.0.14+7": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.14%2B7/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.14_7.tar.gz",
"18.0.2+101": "https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_aarch64_linux_hotspot_18.0.2.1_1.tar.gz",
"19.0.2+7": "https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_aarch64_linux_hotspot_19.0.2_7.tar.gz",
"20.0.2+9": "https://github.com/adoptium/temurin20-binaries/releases/download/jdk-20.0.2%2B9/OpenJDK20U-jdk_aarch64_linux_hotspot_20.0.2_9.tar.gz",
"21.0.5+11.0.LTS": "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.5_11.tar.gz",
"21.0.6+7.0.LTS": "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.6_7.tar.gz",
"22.0.2+9": "https://github.com/adoptium/temurin22-binaries/releases/download/jdk-22.0.2%2B9/OpenJDK22U-jdk_aarch64_linux_hotspot_22.0.2_9.tar.gz",
"23.0.1+11": "https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_linux_hotspot_23.0.1_11.tar.gz"
"23.0.2+7": "https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_aarch64_linux_hotspot_23.0.2_7.tar.gz"
},
"rubyVersionsMap": {
"2.3.8": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.3.8-ubuntu-24.04-arm64.tar.gz",
"2.4.10": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.4.10-ubuntu-24.04-arm64.tar.gz",
"2.5.9": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.5.9-ubuntu-24.04-arm64.tar.gz",
"2.6.10": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.6.10-ubuntu-24.04-arm64.tar.gz",
"2.7.8": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-2.7.8-ubuntu-24.04-arm64.tar.gz",
"3.0.7": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.0.7-ubuntu-24.04-arm64.tar.gz",
"3.1.6": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.1.6-ubuntu-24.04-arm64.tar.gz",
"3.2.6": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.2.6-ubuntu-24.04-arm64.tar.gz",
"3.3.7": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.3.7-ubuntu-22.04-arm64.tar.gz",
"3.4.1": "https://github.com/ruby/ruby-builder/releases/download/toolcache/ruby-3.4.1-ubuntu-24.04-arm64.tar.gz"
"truffleruby-24.1.2": "https://ruby-builder-arm64.domcloud.dev/truffleruby-24.1.2.tar.gz",
"truffleruby-24.0.2": "https://ruby-builder-arm64.domcloud.dev/truffleruby-24.0.2.tar.gz",
"ruby-3.4.1": "https://ruby-builder-arm64.domcloud.dev/ruby-3.4.1.tar.gz",
"ruby-3.3.7": "https://ruby-builder-arm64.domcloud.dev/ruby-3.3.7.tar.gz",
"ruby-3.2.6": "https://ruby-builder-arm64.domcloud.dev/ruby-3.2.6.tar.gz",
"ruby-3.1.6": "https://ruby-builder-arm64.domcloud.dev/ruby-3.1.6.tar.gz",
"ruby-3.0.7": "https://ruby-builder-arm64.domcloud.dev/ruby-3.0.7.tar.gz",
"jruby-9.4.11.0": "https://ruby-builder-arm64.domcloud.dev/jruby-9.4.11.0.tar.gz",
"jruby-9.3.15.0": "https://ruby-builder-arm64.domcloud.dev/jruby-9.3.15.0.tar.gz"
}
}
}
34 changes: 10 additions & 24 deletions src/binaries/update.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import fs from "fs";
import { dirname } from "path";
import path, { dirname } from "path";
import { fileURLToPath } from "url";
import request from "../request.js";
const __dirname = dirname(fileURLToPath(import.meta.url));
Expand Down Expand Up @@ -27,7 +27,10 @@ const pythonConstants = {
},
};

const rubyBuilderUrl = 'https://github.com/ruby/ruby-builder/releases/expanded_assets/toolcache';
const rubyBuilderUrl = {
x64: 'https://ruby-builder-amd64.domcloud.dev',
arm64: 'https://ruby-builder-arm64.domcloud.dev',
}

const adoptiumList = 'https://api.adoptium.net/v3/info/available_releases';

Expand All @@ -41,11 +44,11 @@ export const initUtils = async () => {

const result = {};

const rubyBuilderData = await request(rubyBuilderUrl);

const adoptiumListData = await request(adoptiumList);

for (const arch of ["x64", "arm64"]) {
const rubyBuilderData = await request(rubyBuilderUrl[arch] + '/metadata.json');

// https://packagist.org/php-statistics
let rubyVersionsList = [];
let pythonVersionsList = [];
Expand All @@ -63,30 +66,13 @@ export const initUtils = async () => {
*/
let rubyVersionsMap = {};
{
const fileName = arch == 'x64' ? 'ubuntu-24.04.tar.gz' : 'ubuntu-24.04-arm64.tar.gz';
const hrefRegex = new RegExp(`href="[-\\w/]+?\\/ruby-([.\\d]+)-${fileName}"`, 'g');
const toolcachePrefix = `https://github.com/ruby/ruby-builder/releases/download/toolcache`;

// @ts-ignore
var matches = [
...("" + rubyBuilderData.data).matchAll(hrefRegex),
];
for (const match of matches) {
if (!rubyVersionsList.includes(match[1])) {
rubyVersionsList.push(match[1]);
rubyVersionsMap[match[1]] = `${toolcachePrefix}/ruby-${match[1]}-${fileName}`
}
rubyVersionsList = rubyBuilderData.data.versions;
for (const v of rubyVersionsList) {
rubyVersionsMap[v] = rubyBuilderUrl[arch] + "/" + v + ".tar.gz";
}
rubyVersionsList = sortSemver(rubyVersionsList).reverse();
// remove minor versions
rubyVersionsList = rubyVersionsList.filter((x, i) => rubyVersionsList.findIndex(y => y.startsWith(x.substring(0, 3))) == i);
for (const key of Object.keys(rubyVersionsMap)) {
if (!rubyVersionsList.includes(key)) {
delete rubyVersionsMap[key];
}
}
}
;

await request(pythonConstants.latestTagUrl()).then((res) => {
res.data = JSON.parse(res.data)
Expand Down
19 changes: 7 additions & 12 deletions src/executor/runnercode.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,18 +167,13 @@ export async function runConfigCodeFeatures(key, value, writeLog, domaindata, ss
const rarg = getRubyVersion(value);
await writeLog("$> Changing Ruby engine to " + rarg.version);
await sshExec(`command -v rvm &> /dev/null || { curl -sSL https://rvm.io/mpapis.asc | gpg --import -; curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -; }`);
await sshExec(`command -v rvm &> /dev/null || { curl -sSL https://get.rvm.io | bash -s stable; source ~/.rvm/scripts/rvm; rvm autolibs disable; }`);
// GLIBC Compability issue -- Need to wait until RHEL 10?
// if (rarg.binary) {
// await sshExec(`cd ~/tmp && mkdir -p ~/.rvm/rubies/ruby-${rarg.version}`);
// await sshExec(`wget -O ruby.tar.gz "${rarg.binary}" && tar -axf ruby.tar.gz && rm $_`);
// const rsubdir = process.arch;
// await sshExec(`mv ~/tmp/${rsubdir}/* ~/.rvm/rubies/ruby-${rarg.version} || true ; rm -rf ~/tmp/${rsubdir}`);
// await sshExec(`find ~/.rvm/rubies/ruby-${rarg.version}/bin -type f -exec sed -i 's|^#!/opt/hostedtoolcache/.*|#!/bin/env ruby|' {} +`);
// await sshExec(`echo "export LD_LIBRARY_PATH=~/.rvm/rubies/ruby-${rarg.version}/lib:$LD_LIBRARY_PATH" >> ~/.bashrc`) // fix venv
// await sshExec("cd ~/public_html", false);
// }
await sshExec(`rvm install ${getRubyVersion(value)} --no-docs`);
await sshExec(`command -v rvm &> /dev/null || { curl -sSL https://get.rvm.io | bash -s master; source ~/.rvm/scripts/rvm; rvm autolibs disable; }`);
if (rarg.binary) {
await sshExec(`wget -O ~/tmp/ruby.tar.gz "${rarg.binary}" && tar -axf ~/tmp/ruby.tar.gz -C ~/.rvm/rubies && rm ~/tmp/ruby.tar.gz`);
await sshExec("rvm alias create default " + rarg.version);
} else {
await sshExec(`rvm install ${getRubyVersion(value)} --no-docs`);
}
await sshExec("ruby --version");
}
break;
Expand Down
27 changes: 14 additions & 13 deletions src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ const {
javaVersionsMap,
pythonVersionsList,
pythonVersionsMap,
rubyVersionsList
rubyVersionsList,
rubyVersionsMap,
} = binaries;


Expand Down Expand Up @@ -129,36 +130,36 @@ export const getPythonVersion = (/** @type {string} */ status) => {
}

export const getRubyVersion = (/** @type {string} */ status) => {
// get latest stable version
var stable = rubyVersionsList[0];
const expand = (/** @type {string} */ version) => ({
version,
binary: rubyVersionsMap[version] || null,
})
var stable = rubyVersionsList.filter(x => x.startsWith('ruby-'))[0];
if (!status) {
return stable;
}
if (/^ruby-/.test(status)) {
status = status.substring(5);
return expand(stable);
}
if (/^\d+(\.\d+)?$/.test(status)) {
var m = rubyVersionsList.find(x => {
return x.startsWith(status);
return x.startsWith('ruby-' + status);
});
if (m) {
return m;
return expand(m);
}
}
if (/^\d+\.\d+\.\d+$/.test(status)) {
return status;
return expand('ruby-' + status);
}
switch (status) {
case 'lts':
case 'security':
var security = rubyVersionsList.find(x => {
var security = rubyVersionsList.filter(x => x.startsWith('ruby-')).find(x => {
return !x.startsWith(stable.substring(0, stable.lastIndexOf('.')));
});
return security || stable;
return expand(security || stable);
case 'latest':
case 'stable':
default:
return stable;
return expand(stable);
}
}

Expand Down

0 comments on commit 741c6f2

Please sign in to comment.