The edge of glory (rolling-release ~everything~)

This commit is contained in:
Radon Rosborough 2020-07-31 19:26:05 -06:00
parent 4e2d98b7f3
commit 2d649ab017
12 changed files with 164 additions and 129 deletions

View File

@ -68,4 +68,4 @@ RUN sudo cp -a /tmp/riju/* /home/docker/src/ && rm -rf /tmp/riju
WORKDIR /home/docker/src
RUN sudo deluser docker sudo
RUN yarn test
RUN RIJU_PRIVILEGED=1 yarn test

View File

@ -1845,7 +1845,6 @@ binding_irb.run(IRB.conf)
scope: {
code: `x = 5`,
},
ensure: `ruby -e 'raise "version mismatch, expected #{RUBY_VERSION}" unless ENV["PATH"].include? ".gem/ruby/#{RUBY_VERSION}/bin"'`,
format: {
run: "rufo -x",
input: `puts "Hello, world!";

View File

@ -1,4 +1,4 @@
import { spawn, SpawnOptions } from "child_process";
import { SpawnOptions, spawn, spawnSync } from "child_process";
import * as os from "os";
import * as process from "process";
@ -21,10 +21,20 @@ export const rijuSystemPrivileged = appRoot.resolve(
"system/out/riju-system-privileged"
);
const rubyVersion = (() => {
try {
return spawnSync("ruby", ["-e", "puts RUBY_VERSION"])
.stdout.toString()
.trim();
} catch (err) {
return null;
}
})();
function getEnv({ uid, uuid }: Context) {
const cwd = `/tmp/riju/${uuid}`;
const path = [
`${cwd}/.gem/ruby/2.7.0/bin`,
rubyVersion && `${cwd}/.gem/ruby/${rubyVersion}/bin`,
`${cwd}/.local/bin`,
`${cwd}/node_modules/.bin`,
`/usr/local/sbin`,
@ -32,7 +42,7 @@ function getEnv({ uid, uuid }: Context) {
`/usr/sbin`,
`/usr/bin`,
`/bin`,
];
].filter((x) => x);
const username =
uid >= MIN_UID && uid < MAX_UID ? `riju${uid}` : os.userInfo().username;
return {

View File

@ -12,25 +12,32 @@ apt-get update
apt-get install -y apt-transport-https curl gnupg lsb-release software-properties-common wget
rm -rf /var/lib/apt/lists/*
ubuntu_ver="$(lsb_release -rs)"
ubuntu_name="$(lsb_release -cs)"
curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
curl -sSL https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
curl -sSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
curl -sSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
curl -sSL https://keybase.io/crystal/pgp_keys.asc | apt-key add -
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B4112585D386EB94
wget -nv https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
wget -nv "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb"
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<"EOF"
nodesource="$(curl -sS https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
cran="$(curl -sS https://cran.r-project.org/bin/linux/ubuntu/ | grep '<tr>' | grep focal | grep -Eo 'cran[0-9]+' | head -n1)"
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
deb [arch=amd64] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main
deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/
deb https://deb.nodesource.com/node_14.x focal main
deb https://cloud.r-project.org/bin/linux/ubuntu ${ubuntu_name}-${cran}/
deb https://deb.nodesource.com/${nodesource} ${ubuntu_name} main
deb https://dist.crystal-lang.org/apt crystal main
deb https://dl.hhvm.com/ubuntu focal main
deb https://dl.hhvm.com/ubuntu ${ubuntu_name} main
deb https://dl.yarnpkg.com/debian/ stable main
deb-src https://deb.nodesource.com/node_14.x focal main
deb https://downloads.ceylon-lang.org/apt/ unstable main
EOF
add-apt-repository -y -n ppa:deadsnakes/ppa

View File

@ -8,6 +8,7 @@ packages="
# Needed for project infrastructure
bash
dctrl-tools
git
make
nodejs

View File

@ -4,6 +4,11 @@ set -e
set -o pipefail
set -x
export DEBIAN_FRONTEND=noninteractive
apt-get update
ceylon="$(grep-aptavail -F Package ceylon -s Package -n | sort -rV | head -n1)"
packages="
# Ada
@ -47,6 +52,7 @@ clang-format
mono-mcs
# Ceylon
${ceylon}
openjdk-8-jdk-headless
# Clojure
@ -74,8 +80,6 @@ dhall
"
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y $(grep -v "^#" <<< "$packages")
rm -rf /var/lib/apt/lists/*

View File

@ -4,6 +4,12 @@ set -e
set -o pipefail
set -x
export DEBIAN_FRONTEND=noninteractive
apt-get update
lua_ver="$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)"
lua_name="$(grep-aptavail -XF Provides lua -a -XF Version "${lua_ver}" -s Package -n | head -n1)"
packages="
# Elixir
@ -26,7 +32,7 @@ fsharp
fish
# FORTRAN
flang-7
flang
# Forth
gforth
@ -67,12 +73,10 @@ llvm
cmake
# Lua
lua5.3
${lua_name}
"
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y $(grep -v "^#" <<< "$packages")
rm -rf /var/lib/apt/lists/*

View File

@ -4,6 +4,12 @@ set -e
set -o pipefail
set -x
export DEBIAN_FRONTEND=noninteractive
apt-get update
lua_ver="$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)"
liblua_name="$(grep-aptavail -eF Package "liblua[0-9.]+-dev" -a -XF Version "${lua_ver}" -s Package | head -n1)"
packages="
# Scala
@ -41,7 +47,7 @@ tcl
tcsh
# TeX
liblua5.3-dev
${liblua_name}
luarocks
texlive-binaries
@ -72,8 +78,6 @@ zsh
"
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y $(grep -v "^#" <<< "$packages")
rm -rf /var/lib/apt/lists/*

View File

@ -5,73 +5,81 @@ set -o pipefail
set -x
pushd /tmp >/dev/null
latest_release() {
curl -sSL "https://api.github.com/repos/$1/releases/latest" | jq -r .tag_name
}
# Needed for project infrastructure
wget -nv https://github.com/watchexec/watchexec/releases/download/1.13.1/watchexec-1.13.1-x86_64-unknown-linux-gnu.deb
ver="$(latest_release watchexec/watchexec)"
wget -nv "https://github.com/watchexec/watchexec/releases/download/${rel}/watchexec-${ver}-x86_64-unknown-linux-gnu.deb"
dpkg -i watchexec-*.deb
rm watchexec-*.deb
git clone https://github.com/circulosmeos/gdown.pl.git
mv gdown.pl/gdown.pl /usr/bin/gdown
mv gdown.pl/gdown.pl /usr/local/bin/gdown
rm -rf gdown.pl
# Shared
wget -nv https://github.com/jgm/pandoc/releases/download/2.10/pandoc-2.10-linux-amd64.tar.gz
ver="$(latest_release jgm/pandoc)"
wget -nv "https://github.com/jgm/pandoc/releases/download/${ver}/pandoc-${ver}-linux-amd64.tar.gz"
tar -xf pandoc-*-linux-amd64.tar.gz -C /usr --strip-components=1
rm pandoc-*-linux-amd64.tar.gz
# ><>
wget -nv https://gist.githubusercontent.com/anonymous/6392418/raw/3b16018cb47f2f9ad1fa085c155cc5c0dc448b2d/fish.py -O /usr/bin/esofish
sed -i 's:^#!.*:#!/usr/bin/env python3:' /usr/bin/esofish
chmod +x /usr/bin/esofish
wget -nv https://gist.githubusercontent.com/anonymous/6392418/raw/fish.py -O /usr/local/bin/esofish
sed -i 's:^#!.*:#!/usr/bin/env python3:' /usr/local/bin/esofish
chmod +x /usr/local/bin/esofish
# Ada
wget -nv https://dl.bintray.com/reznikmm/ada-language-server/linux-latest.tar.gz
tar -xf linux-latest.tar.gz
mv linux/ada_language_server /usr/bin/ada_language_server
mv linux/ada_language_server /usr/local/bin/ada_language_server
mv linux/*.so* /usr/lib/x86_64-linux-gnu/
rm -rf linux linux-latest.tar.gz
# APL
wget -nv ftp://ftp.gnu.org/gnu/apl/apl_1.8-1_amd64.deb
file="$(curl -sS ftp://ftp.gnu.org/gnu/apl/ | grep -Eo 'apl_[-0-9.]+_amd64.deb$' | sort -rV | head -n1)"
wget -nv "ftp://ftp.gnu.org/gnu/apl/${file}"
dpkg -i apl_*_amd64.deb
rm apl_*_amd64.deb
# Ceylon
wget -nv https://ceylon-lang.org/download/dist/1_3_3_deb -O ceylon.deb
dpkg -i ceylon.deb
rm ceylon.deb
# Clojure
wget -nv https://github.com/snoe/clojure-lsp/releases/download/release-20200629T153107/clojure-lsp
ver="$(latest_release snoe/clojure-lsp)"
wget -nv "https://github.com/snoe/clojure-lsp/releases/download/${ver}/clojure-lsp"
chmod +x clojure-lsp
mv clojure-lsp /usr/bin/clojure-lsp
mv clojure-lsp /usr/local/bin/clojure-lsp
# D
wget -nv http://downloads.dlang.org/releases/2.x/2.092.0/dmd_2.092.0-0_amd64.deb
wget -nv "$(curl -sSL https://dlang.org/download.html | grep -Eo '"http://[^"]+amd64.deb"' | tr -d '"')"
dpkg -i dmd_*.deb
rm dmd_*.deb
# Dhall
wget -nv https://github.com/dhall-lang/dhall-haskell/releases/download/1.33.1/dhall-json-1.7.0-x86_64-linux.tar.bz2
ver="$(latest_release dhall-lang/dhall-haskell)"
file="$(curl -sSL "https://api.github.com/repos/dhall-lang/dhall-haskell/releases/tags/${ver}" | jq -r '.assets | map(select(.name | (contains("dhall-json") and contains("x86_64-linux.tar.bz2")))) | .[0].name')"
wget -nv "https://github.com/dhall-lang/dhall-haskell/releases/download/${ver}/${file}"
mkdir dhall-json
tar -xf dhall-json-*-x86_64-linux.tar.bz2 -C dhall-json
mv dhall-json/bin/dhall-to-json dhall-json/bin/json-to-dhall /usr/bin/
mv dhall-json/bin/dhall-to-json dhall-json/bin/json-to-dhall /usr/local/bin/
rm -rf dhall-json dhall-json-*-x86_64-linux.tar.bz2
# Elixir
wget -nv https://github.com/elixir-lsp/elixir-ls/releases/download/v0.5.0/elixir-ls.zip
ver="$(latest_release elixir-lsp/elixir-ls)"
wget -nv "https://github.com/elixir-lsp/elixir-ls/releases/download/${ver}/elixir-ls.zip"
unzip -d /opt/elixir-ls elixir-ls.zip
ln -s /opt/elixir-ls/language_server.sh /usr/bin/elixir-ls
ln -s /opt/elixir-ls/language_server.sh /usr/local/bin/elixir-ls
rm elixir-ls.zip
# Elm
wget -nv https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz
ver="$(latest_release elm/compiler)"
wget -nv "https://github.com/elm/compiler/releases/download/${ver}/binary-for-linux-64-bit.gz"
gunzip binary-for-linux-64-bit.gz
chmod +x binary-for-linux-64-bit
mv binary-for-linux-64-bit /usr/bin/elm
mv binary-for-linux-64-bit /usr/local/bin/elm
# Emojicode
wget -nv https://github.com/emojicode/emojicode/releases/download/v1.0-beta.2/Emojicode-1.0-beta.2-Linux-x86_64.tar.gz
ver="$(latest_release emojicode/emojicode)"
wget -nv "https://github.com/emojicode/emojicode/releases/download/${ver}/Emojicode-$(sed 's/^v//' <<< "$ver")-Linux-x86_64.tar.gz"
tar -xf Emojicode-*-Linux-x86_64.tar.gz
pushd Emojicode-*-Linux-x86_64 >/dev/null
mv emojicodec /usr/local/bin/
@ -90,64 +98,67 @@ rm Entropy.zip
# Erlang
wget -nv https://s3.amazonaws.com/rebar3/rebar3
chmod +x rebar3
mv rebar3 /usr/bin/rebar3
mv rebar3 /usr/local/bin/rebar3
# Euphoria
wget -nv https://sourceforge.net/projects/rapideuphoria/files/Euphoria/4.0.5/euphoria_4.0.5_amd64.deb/download -O euphoria.deb
wget -nv "$(curl -sSL https://sourceforge.net/projects/rapideuphoria/best_release.json | jq -r '.platform_releases.linux.url')" -O euphoria.deb
dpkg -i euphoria.deb
rm euphoria.deb
# Factor
wget -nv https://downloads.factorcode.org/releases/0.98/factor-linux-x86-64-0.98.tar.gz
ver="$(curl -sSL https://factorcode.org/ | grep -Eo 'release\?os=linux[^>]+>[^<]+' | sed -E 's/[^>]+>//' | head -n1)"
wget -nv "https://downloads.factorcode.org/releases/${ver}/factor-linux-x86-64-${ver}.tar.gz"
tar -xf factor-linux-x86-64-*.tar.gz
mv -T factor /opt/factor
ln -s /opt/factor/factor /usr/bin/factor-lang
ln -s /opt/factor/factor /usr/local/bin/factor-lang
rm factor-linux-x86-64-*.tar.gz
# Go
export GO111MODULE=on
export GOPATH="$PWD/go"
go get golang.org/x/tools/gopls@latest
mv go/bin/gopls /usr/bin/gopls
mv go/bin/gopls /usr/local/bin/gopls
rm -rf go
# GolfScript
wget -nv http://www.golfscript.com/golfscript/golfscript.rb -O /usr/bin/golfscript
chmod +x /usr/bin/golfscript
wget -nv http://www.golfscript.com/golfscript/golfscript.rb -O /usr/local/bin/golfscript
chmod +x /usr/local/bin/golfscript
# Haskell
wget -nv https://get.haskellstack.org/stable/linux-x86_64-static.tar.gz
tar -xf linux-x86_64-static.tar.gz
mv stack-*-linux-x86_64-static/stack /usr/bin/stack
mv stack-*-linux-x86_64-static/stack /usr/local/bin/stack
rm -rf stack-*-linux-x86_64-static linux-x86_64-static.tar.gz
wget "https://drive.google.com/uc?export=download&id=1MpozlNLmWeUaQuT-5t6gyE3Yv56gUbea" -O /usr/local/bin/brittany
chmod +x /usr/local/bin/brittany
mkdir -p /opt/haskell
gdown "https://drive.google.com/uc?export=download&id=1GPoR_ja4ns16KCamRgwB-JVag4HK0igz" /usr/bin/hie
gdown "https://drive.google.com/uc?export=download&id=1GPoR_ja4ns16KCamRgwB-JVag4HK0igz" /usr/local/bin/hie
gdown "https://drive.google.com/uc?export=download&id=1qSxj8JjAeetAmNjUGayX0RBARgr5R4Ij" /opt/haskell/hoogle.hoo
chmod +x /usr/bin/hie
chmod +x /usr/local/bin/hie
# HCL/TOML/YAML
wget -nv https://github.com/sclevine/yj/releases/download/v4.0.0/yj-linux
ver="$(latest_release sclevine/yj)"
wget -nv "https://github.com/sclevine/yj/releases/download/${ver}/yj-linux"
chmod +x yj-linux
mv yj-linux /usr/bin/yj
mv yj-linux /usr/local/bin/yj
# Ink
wget -nv https://github.com/thesephist/ink/releases/download/v0.1.7/ink-linux
wget -nv https://github.com/thesephist/ink/releases/download/v0.1.7/std.ink
wget -nv https://github.com/thesephist/ink/releases/download/v0.1.7/str.ink
ver="$(latest_release thesephist/ink)"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/ink-linux"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/std.ink"
wget -nv "https://github.com/thesephist/ink/releases/download/${ver}/str.ink"
chmod +x ink-linux
mv ink-linux /usr/bin/ink
mv ink-linux /usr/local/bin/ink
mkdir /opt/ink
mv std.ink str.ink /opt/ink/
# Ioke
wget -nv https://ioke.org/dist/ioke-P-ikj-0.4.0.tar.gz
wget -nv https://ioke.org/dist/ioke-P-ikj-latest.tar.gz
tar -xf ioke-P-ikj-*.tar.gz -C /opt
rm ioke-P-ikj-*.tar.gz
ln -s /opt/ioke/bin/ioke /usr/bin/ioke
ln -s /opt/ioke/bin/ioke /usr/local/bin/ioke
# Kitten
wget -nv "https://drive.google.com/uc?export=download&id=11u0G2I8i0u4ez27zvEjAT6E9xF4RwuFZ" -O /usr/local/bin/kitten
@ -155,18 +166,21 @@ wget -nv "https://drive.google.com/uc?export=download&id=1h-U1iURWax8h18kTD1AyGS
chmod +x /usr/local/bin/kitten
# Kotlin
wget -nv https://github.com/JetBrains/kotlin/releases/download/v1.3.72/kotlin-compiler-1.3.72.zip
ver="$(latest_release JetBrains/kotlin)"
wget -nv "https://github.com/JetBrains/kotlin/releases/download/${ver}/kotlin-compiler-$(sed 's/^v//' <<< "$ver").zip"
unzip kotlin-*.zip
cp kotlinc/bin/* /usr/bin/
cp kotlinc/lib/* /usr/lib/
cp kotlinc/bin/* /usr/local/bin/
cp kotlinc/lib/* /usr/local/lib/
rm -rf kotlin-*.zip kotlinc
# Lua
wget -nv https://github.com/EmmyLua/EmmyLua-LanguageServer/releases/download/0.3.6/EmmyLua-LS-all.jar
ver="$(latest_release EmmyLua/EmmyLua-LanguageServer)"
wget -nv "https://github.com/EmmyLua/EmmyLua-LanguageServer/releases/download/${ver}/EmmyLua-LS-all.jar"
mv EmmyLua-LS-all.jar /usr/lib/EmmyLua-LS.jar
# MariaDB
wget -nv "https://downloads.mariadb.org/f/mariadb-10.5.4/bintar-linux-x86_64/mariadb-10.5.4-linux-x86_64.tar.gz/from/http%3A//mirror.vpsfree.cz/mariadb/?serve" -O mariadb.tar.gz
ver="$(curl -sSL https://downloads.mariadb.org/ | grep 'href="/mariadb/[0-9]' | grep -Eo '[0-9][^/]+' | sort -rV | head -n1)"
wget -nv "https://downloads.mariadb.org/f/mariadb-${ver}/bintar-linux-x86_64/mariadb-${ver}-linux-x86_64.tar.gz/from/http%3A//mirror.vpsfree.cz/mariadb/?serve" -O mariadb.tar.gz
tar -xf mariadb.tar.gz
mkdir /opt/mariadb
mv mariadb-*-linux-x86_64/* /opt/mariadb/
@ -174,17 +188,20 @@ chmod a=rx,u=rwx /opt/mariadb/lib/plugin/auth_pam_tool_dir
chmod a=rx,u=rwxs /opt/mariadb/lib/plugin/auth_pam_tool_dir/auth_pam_tool
# Omgrofl
ver="$(latest_release OlegSmelov/omgrofl-interpreter)"
mkdir /opt/omgrofl
wget -nv https://github.com/OlegSmelov/omgrofl-interpreter/releases/download/v0.1/Omgrofl.jar -O /opt/omgrofl/Omgrofl.jar
wget -nv "https://github.com/OlegSmelov/omgrofl-interpreter/releases/download/${ver}/Omgrofl.jar" -O /opt/omgrofl/Omgrofl.jar
# PowerShell
wget -nv https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/powershell-7.0.1-linux-x64.tar.gz
ver="$(latest_release PowerShell/PowerShell)"
wget -nv "https://github.com/PowerShell/PowerShell/releases/download/${ver}/powershell-$(sed 's/^v//' <<< "$ver")-linux-x64.tar.gz"
mkdir /opt/powershell
tar -xf powershell-*.tar.gz -C /opt/powershell
ln -s /opt/powershell/pwsh /usr/bin/pwsh
ln -s /opt/powershell/pwsh /usr/local/bin/pwsh
rm powershell-*.tar.gz
wget -nv https://github.com/PowerShell/PowerShellEditorServices/releases/download/v2.2.0/PowerShellEditorServices.zip
ver="$(latest_release PowerShell/PowerShellEditorServices)"
wget -nv "https://github.com/PowerShell/PowerShellEditorServices/releases/download/${ver}/PowerShellEditorServices.zip"
unzip PowerShellEditorServices.zip
mv PowerShellEditorServices /opt/powershell-editor-services
rm PowerShellEditorServices.zip
@ -195,11 +212,12 @@ nupkg="$(echo "$xml" | grep -Eo 'https://[^<]+\.nupkg' | tail -n1)"
wget -nv "${nupkg}"
unzip -d /opt/mspyls Python-Language-Server-linux-x64.*.nupkg
chmod +x /opt/mspyls/Microsoft.Python.LanguageServer
ln -s /opt/mspyls/Microsoft.Python.LanguageServer /usr/bin/Microsoft.Python.LanguageServer
ln -s /opt/mspyls/Microsoft.Python.LanguageServer /usr/local/bin/Microsoft.Python.LanguageServer
rm Python-Language-Server-linux-x64.*.nupkg
# ReasonML
wget -nv https://github.com/jaredly/reason-language-server/releases/download/1.7.10/rls-linux.zip
ver="$(latest_release jaredly/reason-language-server)"
wget -nv "https://github.com/jaredly/reason-language-server/releases/download/${ver}/rls-linux.zip"
unzip rls-linux.zip
mv rls-linux/reason-language-server /usr/local/bin/
rm rls-linux.zip
@ -215,14 +233,15 @@ RUSTUP_HOME=/opt/rust exec /opt/rust/bin/${0##*/} "$@"
EOF
chmod +x /opt/rust/wrapper
for file in /opt/rust/bin/*; do
ln -s /opt/rust/wrapper "/usr/bin/${file##*/}"
ln -s /opt/rust/wrapper "/usr/local/bin/${file##*/}"
done
# Scala
file="$(curl -sSL https://scalameta.org/metals/docs/editors/emacs.html | grep -Eo 'org.scalameta[^ ]+')"
wget -nv https://git.io/coursier-cli
chmod +x coursier-cli
mv coursier-cli /usr/bin/coursier
coursier bootstrap --java-opt -Xss4m --java-opt -Xms100m --java-opt -Dmetals.client=emacs org.scalameta:metals_2.12:0.9.1 -r bintray:scalacenter/releases -r sonatype:snapshots -o /usr/bin/metals
mv coursier-cli /usr/local/bin/coursier
coursier bootstrap --java-opt -Xss4m --java-opt -Xms100m --java-opt -Dmetals.client=emacs "${file}" -r bintray:scalacenter/releases -r sonatype:snapshots -o /usr/local/bin/metals
metals -version </dev/null
mkdir /opt/coursier
mv "$HOME/.cache/coursier" /opt/coursier/cache
@ -232,15 +251,22 @@ wget -nv https://setl.org/setl/bin/Linux-x86-64bit/setlbin.tgz
tar -xf setlbin.tgz -C /usr/local/bin
# Snobol
gdown "https://drive.google.com/file/d/1ygQkpgfirpq4b7s4YNsSijkK8IQgSLWk/view?usp=sharing" /usr/bin/snobol4
chmod +x /usr/bin/snobol4
file="$(curl -sSL ftp://ftp.snobol4.org/snobol/ | grep -Eo 'snobol4-.*\.tar\.gz')"
wget -nv "ftp://ftp.snobol4.org/snobol/${file}"
tar -xf snobol4-*.tar.gz
rm snobol4-*.tar.gz
pushd snobol4-* >/dev/null
make || true
mv snobol4 /usr/local/bin/snobol4
popd >/dev/null
rm -rf snobol4-*
# Swift
gdown "https://drive.google.com/uc?export=download&id=1eE1-VuZz0gv-fITaGVT_r1UunCLjS-JT" swift.tar.gz
mkdir /opt/swift
tar -xf swift.tar.gz -C /opt/swift --strip-components=2
ln -s /opt/swift/bin/swiftc /usr/bin/swiftc
ln -s /opt/swift/bin/sourcekit-lsp /usr/bin/sourcekit-lsp
ln -s /opt/swift/bin/swiftc /usr/local/bin/swiftc
ln -s /opt/swift/bin/sourcekit-lsp /usr/local/bin/sourcekit-lsp
rm swift.tar.gz
popd >/dev/null

