Work on a number of additional languages
This commit is contained in:
parent
5895b5f3e4
commit
f013f7e26c
|
@ -41,6 +41,9 @@ function repl {
|
|||
}
|
||||
|
||||
function main {
|
||||
if get main | grep -q /; then
|
||||
mkdir -p "$(dirname "$(get main)")"
|
||||
fi
|
||||
: > "$(get main)"
|
||||
has prefix && get prefix >> "$(get main)"
|
||||
get template >> "$(get main)"
|
||||
|
|
|
@ -31,6 +31,7 @@ EOF
|
|||
packages="
|
||||
|
||||
apt-file
|
||||
dctrl-tools
|
||||
docker-ce-cli
|
||||
g++
|
||||
git
|
||||
|
|
|
@ -19,15 +19,18 @@ wget https://letsencrypt.org/certs/lets-encrypt-r3.pem -O /usr/local/share/ca-ce
|
|||
|
||||
update-ca-certificates
|
||||
|
||||
curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
|
||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||
|
||||
ubuntu_ver="$(lsb_release -rs)"
|
||||
ubuntu_name="$(lsb_release -cs)"
|
||||
|
||||
node_repo="$(curl -sS https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
|
||||
|
||||
wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb"
|
||||
apt-get install ./packages-microsoft-prod.deb
|
||||
|
||||
curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
|
||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||
|
||||
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
|
||||
deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
|
||||
deb [arch=amd64] https://deb.nodesource.com/${node_repo} ${ubuntu_name} main
|
||||
|
@ -44,10 +47,13 @@ jq
|
|||
less
|
||||
make
|
||||
man
|
||||
moreutils
|
||||
nodejs
|
||||
opam
|
||||
perl
|
||||
python3-pip
|
||||
ripgrep
|
||||
ruby
|
||||
strace
|
||||
sudo
|
||||
tmux
|
||||
|
|
|
@ -25,6 +25,16 @@ wget https://letsencrypt.org/certs/lets-encrypt-r3.pem -O /usr/local/share/ca-ce
|
|||
|
||||
update-ca-certificates
|
||||
|
||||
ubuntu_ver="$(lsb_release -rs)"
|
||||
ubuntu_name="$(lsb_release -cs)"
|
||||
|
||||
cran_repo="$(curl -fsSL https://cran.r-project.org/bin/linux/ubuntu/ | grep '<tr>' | grep "${ubuntu_name}" | grep -Eo 'cran[0-9]+' | head -n1)"
|
||||
node_repo="$(curl -fsSL https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
|
||||
|
||||
# .NET
|
||||
wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb"
|
||||
apt-get install ./packages-microsoft-prod.deb
|
||||
|
||||
# Ceylon
|
||||
curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
|
||||
|
||||
|
@ -49,12 +59,6 @@ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB
|
|||
# Yarn
|
||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||
|
||||
ubuntu_ver="$(lsb_release -rs)"
|
||||
ubuntu_name="$(lsb_release -cs)"
|
||||
|
||||
cran_repo="$(curl -fsSL https://cran.r-project.org/bin/linux/ubuntu/ | grep '<tr>' | grep "${ubuntu_name}" | grep -Eo 'cran[0-9]+' | head -n1)"
|
||||
node_repo="$(curl -fsSL https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
|
||||
|
||||
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
|
||||
# Ceylon
|
||||
deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
|
||||
|
@ -91,11 +95,13 @@ packages="
|
|||
apt-file
|
||||
less
|
||||
clang
|
||||
git
|
||||
jq
|
||||
${libicu}
|
||||
make
|
||||
man
|
||||
nodejs
|
||||
ripgrep
|
||||
strace
|
||||
sudo
|
||||
tmux
|
||||
|
|
|
@ -22,10 +22,11 @@ install:
|
|||
- mongodb-clients.deb
|
||||
- mongodb-server.deb
|
||||
- mongodb-server-core.deb
|
||||
stripDepends:
|
||||
- mongodb-clients
|
||||
- mongodb-server
|
||||
- mongodb-server-core
|
||||
depends:
|
||||
strip:
|
||||
- mongodb-clients
|
||||
- mongodb-server
|
||||
- mongodb-server-core
|
||||
|
||||
repl: |
|
||||
while ps -u "$(id -un)" -o comm | grep -q mongod; do sleep 0.01; done && rm -rf data && mkdir data && (mongod --dbpath=data --unixSocketPrefix="$PWD" --bind_ip=, &) && until mongo --host "$PWD/mongodb-27017.sock" --eval ' ' &>/dev/null; do sleep 0.01; done && mongo --host "$PWD/mongodb-27017.sock"
|
||||
|
|
|
@ -6,6 +6,9 @@ name: "MySQL"
|
|||
install:
|
||||
apt:
|
||||
- mysql-server
|
||||
- mysql-client
|
||||
riju:
|
||||
- sqls
|
||||
|
||||
repl: |
|
||||
rm -rf data && mysqld -h "$PWD/data" --initialize-insecure && (mysqld -h "$PWD/data" --socket="$PWD/socket" --pid-file="$PWD/pid-file" --mysqlx=OFF --skip-networking &) && until [[ -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" -u root
|
||||
|
|
|
@ -7,6 +7,18 @@ install:
|
|||
prepare:
|
||||
apt:
|
||||
- clang
|
||||
- libgc-dev
|
||||
apt:
|
||||
- libgc-dev
|
||||
manual: |
|
||||
path="$(curl -sSL https://miasap.se/obnc/ | grep -F obnc_ | grep -Eo 'obnc_[^"]+' | grep -v win | head -n1)"
|
||||
wget "https://miasap.se/obnc/downloads/${path}" -O obnc.tar.gz
|
||||
mkdir obnc
|
||||
tar -xf obnc.tar.gz -C obnc --strip-components=1
|
||||
pushd obnc
|
||||
./build
|
||||
./install --destdir="${pkg}"
|
||||
popd
|
||||
|
||||
main: "Main.obn"
|
||||
template: |
|
||||
|
|
|
@ -10,6 +10,8 @@ install:
|
|||
- gcc
|
||||
- gnustep-devel
|
||||
- gobjc++
|
||||
- clang-format
|
||||
- clangd
|
||||
|
||||
main: "main.mm"
|
||||
template: |
|
||||
|
|
|
@ -9,6 +9,8 @@ install:
|
|||
apt:
|
||||
- gcc
|
||||
- gnustep-devel
|
||||
- clang-format
|
||||
- clangd
|
||||
|
||||
main: "main.m"
|
||||
template: |
|
||||
|
|
|
@ -3,10 +3,13 @@ name: "OCaml"
|
|||
|
||||
install:
|
||||
apt:
|
||||
- ocaml
|
||||
- ocaml-nox
|
||||
opam:
|
||||
- ocamlformat
|
||||
- ocaml-lsp-server: "https://github.com/ocaml/ocaml-lsp.git"
|
||||
- name: ocaml-lsp-server
|
||||
source: "https://github.com/ocaml/ocaml-lsp.git"
|
||||
binaries:
|
||||
- ocamllsp
|
||||
|
||||
repl: |
|
||||
ocaml
|
||||
|
|
|
@ -4,6 +4,13 @@ aliases:
|
|||
- "rofl"
|
||||
name: "Omgrofl"
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/opt/omgrofl"
|
||||
|
||||
ver="$(latest_release OlegSmelov/omgrofl-interpreter)"
|
||||
wget "https://github.com/OlegSmelov/omgrofl-interpreter/releases/download/${ver}/Omgrofl.jar" -O "${pkg}/opt/omgrofl/omgrofl.jar"
|
||||
|
||||
main: "main.omgrofl"
|
||||
template: |
|
||||
lol iz 72
|
||||
|
@ -33,4 +40,4 @@ template: |
|
|||
rofl lol
|
||||
|
||||
run: |
|
||||
java -jar /opt/omgrofl/Omgrofl.jar main.omgrofl
|
||||
java -jar /opt/omgrofl/omgrofl.jar main.omgrofl
|
||||
|
|
|
@ -5,6 +5,16 @@ install:
|
|||
prepare:
|
||||
apt:
|
||||
- autoconf
|
||||
- libtool
|
||||
- libgmp-dev
|
||||
manual: |
|
||||
git clone https://git.code.sf.net/p/esco/code esco
|
||||
pushd esco
|
||||
autoreconf -fi
|
||||
./configure --prefix="${pkg}/usr/local"
|
||||
make
|
||||
make install
|
||||
popd
|
||||
|
||||
main: "main.ook"
|
||||
template: |
|
||||
|
|
|
@ -4,6 +4,13 @@ aliases:
|
|||
- "mozart2"
|
||||
name: "Oz"
|
||||
|
||||
install:
|
||||
manual: |
|
||||
ver="$(latest_release mozart/mozart2 | sed 's/^v//')"
|
||||
wget "https://github.com/mozart/mozart2/releases/download/v${ver}/mozart2-${ver}-x86_64-linux.deb" -O mozart.deb
|
||||
deb:
|
||||
- mozart.deb
|
||||
|
||||
main: "main.oz"
|
||||
template: |
|
||||
functor
|
||||
|
|
|
@ -4,6 +4,22 @@ aliases:
|
|||
- "pawnrun"
|
||||
name: "PAWN"
|
||||
|
||||
install:
|
||||
prepare:
|
||||
apt:
|
||||
- cmake
|
||||
manual: |
|
||||
install -d "${pkg}/opt/pawn"
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
git clone https://github.com/compuphase/pawn.git
|
||||
pushd pawn
|
||||
cmake .
|
||||
make
|
||||
cp pawncc pawnrun "${pkg}/usr/local/bin/"
|
||||
cp -R include "${pkg}/opt/pawn/"
|
||||
popd
|
||||
|
||||
main: "main.pawn"
|
||||
template: |
|
||||
#include <core>
|
||||
|
|
|
@ -13,6 +13,8 @@ aliases:
|
|||
name: "Pikachu"
|
||||
|
||||
install:
|
||||
apt:
|
||||
- python3-setuptools
|
||||
pip:
|
||||
- pikalang
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@ name: "Pike"
|
|||
|
||||
install:
|
||||
apt:
|
||||
- $(grep-aptavail -eF Package "^pike[0-9.]+$" -s Package -n | sort -Vr | head -n1)
|
||||
- $(grep-aptavail -eF Package "^pike[0-9.]+$" -s Package -n | sort -Vr | head -n1)-doc
|
||||
- $(grep-aptavail -wF Package "pike[0-9.]+" -s Package -n | sort -Vr | head -n1)
|
||||
- $(grep-aptavail -wF Package "pike[0-9.]+" -s Package -n | sort -Vr | head -n1)-doc
|
||||
|
||||
repl: |
|
||||
pike
|
||||
|
|
|
@ -11,6 +11,8 @@ install:
|
|||
apt:
|
||||
- postgresql
|
||||
- postgresql-client
|
||||
riju:
|
||||
- sqls
|
||||
|
||||
repl: |
|
||||
rm -rf data && /usr/lib/postgresql/*/bin/initdb -D data && (echo "listen_addresses = ''" && echo "unix_socket_directories = '.'") >> data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && psql -h "$PWD/data" postgres
|
||||
|
|
|
@ -5,6 +5,21 @@ aliases:
|
|||
name: "PowerShell"
|
||||
monacoLang: powershell
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/opt/powershell"
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
ver="$(latest_release PowerShell/PowerShell | sed 's/^v//')"
|
||||
wget "https://github.com/PowerShell/PowerShell/releases/download/v${ver}/powershell-${ver}-linux-x64.tar.gz" -O powershell.tar.gz
|
||||
tar -xf powershell.tar.gz -C "${pkg}/opt/powershell"
|
||||
ln -s /opt/powershell/pwsh "${pkg}/usr/local/bin/"
|
||||
|
||||
ver="$(latest_release PowerShell/PowerShellEditorServices)"
|
||||
wget "https://github.com/PowerShell/PowerShellEditorServices/releases/download/${ver}/PowerShellEditorServices.zip"
|
||||
unzip PowerShellEditorServices.zip
|
||||
cp -RT PowerShellEditorServices "${pkg}/opt/powershell-editor-services"
|
||||
|
||||
repl: |
|
||||
SHELL=/usr/bin/pwsh pwsh
|
||||
input: |
|
||||
|
|
|
@ -3,6 +3,14 @@ aliases:
|
|||
- "psc"
|
||||
name: "PSeInt"
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
wget "$(curl -sSL "http://pseint.sourceforge.net/index.php?page=descargas.php&os=lnx" | grep -Eo 'http://[^"]+l64[^"]+\.tgz\?download')" -O pseint.tgz
|
||||
tar -xf pseint.tgz
|
||||
cp pseint/bin/pseint "${pkg}/usr/local/bin/"
|
||||
|
||||
main: "main.psc"
|
||||
template: |
|
||||
Proceso Main
|
||||
|
|
|
@ -5,14 +5,41 @@ aliases:
|
|||
name: "PureScript"
|
||||
|
||||
install:
|
||||
prepare:
|
||||
apt:
|
||||
- libtinfo5
|
||||
npm:
|
||||
- purescript
|
||||
- spago
|
||||
apt:
|
||||
- libtinfo5
|
||||
npm:
|
||||
- purescript
|
||||
- spago
|
||||
manual: |
|
||||
install -d "${pkg}/opt/purescript"
|
||||
|
||||
mkdir skel
|
||||
pushd skel
|
||||
spago init -C
|
||||
rm -rf .gitignore test
|
||||
sed -i 's#, "test/\*\*/\*\.purs"##' spago.dhall
|
||||
cat <<"EOF" > src/Main.spago
|
||||
import Prelude
|
||||
|
||||
import Effect (Effect)
|
||||
|
||||
main :: Effect Unit
|
||||
main = pure unit
|
||||
EOF
|
||||
spago build
|
||||
spago repl < /dev/null
|
||||
rm -rf src
|
||||
popd
|
||||
cp -R skel "${pkg}/opt/purescript/"
|
||||
|
||||
setup: |
|
||||
shopt -s dotglob; cp -R /opt/purescript/project-template/* "$PWD/"
|
||||
shopt -s dotglob; cp -R /opt/purescript/skel/* "$PWD/"
|
||||
|
||||
repl: |
|
||||
spago repl
|
||||
|
|
|
@ -5,11 +5,23 @@ aliases:
|
|||
name: "Q#"
|
||||
|
||||
install:
|
||||
prepare:
|
||||
apt:
|
||||
- $(grep-aptavail -wF Package "dotnet-sdk-[0-9.]+" -s Package -n | sort -Vr | head -n1)
|
||||
apt:
|
||||
- $(grep-aptavail -eF Package "^dotnet-sdk-[0-9.]+$" -s Package -n | sort -Vr | head -n1)
|
||||
- $(grep-aptavail -wF Package "dotnet-sdk-[0-9.]+" -s Package -n | sort -Vr | head -n1)
|
||||
manual: |
|
||||
install -d "${pkg}/opt/qsharp"
|
||||
|
||||
dotnet new -i Microsoft.Quantum.ProjectTemplates
|
||||
dotnet new console -lang Q# -o main
|
||||
cp -R main "${pkg}/opt/qsharp/skel"
|
||||
rm "${pkg}/opt/qsharp/skel/Program.qs"
|
||||
cp -R "$HOME/.dotnet" "${pkg}/opt/qsharp/dotnet"
|
||||
chmod -R a=u,go-w "${pkg}/opt/qsharp/dotnet"
|
||||
|
||||
setup: |
|
||||
cp -R /opt/qsharp/dotnet ./.dotnet && cp -R /opt/qsharp/project-template/* ./
|
||||
cp -R /opt/qsharp/dotnet ./.dotnet && cp -R /opt/qsharp/skel/* ./
|
||||
|
||||
main: "Main.qs"
|
||||
template: |
|
||||
|
|
|
@ -6,14 +6,14 @@ name: "Ratfor"
|
|||
install:
|
||||
apt:
|
||||
- ratfor
|
||||
- flang
|
||||
- gfortran
|
||||
|
||||
main: "main.r"
|
||||
template: |
|
||||
print *, 'Hello, world!'
|
||||
end
|
||||
PRINT *, 'Hello, world!'
|
||||
END
|
||||
|
||||
compile: |
|
||||
ratfor main.r -o main.f && flang main.f -o main
|
||||
ratfor main.r -o main.f && gfortran main.f -o main
|
||||
run: |
|
||||
./main
|
||||
|
|
|
@ -8,10 +8,31 @@ aliases:
|
|||
name: "ReasonML"
|
||||
|
||||
install:
|
||||
prepare:
|
||||
apt:
|
||||
- yarn
|
||||
npm:
|
||||
- bs-platform
|
||||
npm:
|
||||
- bs-platform
|
||||
opam:
|
||||
- reason
|
||||
- name: reason
|
||||
binaries:
|
||||
- refmt
|
||||
manual: |
|
||||
install -d "${pkg}/opt/reasonml/skel"
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
ver="$(latest_release jaredly/reason-language-server)"
|
||||
wget "https://github.com/jaredly/reason-language-server/releases/download/${ver}/rls-linux.zip"
|
||||
unzip rls-linux.zip
|
||||
cp rls-linux/reason-language-server "${pkg}/usr/local/bin/"
|
||||
|
||||
pushd "${pkg}/opt/reasonml/skel"
|
||||
bsb -init .
|
||||
cat bsconfig.json | jq '.name = "riju-project"' | sponge bsconfig.json
|
||||
yarn install
|
||||
popd
|
||||
|
||||
main: "main.re"
|
||||
template: |
|
||||
|
@ -30,7 +51,7 @@ format:
|
|||
|
||||
lsp:
|
||||
setup: |
|
||||
cp -a /opt/reasonml/project-template/* ./
|
||||
cp -a /opt/reasonml/skel/* ./
|
||||
start: |
|
||||
reason-language-server
|
||||
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
id: "rebol"
|
||||
name: "REBOL"
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
file="$(curl -sSL http://www.rebol.com/downloads.html | sed '0,/x86-64/d' | grep -Eo 'downloads/[^"]+' | head -n1)"
|
||||
wget "http://www.rebol.com/${file}" -O rebol.tar.gz
|
||||
tar -xf rebol.tar.gz
|
||||
cp rebol-core/rebol "${pkg}/usr/local/bin/"
|
||||
|
||||
repl: |
|
||||
rebol
|
||||
|
||||
|
|
|
@ -4,12 +4,23 @@ name: "Red"
|
|||
install:
|
||||
apt:
|
||||
- libcurl5:i386
|
||||
manual: |
|
||||
install -d "${pkg}/opt/red/skel"
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
path="$(curl -sSL https://static.red-lang.org/download.html | grep -Eo '/dl/linux/[^"]+' | head -n1)"
|
||||
wget "https://static.red-lang.org/${path}" -O red
|
||||
chmod +x red
|
||||
cp red "${pkg}/usr/local/bin/"
|
||||
|
||||
./red <<< quit
|
||||
cp -R "$HOME/.red" "${pkg}/opt/red/skel/"
|
||||
|
||||
setup: |
|
||||
cp -R /opt/red/template .red
|
||||
shopt -s dotglob; cp -R /opt/red/skel/* ./
|
||||
|
||||
repl: |
|
||||
/usr/local/bin/red
|
||||
red
|
||||
input: |
|
||||
DELAY: 1
|
||||
123 * 234
|
||||
|
@ -21,4 +32,4 @@ template: |
|
|||
print "Hello, world!"
|
||||
|
||||
run: |
|
||||
/usr/local/bin/red main.red; /usr/local/bin/red
|
||||
red main.red; red
|
||||
|
|
|
@ -6,6 +6,9 @@ name: "Ruby"
|
|||
monacoLang: ruby
|
||||
|
||||
install:
|
||||
prepare:
|
||||
apt:
|
||||
- ruby-dev
|
||||
apt:
|
||||
- ruby
|
||||
gem:
|
||||
|
|
|
@ -5,6 +5,23 @@ aliases:
|
|||
name: "Rust"
|
||||
monacoLang: rust
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
export CARGO_HOME="${pkg}/opt/rustup"
|
||||
export RUSTUP_HOME="${pkg}/opt/rustup"
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
|
||||
"${pkg}/opt/rustup/bin/rustup" component add rls rust-analysis rust-src
|
||||
|
||||
ls "${pkg}/opt/rustup/bin" | while read name; do
|
||||
cat <<EOF > "${pkg}/usr/local/bin/${name}"
|
||||
#!/usr/bin/env bash
|
||||
exec env RUSTUP_HOME=/opt/rustup "/opt/rustup/bin/${name}" "\$@"
|
||||
EOF
|
||||
chmod +x "${pkg}/usr/local/bin/${name}"
|
||||
done
|
||||
|
||||
main: "main.rs"
|
||||
template: |
|
||||
fn main() {
|
||||
|
|
|
@ -4,8 +4,29 @@ aliases:
|
|||
name: "SageMath"
|
||||
|
||||
install:
|
||||
apt:
|
||||
- sagemath
|
||||
manual: |
|
||||
sudo tee -a /etc/apt/sources.list.d/focal.list >/dev/null <<EOF
|
||||
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal main universe
|
||||
EOF
|
||||
|
||||
sudo apt-get update
|
||||
|
||||
for name in libflint-2.5.2 libgsl23 sagemath sagemath-common; do
|
||||
apt-get download "${name}"
|
||||
mv "${name}"_*.deb "${name}.deb"
|
||||
done
|
||||
deb:
|
||||
- sagemath.deb
|
||||
- sagemath-common.deb
|
||||
- libflint-2.5.2.deb
|
||||
- libgsl23.deb
|
||||
depends:
|
||||
strip:
|
||||
- sagemath-common
|
||||
- libflint-2.5.2
|
||||
- libgsl23
|
||||
unpin:
|
||||
- libgslcblas0
|
||||
|
||||
repl: |
|
||||
sage
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
id: "setl"
|
||||
name: "SETL"
|
||||
|
||||
install:
|
||||
manual: |
|
||||
install -d "${pkg}/usr/local/bin"
|
||||
|
||||
wget https://setl.org/setl/bin/Linux-x86-64bit/setlbin.tgz
|
||||
tar -xf setlbin.tgz -C "${pkg}/usr/local/bin"
|
||||
|
||||
main: "main.setl"
|
||||
template: |
|
||||
print("Hello, world!");
|
||||
|
|
|
@ -9,7 +9,7 @@ install:
|
|||
prepare:
|
||||
apt:
|
||||
- luarocks
|
||||
- $(grep-aptavail -eF Package "liblua[0-9.]+-dev" -a -XF Version "$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)" -s Package -n | head -n1)
|
||||
- $(grep-aptavail -wF Package "liblua[0-9.]+-dev" -a -XF Version "$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)" -s Package -n | head -n1)
|
||||
apt:
|
||||
- texlive-binaries
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ function makeLangScript(langConfig, isShared) {
|
|||
const { id, name, install } = langConfig;
|
||||
let parts = [];
|
||||
let depends = [];
|
||||
const dependsCfg = (install && install.depends) || {};
|
||||
if (
|
||||
install &&
|
||||
((install.prepare &&
|
||||
|
@ -38,23 +39,30 @@ sudo apt-get update`);
|
|||
riju,
|
||||
npm,
|
||||
pip,
|
||||
gem,
|
||||
cpan,
|
||||
opam,
|
||||
files,
|
||||
scripts,
|
||||
manual,
|
||||
deb,
|
||||
} = install;
|
||||
if (prepare) {
|
||||
const { apt, manual } = prepare;
|
||||
const { apt, npm, manual } = prepare;
|
||||
if (apt && apt.length > 0) {
|
||||
parts.push(`\
|
||||
sudo apt-get install -y ${apt.join(" ")}`);
|
||||
}
|
||||
if (npm && npm.length > 0) {
|
||||
parts.push(`\
|
||||
sudo npm install -g ${npm.join(" ")}`);
|
||||
}
|
||||
if (manual) {
|
||||
parts.push(manual);
|
||||
}
|
||||
}
|
||||
if (npm) {
|
||||
if (npm && npm.length > 0) {
|
||||
depends.push("nodejs");
|
||||
for (let fullname of npm) {
|
||||
let arg;
|
||||
if (typeof fullname === "string") {
|
||||
|
@ -78,7 +86,8 @@ if [[ -d "$\{pkg}/opt/${basename}/bin" ]]; then
|
|||
fi`);
|
||||
}
|
||||
}
|
||||
if (pip) {
|
||||
if (pip && pip.length > 0) {
|
||||
depends.push("python3");
|
||||
for (const basename of pip) {
|
||||
parts.push(`\
|
||||
install -d "\${pkg}/usr/local/bin"
|
||||
|
@ -105,15 +114,41 @@ if [[ -d "\${pkg}/opt/${basename}/man" ]]; then
|
|||
fi`);
|
||||
}
|
||||
}
|
||||
if (cpan) {
|
||||
if (gem && gem.length > 0) {
|
||||
depends.push("ruby");
|
||||
for (const name of gem) {
|
||||
parts.push(`\
|
||||
install -d "\${pkg}/usr/local/bin"
|
||||
gem install "${name}" -i "/opt/${name}" -n "/opt/${name}/bin" --build-root "\${pkg}"
|
||||
|
||||
if [[ -d "\${pkg}/opt/${name}/bin" ]]; then
|
||||
(
|
||||
set +e
|
||||
ls "\${pkg}/opt/${name}/gems/${name}"-*/bin
|
||||
ls "\${pkg}/opt/${name}/gems/${name}"-*/exe
|
||||
true
|
||||
) | while read name; do
|
||||
if [[ -x "\${pkg}/opt/${name}/bin/\${name}" ]]; then
|
||||
cat <<EOF > "\${pkg}/usr/local/bin/\${name}"
|
||||
#!/usr/bin/env bash
|
||||
exec env GEM_PATH="/opt/${name}" "/opt/${name}/bin/\${name}" "\\\$@"
|
||||
EOF
|
||||
chmod +x "\${pkg}/usr/local/bin/\${name}"
|
||||
fi
|
||||
done
|
||||
fi`);
|
||||
}
|
||||
}
|
||||
if (cpan && cpan.length > 0) {
|
||||
depends.push("perl");
|
||||
for (const fullname of cpan) {
|
||||
const basename = fullname.replace(/^.+:/, "").toLowerCase();
|
||||
const basename = fullname.replace(/:+/g, "-").toLowerCase();
|
||||
parts.push(`\
|
||||
install -d "\${pkg}/usr/local/bin"
|
||||
cpanm -l "\${pkg}/opt/${basename}" -n "${fullname}"
|
||||
|
||||
if [[ -d "\${pkg}/opt/${basename}/bin" ]]; then
|
||||
ls "\${pkg}/opt/${basename}/bin" | while read name; do
|
||||
ls "\${pkg}/opt/${basename}/bin" | (grep -v config_data || true) | while read name; do
|
||||
version="$(ls "\${pkg}/opt/${basename}/lib" | head -n1)"
|
||||
cat <<EOF > "\${pkg}/usr/local/bin/\${name}"
|
||||
#!/usr/bin/env bash
|
||||
|
@ -121,18 +156,37 @@ exec env PERL5LIB="/opt/${basename}/lib/\${version}" "/opt/${basename}/bin/\${na
|
|||
EOF
|
||||
chmod +x "\${pkg}/usr/local/bin/\${name}"
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -d "\${pkg}/opt/${basename}/man" ]]; then
|
||||
ls "\${pkg}/opt/${basename}/man" | while read dir; do
|
||||
install -d "\${pkg}/usr/local/man/\${dir}"
|
||||
ls "\${pkg}/opt/${basename}/man/\${dir}" | while read name; do
|
||||
ln -s "/opt/${basename}/man/\${dir}/\${name}" "\${pkg}/usr/local/man/\${dir}/\${name}"
|
||||
done
|
||||
done
|
||||
fi`);
|
||||
}
|
||||
}
|
||||
if (opam && opam.length > 0) {
|
||||
depends.push("ocaml-nox");
|
||||
for (let opts of opam) {
|
||||
if (typeof opts === "string") {
|
||||
opts = { name: opts, binaries: [opts] };
|
||||
}
|
||||
const { name, source, binaries } = opts;
|
||||
let installCmd;
|
||||
if (source) {
|
||||
installCmd = `opam pin add "${name}" "${source}" -y --root "\${pkg}/opt/${name}"`;
|
||||
} else {
|
||||
installCmd = `opam install "${name}" -y --root "\${pkg}/opt/${name}"`;
|
||||
}
|
||||
parts.push(`\
|
||||
install -d "\${pkg}/usr/local/bin"
|
||||
|
||||
opam init -n --disable-sandboxing --root "\${pkg}/opt/${name}"
|
||||
${installCmd}`);
|
||||
parts.push(
|
||||
binaries
|
||||
.map(
|
||||
(binary) =>
|
||||
`ln -s "/opt/${name}/default/bin/${binary}" "\${pkg}/usr/local/bin/"`
|
||||
)
|
||||
.join("\n")
|
||||
);
|
||||
}
|
||||
}
|
||||
if (files) {
|
||||
for (const [file, contents] of Object.entries(files)) {
|
||||
const path = "${pkg}" + file;
|
||||
|
@ -163,6 +217,9 @@ chmod +x "${path}"`);
|
|||
if (apt) {
|
||||
depends = depends.concat(apt);
|
||||
}
|
||||
if (dependsCfg.unpin) {
|
||||
depends = depends.concat(dependsCfg.unpin);
|
||||
}
|
||||
if (riju) {
|
||||
depends = depends.concat(riju.map((name) => `riju-shared-${name}`));
|
||||
}
|
||||
|
@ -174,8 +231,9 @@ chmod +x "${path}"`);
|
|||
}
|
||||
parts.push(`depends=(${depends.map((dep) => `"${dep}"`).join(" ")})`);
|
||||
let stripDependsFilter = "";
|
||||
if (install && install.stripDepends && install.stripDepends.length > 0) {
|
||||
stripDependsFilter = ` | sed -E 's/(^| )(${install.stripDepends.join(
|
||||
const stripDepends = (dependsCfg.strip || []).concat(dependsCfg.unpin || []);
|
||||
if (stripDepends.length > 0) {
|
||||
stripDependsFilter = ` | sed -E 's/(^| )(${stripDepends.join(
|
||||
"|"
|
||||
)}) *(\\([^)]*\\))? *(,|$)/\\1/g' | sed -E 's/^ *//g'`;
|
||||
}
|
||||
|
@ -187,7 +245,7 @@ Maintainer: Radon Rosborough <radon.neon@gmail.com>
|
|||
Description: The ${name} ${
|
||||
isShared ? "shared dependency" : "language"
|
||||
} packaged for Riju
|
||||
Depends: \$(IFS=,; echo "\${depends[*]}" | sed -E 's/,([^ ])/, \\1/g'${stripDependsFilter} | sed -E 's/ +/ /g')
|
||||
Depends: \$(IFS=,; echo "\${depends[*]}" | sed -E 's/,([^ ])/, \\1/g'${stripDependsFilter} | sed -E 's/ +/ /g' | sed -E 's/ *, *$//')
|
||||
Riju-Script-Hash: \$(sha1sum "\$0" | awk '{ print \$1 }')`;
|
||||
parts.push(`\
|
||||
install -d "\${pkg}/DEBIAN"
|
||||
|
|
Loading…
Reference in New Issue