View File

@ -8,19 +8,19 @@ pushd /tmp >/dev/null
# Beatnik
git clone https://github.com/catseye/Beatnik.git
sed -i 's#env python#env python2#' Beatnik/script/beatnik.py
mv Beatnik/script/beatnik.py /usr/bin/beatnik
mv Beatnik/script/beatnik.py /usr/local/bin/beatnik
rm -rf Beatnik
# Binary Lambda Calculus
wget -nv https://www.ioccc.org/2012/tromp/tromp.c
clang tromp.c -Wno-everything -DInt=long -DX=8 -DA=500000 -o /usr/bin/tromp
clang tromp.c -Wno-everything -DInt=long -DX=8 -DA=500000 -o /usr/local/bin/tromp
rm tromp.c
# Erlang
git clone https://github.com/erlang-ls/erlang_ls.git
pushd erlang_ls >/dev/null
make
mv _build/default/bin/erlang_ls /usr/bin/erlang_ls
mv _build/default/bin/erlang_ls /usr/local/bin/erlang_ls
popd >/dev/null
rm -rf erlang_ls
@ -31,7 +31,7 @@ git clone https://github.com/m-ender/hexagony.git /opt/hexagony
git clone https://github.com/raxod502/kalyn.git
pushd kalyn >/dev/null
stack build kalyn
mv "$(stack exec which kalyn)" /usr/bin/kalyn
mv "$(stack exec which kalyn)" /usr/local/bin/kalyn
mkdir /opt/kalyn
cp -R src-kalyn/Stdlib src-kalyn/Stdlib.kalyn /opt/kalyn/
popd >/dev/null
@ -46,14 +46,14 @@ rm -rf lci
# Malbolge
git clone https://github.com/bipinu/malbolge.git
clang malbolge/malbolge.c -o /usr/bin/malbolge
clang malbolge/malbolge.c -o /usr/local/bin/malbolge
rm -rf malbolge
# Rapira
git clone https://github.com/freeduke33/rerap2.git
pushd rerap2 >/dev/null
make
mv rapira /usr/bin/rapira
mv rapira /usr/local/bin/rapira
popd >/dev/null
rm -rf rerap2
@ -66,12 +66,12 @@ popd >/dev/null
rm -rf qalb
# Thue
wget -nv https://catseye.tc/distfiles/thue-1.5-2015.0827.zip
wget -nv "$(curl -sSL https://catseye.tc/distribution/Thue_distribution | grep -Eo 'https://catseye.tc/distfiles/thue-[^"]+\.zip' | head -n1)"
unzip thue-*.zip
rm thue-*.zip
pushd thue-* >/dev/null
./build.sh
mv bin/thue /usr/bin/thue
mv bin/thue /usr/local/bin/thue
popd >/dev/null
rm -rf thue-*
@ -79,7 +79,7 @@ rm -rf thue-*
git clone https://github.com/manyoso/zot.git
pushd zot >/dev/null
./build.sh
mv build/bin/zot /usr/bin/zot
mv build/bin/zot /usr/local/bin/zot
popd >/dev/null
rm -rf zot

View File

@ -4,14 +4,22 @@ set -e
set -o pipefail
set -x
pushd /tmp >/dev/null
useradd -m -N -l -r -p '!' build
# Cmd
useradd -m -N -l -r -p '!' build
sudo -u build wine cmd < /dev/null
mkdir -p /opt/cmd/home-template
cp -R /home/build/.wine /opt/cmd/home-template/
chmod -R a=u,go-w /opt/cmd/home-template
userdel -r build
# Elm
mkdir -p /opt/elm
mkdir elm-project
pushd elm-project >/dev/null
yes | elm init
cat elm.json | jq '."source-directories" = ["."]' > /opt/elm/elm.json
popd >/dev/null
rm -rf elm-project
# PureScript
mkdir project-template
@ -43,7 +51,7 @@ yarn install
popd >/dev/null
# Befunge
tee /usr/bin/befunge-repl >/dev/null <<"EOF"
tee /usr/local/bin/befunge-repl >/dev/null <<"EOF"
#!/usr/bin/env -S NODE_PATH=/usr/lib/node_modules node
const fs = require("fs");
@ -71,10 +79,10 @@ befunge.run(fs.readFileSync(args[0], { encoding: "utf-8" })).catch((err) => {
process.exit(1);
});
EOF
chmod +x /usr/bin/befunge-repl
chmod +x /usr/local/bin/befunge-repl
# Binary Lambda Calculus
tee /usr/bin/binary-to-text >/dev/null <<"EOF"
tee /usr/local/bin/binary-to-text >/dev/null <<"EOF"
#!/usr/bin/env python3
import re
@ -88,10 +96,10 @@ for m in re.finditer(r"([01]{8})", text):
print("".join(out), end="")
EOF
chmod +x /usr/bin/binary-to-text
chmod +x /usr/local/bin/binary-to-text
# BrainF
tee /usr/bin/brainf-repl >/dev/null <<"EOF"
tee /usr/local/bin/brainf-repl >/dev/null <<"EOF"
#!/usr/bin/env python3
import argparse
import readline
@ -120,36 +128,7 @@ while True:
f.flush()
subprocess.run(["beef", f.name])
EOF
chmod +x /usr/bin/brainf-repl
# Elm
mkdir /opt/elm
tee /opt/elm/elm.json >/dev/null <<"EOF"
{
"type": "application",
"source-directories": [
"."
],
"elm-version": "0.19.1",
"dependencies": {
"direct": {
"elm/browser": "1.0.2",
"elm/core": "1.0.5",
"elm/html": "1.0.0"
},
"indirect": {
"elm/json": "1.1.3",
"elm/time": "1.0.0",
"elm/url": "1.0.0",
"elm/virtual-dom": "1.0.2"
}
},
"test-dependencies": {
"direct": {},
"indirect": {}
}
}
EOF
chmod +x /usr/local/bin/brainf-repl
# Haskell
mkdir -p /opt/haskell
@ -187,7 +166,7 @@ repl.start({prompt: "قلب> ", eval: (cmd, context, filename, callback) => call
EOF
# Unlambda
tee /usr/bin/unlambda-repl >/dev/null <<"EOF"
tee /usr/local/bin/unlambda-repl >/dev/null <<"EOF"
#!/usr/bin/env python3
import argparse
import readline
@ -213,7 +192,8 @@ while True:
continue
subprocess.run(["unlambda"], input=code, encoding="utf-8")
EOF
chmod +x /usr/bin/unlambda-repl
chmod +x /usr/local/bin/unlambda-repl
userdel -r build
popd >/dev/null
rm "$0"

View File

@ -4,9 +4,9 @@ set -e
set -o pipefail
cp scripts/riju.service /etc/systemd/system/riju.service
cp scripts/riju-serve.bash /usr/bin/riju-serve
cp scripts/riju-serve.bash /usr/local/bin/riju-serve
cp scripts/certbot-pre.bash /etc/letsencrypt/renewal-hooks/pre/riju
cp scripts/certbot-post.bash /etc/letsencrypt/renewal-hooks/post/riju
cp scripts/deploy-phase1.py /usr/bin/riju-deploy
cp scripts/deploy-phase1.py /usr/local/bin/riju-deploy
systemctl daemon-reload