Compare commits
31 Commits
8cc1f6c2b5
...
4d344db148
Author | SHA1 | Date |
---|---|---|
Brian Seymour | 4d344db148 | |
Brian Seymour | 716cf04e62 | |
Brian Seymour | d19d3faeba | |
Brian Seymour | 2bb89b7110 | |
Brian Seymour | aa4f4bfafb | |
ThreshMain | e1ef091570 | |
TitouanT | 0b0ea6c932 | |
Sirius902 | e14effbf35 | |
Sirius902 | cd38eaa3f4 | |
Sirius902 | d10c58b993 | |
Sirius902 | ed6c483bab | |
Sirius902 | cd2d6cb405 | |
Sirius902 | 48d3e39f9a | |
Thomas Hobson | 8d92661cfd | |
Thomas Hobson | 062c4c89c8 | |
Thomas Hobson | 3bcb96832d | |
Thomas Hobson | aa3a1a239f | |
Thomas Hobson | dde705da56 | |
Thomas Hobson | 59dd4e9c01 | |
Thomas Hobson | bc8b8787ef | |
Thomas Hobson | 6d20a108e9 | |
Thomas Hobson | c33d57fa1a | |
Thomas Hobson | e03f7c1770 | |
Thomas Hobson | 208a3dcee8 | |
Thomas Hobson | 4e60ab080b | |
Thomas Hobson | 15857f1c0a | |
Thomas Hobson | ce5934252b | |
Thomas Hobson | c6fc9fe493 | |
Thomas Hobson | a331b62315 | |
Thomas Hobson | 7b3565a067 | |
Thomas Hobson | 219364af97 |
|
@ -2,3 +2,5 @@ api/api
|
||||||
api/package-lock.json
|
api/package-lock.json
|
||||||
lxc/i
|
lxc/i
|
||||||
lxc/lockfile
|
lxc/lockfile
|
||||||
|
container/build.yaml
|
||||||
|
container/*.tar.xz
|
||||||
|
|
|
@ -222,6 +222,13 @@
|
||||||
"rust"
|
"rust"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "scala",
|
||||||
|
"aliases": [
|
||||||
|
"scala",
|
||||||
|
"sc"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "swift",
|
"name": "swift",
|
||||||
"aliases": [
|
"aliases": [
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
python3 -m pip install pyyaml
|
||||||
|
python3 configure.py
|
||||||
|
distrobuilder build-lxc build.yaml
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
with open('piston.yaml') as dbc:
|
||||||
|
with open('install_script.sh') as install_script_file:
|
||||||
|
with open('build.yaml' , 'w+') as distrobuilder_config_file_new:
|
||||||
|
distrobuilder_config = yaml.safe_load(dbc)
|
||||||
|
distrobuilder_config['actions'].append({
|
||||||
|
'trigger': 'post-packages',
|
||||||
|
'action': install_script_file.read(),
|
||||||
|
|
||||||
|
})
|
||||||
|
yaml.dump(distrobuilder_config, distrobuilder_config_file_new)
|
|
@ -0,0 +1,307 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#echo "Don't run this on your system!" && exit 0
|
||||||
|
|
||||||
|
# install all necessary piston dependencies
|
||||||
|
echo 'source /opt/.profile' >> /opt/.bashrc
|
||||||
|
echo 'export HOME=/opt' >> /opt/.profile
|
||||||
|
echo 'export TERM=linux' >> /opt/.profile
|
||||||
|
echo 'export PATH=$PATH:/opt/.local/bin' >> /opt/.profile
|
||||||
|
export HOME=/opt
|
||||||
|
export TERM=linux
|
||||||
|
sed -i 's/\/root/\/opt/' /etc/passwd
|
||||||
|
sed -i \
|
||||||
|
's/http:\/\/archive.ubuntu.com\/ubuntu/http:\/\/mirror.math.princeton.edu\/pub\/ubuntu/' \
|
||||||
|
/etc/apt/sources.list
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y \
|
||||||
|
nano wget build-essential pkg-config libxml2-dev \
|
||||||
|
libsqlite3-dev mono-complete curl cmake libpython2.7-dev \
|
||||||
|
ruby libtinfo-dev unzip git openssl libssl-dev sbcl libevent-dev
|
||||||
|
|
||||||
|
# install python2
|
||||||
|
# final binary: /opt/python2/Python-2.7.17/python
|
||||||
|
# get version: /opt/python2/Python-2.7.17/python -V
|
||||||
|
cd /opt && mkdir python2 && cd python2
|
||||||
|
wget https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz
|
||||||
|
unxz Python-2.7.17.tar.xz
|
||||||
|
tar -xf Python-2.7.17.tar
|
||||||
|
cd Python-2.7.17
|
||||||
|
./configure
|
||||||
|
# open Modules/Setup and uncomment zlib line
|
||||||
|
make
|
||||||
|
echo 'export PATH=$PATH:/opt/python2/Python-2.7.17' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install python3
|
||||||
|
# final binary: /opt/python3/Python-3.9.1/python
|
||||||
|
# get version: /opt/python3/Python-3.9.1/python -V
|
||||||
|
cd /opt && mkdir python3 && cd python3
|
||||||
|
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
|
||||||
|
unxz Python-3.9.1.tar.xz
|
||||||
|
tar -xf Python-3.9.1.tar
|
||||||
|
cd Python-3.9.1
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
ln -s python python3.9
|
||||||
|
echo 'export PATH=$PATH:/opt/python3/Python-3.9.1' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install paradoc
|
||||||
|
# this is not a binary, it is a python module
|
||||||
|
# therefore it cannot be run directly as it requires python3 to be installed
|
||||||
|
cd /opt && mkdir paradoc && cd paradoc
|
||||||
|
git clone https://github.com/betaveros/paradoc.git
|
||||||
|
|
||||||
|
# install node.js
|
||||||
|
# final binary: /opt/nodejs/node-v12.16.1-linux-x64/bin/node
|
||||||
|
# get version: /opt/nodejs/node-v12.16.1-linux-x64/bin/node -v
|
||||||
|
cd /opt && mkdir nodejs && cd nodejs
|
||||||
|
wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
|
||||||
|
unxz node-v12.16.1-linux-x64.tar.xz
|
||||||
|
tar -xf node-v12.16.1-linux-x64.tar
|
||||||
|
echo 'export PATH=$PATH:/opt/nodejs/node-v12.16.1-linux-x64/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install typescript
|
||||||
|
# final binary: /opt/nodejs/node-v12.16.1-linux-x64/bin/tsc
|
||||||
|
# get version: /opt/nodejs/node-v12.16.1-linux-x64/bin/tsc -v
|
||||||
|
/opt/nodejs/node-v12.16.1-linux-x64/bin/npm i -g typescript
|
||||||
|
|
||||||
|
# install golang
|
||||||
|
# final binary: /opt/go/go/bin/go
|
||||||
|
# get version: /opt/go/go/bin/go version
|
||||||
|
cd /opt && mkdir go && cd go
|
||||||
|
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz
|
||||||
|
tar -xzf go1.14.1.linux-amd64.tar.gz
|
||||||
|
echo 'export PATH=$PATH:/opt/go/go/bin' >> /opt/.profile
|
||||||
|
echo 'export GOROOT=/opt/go/go' >> /opt/.profile
|
||||||
|
echo 'export GOCACHE=/tmp' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install php
|
||||||
|
# final binary: /usr/local/bin/php
|
||||||
|
# get version: /usr/local/bin/php -v
|
||||||
|
cd /opt && mkdir php && cd php
|
||||||
|
wget https://www.php.net/distributions/php-8.0.0.tar.gz
|
||||||
|
tar -xzf php-8.0.0.tar.gz
|
||||||
|
cd php-8.0.0
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
# install rust
|
||||||
|
# final binary: /usr/local/bin/rustc
|
||||||
|
# get version: /usr/local/bin/rustc --version
|
||||||
|
cd /opt && mkdir rust && cd rust
|
||||||
|
wget https://static.rust-lang.org/dist/rust-1.49.0-x86_64-unknown-linux-gnu.tar.gz
|
||||||
|
tar -xzf rust-1.49.0-x86_64-unknown-linux-gnu.tar.gz
|
||||||
|
cd rust-1.49.0-x86_64-unknown-linux-gnu
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# install scala
|
||||||
|
# final binary: /opt/scala/scala3-3.0.0-M3/bin/scala
|
||||||
|
# get version: /opt/scala/scala3-3.0.0-M3/bin/scala -version
|
||||||
|
cd /opt && mkdir scala && cd scala
|
||||||
|
wget https://github.com/lampepfl/dotty/releases/download/3.0.0-M3/scala3-3.0.0-M3.tar.gz
|
||||||
|
tar -xzf scala3-3.0.0-M3.tar.gz
|
||||||
|
echo 'export PATH=$PATH:/opt/scala/scala3-3.0.0-M3/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install swift
|
||||||
|
# final binary: /opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin/swift
|
||||||
|
# get version: /opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin/swift --version
|
||||||
|
cd /opt && mkdir swift && cd swift
|
||||||
|
wget https://swift.org/builds/swift-5.1.5-release/ubuntu1804/swift-5.1.5-RELEASE/swift-5.1.5-RELEASE-ubuntu18.04.tar.gz
|
||||||
|
tar -xzf swift-5.1.5-RELEASE-ubuntu18.04.tar.gz
|
||||||
|
echo 'export PATH=$PATH:/opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install nasm
|
||||||
|
# final binary: /opt/nasm/nasm-2.14.02/nasm
|
||||||
|
# get version: /opt/nasm/nasm-2.14.02/nasm -v
|
||||||
|
cd /opt && mkdir nasm && cd nasm
|
||||||
|
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
|
||||||
|
tar -xzf nasm-2.14.02.tar.gz
|
||||||
|
cd nasm-2.14.02
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
echo 'export PATH=$PATH:/opt/nasm/nasm-2.14.02' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install java
|
||||||
|
# final binary: /opt/java/jdk-14/bin/java
|
||||||
|
# get version: /opt/java/jdk-14/bin/java -version
|
||||||
|
cd /opt && mkdir java && cd java
|
||||||
|
wget https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_linux-x64_bin.tar.gz
|
||||||
|
tar -xzf openjdk-14_linux-x64_bin.tar.gz
|
||||||
|
echo 'export PATH=$PATH:/opt/java/jdk-14/bin' >> /opt/.profile
|
||||||
|
# Scala will complain if JAVA_HOME isn't set
|
||||||
|
echo 'export JAVA_HOME=/opt/java/jdk-14' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install jelly
|
||||||
|
cd /opt && mkdir jelly && cd jelly
|
||||||
|
wget https://github.com/DennisMitchell/jellylanguage/archive/master.zip
|
||||||
|
unzip master.zip
|
||||||
|
cd jellylanguage-master
|
||||||
|
python3.8 -m pip install .
|
||||||
|
sed -i 's/\/usr\/local\/bin\/python3.8/\/opt\/python3\/Python-3.8.2\/python3.8/' /usr/local/bin/jelly
|
||||||
|
|
||||||
|
# install julia
|
||||||
|
# final binary: /opt/julia/julia-1.5.0/bin/julia
|
||||||
|
# get version: /opt/julia/julia-1.5.0/bin/julia --version
|
||||||
|
cd /opt && mkdir julia && cd julia
|
||||||
|
wget https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.0-linux-x86_64.tar.gz
|
||||||
|
tar -xzf julia-1.5.0-linux-x86_64.tar.gz
|
||||||
|
echo 'export PATH=$PATH:/opt/julia/julia-1.5.0/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install kotlin
|
||||||
|
# final binary: /opt/kotlinc/bin/kotlinc
|
||||||
|
# get version: /opt/kotlinc/bin/kotlinc -version
|
||||||
|
cd /opt
|
||||||
|
wget https://github.com/JetBrains/kotlin/releases/download/v1.4.10/kotlin-compiler-1.4.10.zip
|
||||||
|
unzip kotlin-compiler-1.4.10.zip
|
||||||
|
rm kotlin-compiler-1.4.10.zip
|
||||||
|
echo 'export PATH=$PATH:/opt/kotlinc/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install elixir and erlang
|
||||||
|
# final binary: /opt/elixir/bin/elixir
|
||||||
|
# get version: /opt/elixir/bin/elixir --version
|
||||||
|
# erlang
|
||||||
|
cd /opt && mkdir erlang && cd erlang
|
||||||
|
wget http://erlang.org/download/otp_src_23.0.tar.gz
|
||||||
|
gunzip -c otp_src_23.0.tar.gz | tar xf -
|
||||||
|
cd otp_src_23.0 && ./configure
|
||||||
|
make
|
||||||
|
echo 'export PATH=$PATH:/opt/erlang/otp_src_23.0/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
# elixir
|
||||||
|
cd /opt && mkdir elixir && cd elixir
|
||||||
|
wget https://github.com/elixir-lang/elixir/releases/download/v1.10.3/Precompiled.zip
|
||||||
|
mkdir elixir-1.10.3 && unzip Precompiled.zip -d elixir-1.10.3/
|
||||||
|
echo 'export PATH=$PATH:/opt/elixir/elixir-1.10.3/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install emacs
|
||||||
|
# final binary: /opt/emacs/emacs-26.3/src/emacs
|
||||||
|
# get version: /opt/emacs/emacs-26.3/src/emacs --version
|
||||||
|
cd /opt && mkdir emacs && cd emacs
|
||||||
|
wget https://mirrors.ocf.berkeley.edu/gnu/emacs/emacs-26.3.tar.xz
|
||||||
|
tar -xf emacs-26.3.tar.xz
|
||||||
|
rm emacs-26.3.tar.xz
|
||||||
|
cd emacs-26.3
|
||||||
|
./configure --with-gnutls=no
|
||||||
|
make
|
||||||
|
echo 'export PATH=$PATH:/opt/emacs/emacs-26.3/src' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install lua
|
||||||
|
# final binary: /opt/lua/lua54/src/lua
|
||||||
|
# get version: /opt/lua/lua54/src/lua -v
|
||||||
|
cd /opt && mkdir lua && cd lua
|
||||||
|
wget https://sourceforge.net/projects/luabinaries/files/5.4.0/Docs%20and%20Sources/lua-5.4.0_Sources.tar.gz/download
|
||||||
|
tar -xzf download
|
||||||
|
cd lua54
|
||||||
|
make
|
||||||
|
echo 'export PATH=$PATH:/opt/lua/lua54/src' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install haskell
|
||||||
|
# final binary: /usr/bin/ghc
|
||||||
|
# get version: /usr/bin/ghc --version
|
||||||
|
apt install -y ghc
|
||||||
|
|
||||||
|
# install deno
|
||||||
|
# final binary: /opt/.deno/bin/deno
|
||||||
|
# get version: /opt/.deno/bin/deno --version
|
||||||
|
cd /opt && mkdir deno && cd deno
|
||||||
|
curl -fsSL https://deno.land/x/install/install.sh | sh
|
||||||
|
echo 'export DENO_INSTALL="/opt/.deno"' >> /opt/.profile
|
||||||
|
echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install brainfuck
|
||||||
|
cd /opt && mkdir bf && cd bf
|
||||||
|
git clone https://github.com/texus/Brainfuck-interpreter
|
||||||
|
cd Brainfuck-interpreter
|
||||||
|
echo 'export PATH=$PATH:/opt/bf/Brainfuck-interpreter' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install crystal
|
||||||
|
# final binary: /opt/crystal/crystal-0.35.1-1/bin/crystal
|
||||||
|
# get version: /opt/crystal/crystal-0.35.1-1/bin/crystal -v
|
||||||
|
cd /opt && mkdir crystal && cd crystal
|
||||||
|
wget https://github.com/crystal-lang/crystal/releases/download/0.35.1/crystal-0.35.1-1-linux-x86_64.tar.gz
|
||||||
|
tar -xzf crystal-0.35.1-1-linux-x86_64.tar.gz
|
||||||
|
echo 'export PATH="$PATH:/opt/crystal/crystal-0.35.1-1/bin:$PATH"' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install d
|
||||||
|
# final binary: /opt/d/dmd2/linux/bin64/dmd
|
||||||
|
# get version: /opt/d/dmd2/linux/bin64/dmd --version
|
||||||
|
cd /opt && mkdir d && cd d
|
||||||
|
wget http://downloads.dlang.org/releases/2.x/2.095.0/dmd.2.095.0.linux.tar.xz
|
||||||
|
unxz dmd.2.095.0.linux.tar.xz
|
||||||
|
tar -xf dmd.2.095.0.linux.tar
|
||||||
|
echo 'export PATH=$PATH:/opt/d/dmd2/linux/bin64' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install zig
|
||||||
|
# final binary: /opt/zig/zig
|
||||||
|
# get version: /opt/zig/zig version
|
||||||
|
cd /opt && mkdir zig && cd zig
|
||||||
|
wget https://ziglang.org/download/0.7.1/zig-linux-x86_64-0.7.1.tar.xz
|
||||||
|
tar -xf zig-linux-x86_64-0.7.1.tar.xz
|
||||||
|
mv zig-linux-x86_64-0.7.1 zig
|
||||||
|
rm zig-linux-x86_64-0.7.1.tar.xz
|
||||||
|
echo 'export PATH=$PATH:/opt/zig/zig' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install nim
|
||||||
|
# final binary: /opt/nim/bin/nim
|
||||||
|
# get version: /opt/nim/bin/nim -v
|
||||||
|
cd /opt && mkdir nim && cd nim
|
||||||
|
wget https://nim-lang.org/download/nim-1.4.0-linux_x64.tar.xz
|
||||||
|
unxz nim-1.4.0-linux_x64.tar.xz
|
||||||
|
tar -xf nim-1.4.0-linux_x64.tar
|
||||||
|
cd nim-1.4.0
|
||||||
|
./install.sh /opt
|
||||||
|
echo 'export PATH=$PATH:/opt/nim/bin' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# install 05AB1E
|
||||||
|
# final binary: /opt/05AB1E/05AB1E/osabie
|
||||||
|
# requires Elixir to install
|
||||||
|
cd /opt && mkdir 05AB1E && cd 05AB1E
|
||||||
|
git clone https://github.com/Adriandmen/05AB1E.git
|
||||||
|
cd 05AB1E
|
||||||
|
mix local.hex --force
|
||||||
|
mix deps.get --force
|
||||||
|
MIX_ENV=prod mix escript.build --force
|
||||||
|
echo 'export PATH=$PATH:/opt/05AB1E/05AB1E' >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
|
# create runnable users and apply limits
|
||||||
|
for i in {1..150}; do
|
||||||
|
useradd -M runner$i
|
||||||
|
usermod -d /tmp runner$i
|
||||||
|
echo "runner$i soft nproc 64" >> /etc/security/limits.conf
|
||||||
|
echo "runner$i hard nproc 64" >> /etc/security/limits.conf
|
||||||
|
echo "runner$i soft nofile 2048" >> /etc/security/limits.conf
|
||||||
|
echo "runner$i hard nofile 2048" >> /etc/security/limits.conf
|
||||||
|
done
|
||||||
|
|
||||||
|
# remove any lingering write access to others
|
||||||
|
cd /opt
|
||||||
|
chown -R root: *
|
||||||
|
chmod -R o-w *
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
rm -rf /home/ubuntu
|
||||||
|
chmod 777 /tmp
|
||||||
|
|
||||||
|
# disable cron
|
||||||
|
systemctl stop cron
|
||||||
|
systemctl disable cron
|
|
@ -0,0 +1,355 @@
|
||||||
|
image:
|
||||||
|
name: ubuntu-bionic-x86_64-piston
|
||||||
|
distribution: ubuntu
|
||||||
|
release: bionic
|
||||||
|
description: |-
|
||||||
|
Ubuntu {{ image.release }} preconfigured for Piston
|
||||||
|
architecture: x86_64
|
||||||
|
|
||||||
|
source:
|
||||||
|
downloader: debootstrap
|
||||||
|
same_as: bionic
|
||||||
|
url: http://archive.ubuntu.com/ubuntu
|
||||||
|
keyserver: keyserver.ubuntu.com
|
||||||
|
keys:
|
||||||
|
- '0x790BC7277767219C42C86F933B4FE6ACC0B21F32'
|
||||||
|
- '0xf6ecb3762474eda9d21b7022871920d1991bc93c'
|
||||||
|
|
||||||
|
targets:
|
||||||
|
lxc:
|
||||||
|
create-message: |-
|
||||||
|
You just created an {{ image.description }} container.
|
||||||
|
To enable SSH, run: apt install openssh-server
|
||||||
|
No default root or user password are set by LXC.
|
||||||
|
config:
|
||||||
|
- type: all
|
||||||
|
before: 5
|
||||||
|
content: |-
|
||||||
|
lxc.include = LXC_TEMPLATE_CONFIG/ubuntu.common.conf
|
||||||
|
- type: user
|
||||||
|
before: 5
|
||||||
|
content: |-
|
||||||
|
lxc.include = LXC_TEMPLATE_CONFIG/ubuntu.userns.conf
|
||||||
|
- type: all
|
||||||
|
after: 4
|
||||||
|
content: |-
|
||||||
|
lxc.include = LXC_TEMPLATE_CONFIG/common.conf
|
||||||
|
# For Ubuntu 14.04
|
||||||
|
lxc.mount.entry = /sys/kernel/debug sys/kernel/debug none bind,optional 0 0
|
||||||
|
lxc.mount.entry = /sys/kernel/security sys/kernel/security none bind,optional 0 0
|
||||||
|
lxc.mount.entry = /sys/fs/pstore sys/fs/pstore none bind,optional 0 0
|
||||||
|
lxc.mount.entry = mqueue dev/mqueue mqueue rw,relatime,create=dir,optional 0 0
|
||||||
|
- type: user
|
||||||
|
after: 4
|
||||||
|
content: |-
|
||||||
|
lxc.include = LXC_TEMPLATE_CONFIG/userns.conf
|
||||||
|
# For Ubuntu 14.04
|
||||||
|
lxc.mount.entry = /sys/firmware/efi/efivars sys/firmware/efi/efivars none bind,optional 0 0
|
||||||
|
lxc.mount.entry = /proc/sys/fs/binfmt_misc proc/sys/fs/binfmt_misc none bind,optional 0 0
|
||||||
|
- type: all
|
||||||
|
content: |-
|
||||||
|
lxc.arch = {{ image.architecture_personality }}
|
||||||
|
files:
|
||||||
|
- path: /etc/hostname
|
||||||
|
generator: hostname
|
||||||
|
|
||||||
|
- path: /etc/hosts
|
||||||
|
generator: hosts
|
||||||
|
|
||||||
|
- path: /etc/resolvconf/resolv.conf.d/original
|
||||||
|
generator: remove
|
||||||
|
|
||||||
|
- path: /etc/resolvconf/resolv.conf.d/tail
|
||||||
|
generator: remove
|
||||||
|
|
||||||
|
- path: /etc/machine-id
|
||||||
|
generator: dump
|
||||||
|
|
||||||
|
|
||||||
|
- path: /var/lib/dbus/machine-id
|
||||||
|
generator: remove
|
||||||
|
|
||||||
|
- path: /etc/netplan/10-lxc.yaml
|
||||||
|
generator: dump
|
||||||
|
content: |-
|
||||||
|
network:
|
||||||
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
eth0:
|
||||||
|
dhcp4: true
|
||||||
|
dhcp-identifier: mac
|
||||||
|
releases:
|
||||||
|
- bionic
|
||||||
|
- eoan
|
||||||
|
- focal
|
||||||
|
- groovy
|
||||||
|
types:
|
||||||
|
- container
|
||||||
|
variants:
|
||||||
|
- default
|
||||||
|
|
||||||
|
- path: /etc/network/interfaces
|
||||||
|
generator: dump
|
||||||
|
content: |-
|
||||||
|
# This file describes the network interfaces available on your system
|
||||||
|
# and how to activate them. For more information, see interfaces(5).
|
||||||
|
# The loopback network interface
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
auto eth0
|
||||||
|
iface eth0 inet dhcp
|
||||||
|
source /etc/network/interfaces.d/*.cfg
|
||||||
|
releases:
|
||||||
|
- trusty
|
||||||
|
- xenial
|
||||||
|
types:
|
||||||
|
- container
|
||||||
|
|
||||||
|
- path: /etc/netplan/10-lxc.yaml
|
||||||
|
generator: dump
|
||||||
|
content: |-
|
||||||
|
network:
|
||||||
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
enp5s0:
|
||||||
|
dhcp4: true
|
||||||
|
dhcp-identifier: mac
|
||||||
|
releases:
|
||||||
|
- bionic
|
||||||
|
- eoan
|
||||||
|
- focal
|
||||||
|
- groovy
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
variants:
|
||||||
|
- default
|
||||||
|
|
||||||
|
- path: /etc/network/interfaces
|
||||||
|
generator: dump
|
||||||
|
content: |-
|
||||||
|
# This file describes the network interfaces available on your system
|
||||||
|
# and how to activate them. For more information, see interfaces(5).
|
||||||
|
# The loopback network interface
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
auto enp5s0
|
||||||
|
iface enp5s0 inet dhcp
|
||||||
|
source /etc/network/interfaces.d/*.cfg
|
||||||
|
releases:
|
||||||
|
- trusty
|
||||||
|
- xenial
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- path: /etc/init/lxc-tty.conf
|
||||||
|
generator: upstart-tty
|
||||||
|
releases:
|
||||||
|
- trusty
|
||||||
|
types:
|
||||||
|
- container
|
||||||
|
|
||||||
|
- name: meta-data
|
||||||
|
generator: cloud-init
|
||||||
|
variants:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- name: network-config
|
||||||
|
generator: cloud-init
|
||||||
|
variants:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- name: user-data
|
||||||
|
generator: cloud-init
|
||||||
|
variants:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- name: vendor-data
|
||||||
|
generator: cloud-init
|
||||||
|
variants:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- name: ext4
|
||||||
|
generator: fstab
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- name: lxd-agent
|
||||||
|
generator: lxd-agent
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- path: /etc/default/grub.d/50-lxd.cfg
|
||||||
|
generator: dump
|
||||||
|
content: |-
|
||||||
|
GRUB_RECORDFAIL_TIMEOUT=0
|
||||||
|
GRUB_TIMEOUT=0
|
||||||
|
GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} console=tty1 console=ttyS0"
|
||||||
|
GRUB_TERMINAL=console
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- path: /etc/sudoers.d/90-lxd
|
||||||
|
generator: dump
|
||||||
|
mode: '0440'
|
||||||
|
content: |-
|
||||||
|
# User rules for ubuntu
|
||||||
|
ubuntu ALL=(ALL) NOPASSWD:ALL
|
||||||
|
variants:
|
||||||
|
- default
|
||||||
|
|
||||||
|
packages:
|
||||||
|
manager: apt
|
||||||
|
update: true
|
||||||
|
cleanup: true
|
||||||
|
sets:
|
||||||
|
- packages:
|
||||||
|
- apt-transport-https
|
||||||
|
- fuse
|
||||||
|
- language-pack-en
|
||||||
|
- openssh-client
|
||||||
|
- vim
|
||||||
|
action: install
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- cloud-init
|
||||||
|
action: install
|
||||||
|
variants:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- acpid
|
||||||
|
action: install
|
||||||
|
architectures:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- grub-efi-amd64-signed
|
||||||
|
- shim-signed
|
||||||
|
action: install
|
||||||
|
architectures:
|
||||||
|
- amd64
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- grub-efi-arm64-signed
|
||||||
|
action: install
|
||||||
|
architectures:
|
||||||
|
- arm64
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- shim-signed
|
||||||
|
action: install
|
||||||
|
architectures:
|
||||||
|
- arm64
|
||||||
|
releases:
|
||||||
|
- disco
|
||||||
|
- eoan
|
||||||
|
- focal
|
||||||
|
- groovy
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- linux-virtual-hwe-16.04
|
||||||
|
action: install
|
||||||
|
releases:
|
||||||
|
- xenial
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- linux-virtual
|
||||||
|
action: install
|
||||||
|
releases:
|
||||||
|
- bionic
|
||||||
|
- eoan
|
||||||
|
- focal
|
||||||
|
- groovy
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
- packages:
|
||||||
|
- os-prober
|
||||||
|
action: remove
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
repositories:
|
||||||
|
- name: sources.list
|
||||||
|
url: |-
|
||||||
|
deb http://archive.ubuntu.com/ubuntu {{ image.release }} main restricted universe multiverse
|
||||||
|
deb http://archive.ubuntu.com/ubuntu {{ image.release }}-updates main restricted universe multiverse
|
||||||
|
deb http://security.ubuntu.com/ubuntu {{ image.release }}-security main restricted universe multiverse
|
||||||
|
architectures:
|
||||||
|
- amd64
|
||||||
|
- i386
|
||||||
|
|
||||||
|
- name: sources.list
|
||||||
|
url: |-
|
||||||
|
deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }} main restricted universe multiverse
|
||||||
|
deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }}-updates main restricted universe multiverse
|
||||||
|
deb http://ports.ubuntu.com/ubuntu-ports {{ image.release }}-security main restricted universe multiverse
|
||||||
|
architectures:
|
||||||
|
- armhf
|
||||||
|
- arm64
|
||||||
|
- powerpc
|
||||||
|
- powerpc64
|
||||||
|
- ppc64el
|
||||||
|
|
||||||
|
actions:
|
||||||
|
- trigger: post-update
|
||||||
|
action: |-
|
||||||
|
#!/bin/sh
|
||||||
|
set -eux
|
||||||
|
# Create the ubuntu user account
|
||||||
|
getent group sudo >/dev/null 2>&1 || groupadd --system sudo
|
||||||
|
useradd --create-home -s /bin/bash -G sudo -U ubuntu
|
||||||
|
variants:
|
||||||
|
- default
|
||||||
|
|
||||||
|
- trigger: post-packages
|
||||||
|
action: |-
|
||||||
|
#!/bin/sh
|
||||||
|
set -eux
|
||||||
|
# Enable systemd-networkd
|
||||||
|
systemctl enable systemd-networkd
|
||||||
|
releases:
|
||||||
|
- bionic
|
||||||
|
- eoan
|
||||||
|
- focal
|
||||||
|
- groovy
|
||||||
|
|
||||||
|
- trigger: post-packages
|
||||||
|
action: |-
|
||||||
|
#!/bin/sh
|
||||||
|
set -eux
|
||||||
|
# Make sure the locale is built and functional
|
||||||
|
locale-gen en_US.UTF-8
|
||||||
|
update-locale LANG=en_US.UTF-8
|
||||||
|
# Cleanup underlying /run
|
||||||
|
mount -o bind / /mnt
|
||||||
|
rm -rf /mnt/run/*
|
||||||
|
umount /mnt
|
||||||
|
# Cleanup temporary shadow paths
|
||||||
|
rm /etc/*-
|
||||||
|
- trigger: post-files
|
||||||
|
action: |-
|
||||||
|
#!/bin/sh
|
||||||
|
set -eux
|
||||||
|
TARGET="x86_64"
|
||||||
|
[ "$(uname -m)" = "aarch64" ] && TARGET="arm64"
|
||||||
|
update-grub
|
||||||
|
grub-install --uefi-secure-boot --target="${TARGET}-efi" --no-nvram --removable
|
||||||
|
update-grub
|
||||||
|
sed -i "s#root=[^ ]*#root=/dev/sda2#g" /boot/grub/grub.cfg
|
||||||
|
types:
|
||||||
|
- vm
|
||||||
|
|
||||||
|
mappings:
|
||||||
|
architecture_map: debian
|
|
@ -0,0 +1,7 @@
|
||||||
|
# LXC Container Build
|
||||||
|
|
||||||
|
Requires: `lxc`, `lxc-net`, `packer` (Hashicorp Packer)
|
||||||
|
|
||||||
|
To build: `packer build -var 'apt_mirror=[apt mirror]' -var 'make_threads=[-j flag]' piston.pkr.hcl`
|
||||||
|
|
||||||
|
After roughly 30 minutes (on an i7-4790k), you should have an image built
|
|
@ -35,7 +35,7 @@ lxc-attach --clear-env -n piston -- \
|
||||||
# runner
|
# runner
|
||||||
timeout -s KILL 20 \
|
timeout -s KILL 20 \
|
||||||
lxc-attach --clear-env -n piston -- \
|
lxc-attach --clear-env -n piston -- \
|
||||||
/bin/bash -l -c "runuser runner$runner /exec/$language runner$runner $id"
|
/bin/bash -l -c "runuser runner$runner /exec/$language $id"
|
||||||
|
|
||||||
# process janitor
|
# process janitor
|
||||||
lxc-attach --clear-env -n piston -- \
|
lxc-attach --clear-env -n piston -- \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
|
||||||
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' awk -f code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' awk -f code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
xargs -a args.args -d '\n' timeout -s KILL 3 bash code.code < stdin.stdin
|
xargs -a args.args -d '\n' timeout -s KILL 3 bash code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' brainfuck code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' brainfuck code.code < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 10 gcc -std=c11 -o binary -x c code.code
|
timeout -s KILL 10 gcc -std=c11 -o binary -x c code.code
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 10 g++ -std=c++17 -o binary -x c++ code.code
|
timeout -s KILL 10 g++ -std=c++17 -o binary -x c++ code.code
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 10 crystal build code.code
|
timeout -s KILL 10 crystal build code.code
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./code < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
mcs $(echo code.code | sed 's/\///') -nowarn:0219 -out:binary
|
mcs $(echo code.code | sed 's/\///') -nowarn:0219 -out:binary
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' mono binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' mono binary < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
cp code.code code.d
|
cp code.code code.d
|
||||||
timeout -s KILL 10 dmd code.d
|
timeout -s KILL 10 dmd code.d
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./code
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./code
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
xargs -a args.args -d '\n' timeout -s KILL 3 dash code.code < stdin.stdin
|
xargs -a args.args -d '\n' timeout -s KILL 3 dash code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' deno run code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' deno run code.code < stdin.stdin
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
|
|
||||||
export LC_ALL="en_US.UTF-8"
|
export LC_ALL="en_US.UTF-8"
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' elixir code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' elixir code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' emacs -Q --script code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' emacs -Q --script code.code < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
cp code.code interim.go
|
cp code.code interim.go
|
||||||
go build interim.go
|
go build interim.go
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./interim < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./interim < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
cp code.code code.hs
|
cp code.code code.hs
|
||||||
ghc -dynamic -o binary code.hs > /dev/null 2>&1
|
ghc -dynamic -o binary code.hs > /dev/null 2>&1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /tmp/$1
|
||||||
cp code.code interim.java
|
cp code.code interim.java
|
||||||
timeout -s KILL 10 xargs -a args.args -d '\n' java interim.java < stdin.stdin
|
timeout -s KILL 10 xargs -a args.args -d '\n' java interim.java < stdin.stdin
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' jelly fu code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' jelly fu code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' julia code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' julia code.code < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
cp code.code code.kt
|
cp code.code code.kt
|
||||||
kotlinc code.kt -include-runtime -d code.jar
|
kotlinc code.kt -include-runtime -d code.jar
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' java -jar code.jar < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' java -jar code.jar < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' sbcl --script code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' sbcl --script code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' lua code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' lua code.code < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
nasm -f elf32 -o binary.o code.code
|
nasm -f elf32 -o binary.o code.code
|
||||||
ld -m elf_i386 binary.o -o binary
|
ld -m elf_i386 binary.o -o binary
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
nasm -f elf64 -o binary.o code.code
|
nasm -f elf64 -o binary.o code.code
|
||||||
ld -m elf_x86_64 binary.o -o binary
|
ld -m elf_x86_64 binary.o -o binary
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 10 nim --hints:off c code.code
|
timeout -s KILL 10 nim --hints:off c code.code
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./code
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./code
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' node code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' node code.code < stdin.stdin
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
export LC_ALL="en_US.UTF-8"
|
export LC_ALL="en_US.UTF-8"
|
||||||
|
|
||||||
# osabie will break if you try using it with xargs
|
# osabie will break if you try using it with xargs
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 osabie code.code < args.args
|
timeout -s KILL 3 osabie code.code < args.args
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
export PYTHONPATH=$PYTHONPATH:/opt/paradoc
|
export PYTHONPATH=$PYTHONPATH:/opt/paradoc
|
||||||
timeout -s KILL 3 python3.8 -m paradoc code.code < args.args
|
timeout -s KILL 3 python3.8 -m paradoc code.code < args.args
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' perl code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' perl code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' php code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' php code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' python code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' python code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' python3.8 code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' python3.8 code.code < stdin.stdin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ruby code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ruby code.code < stdin.stdin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 10 rustc -o binary code.code
|
timeout -s KILL 10 rustc -o binary code.code
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./binary < stdin.stdin
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /tmp/$1
|
||||||
|
cp code.code interim.scala
|
||||||
|
timeout -s KILL 10 xargs -a args.args -d '\n' scala interim.scala < stdin.stdin
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' swift code.code < stdin.stdin
|
timeout -s KILL 3 xargs -a args.args -d '\n' swift code.code < stdin.stdin
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
mv code.code interim.ts
|
mv code.code interim.ts
|
||||||
tsc interim.ts
|
tsc interim.ts
|
||||||
rm -f interim.ts
|
rm -f interim.ts
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$2
|
cd /tmp/$1
|
||||||
cp code.code main.zig
|
cp code.code main.zig
|
||||||
timeout -s KILL 10 zig build-exe main.zig
|
timeout -s KILL 10 zig build-exe main.zig
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./main
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./main
|
||||||
|
|
|
@ -60,6 +60,8 @@ echo -n 'testing ruby = '
|
||||||
../../cli/execute ruby ruby.rb
|
../../cli/execute ruby ruby.rb
|
||||||
echo -n 'testing rust = '
|
echo -n 'testing rust = '
|
||||||
../../cli/execute rust rust.rs
|
../../cli/execute rust rust.rs
|
||||||
|
echo -n 'testing scala = '
|
||||||
|
../../cli/execute scala scala.scala
|
||||||
echo -n 'testing swift = '
|
echo -n 'testing swift = '
|
||||||
../../cli/execute swift swift.swift
|
../../cli/execute swift swift.swift
|
||||||
echo -n 'testing typescript = '
|
echo -n 'testing typescript = '
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
@main def run(): Unit = {
|
||||||
|
println("good")
|
||||||
|
}
|
|
@ -125,6 +125,10 @@ echo 'rust'
|
||||||
lxc-attach --clear-env -n piston -- /bin/bash -l -c "rustc --version"
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "rustc --version"
|
||||||
echo '---'
|
echo '---'
|
||||||
|
|
||||||
|
echo 'scala'
|
||||||
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "scala -version"
|
||||||
|
echo '---'
|
||||||
|
|
||||||
echo 'swift'
|
echo 'swift'
|
||||||
lxc-attach --clear-env -n piston -- /bin/bash -l -c "swift --version"
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "swift --version"
|
||||||
echo '---'
|
echo '---'
|
||||||
|
|
13
readme.md
13
readme.md
|
@ -136,17 +136,21 @@ pacman -S lxc libvirt unzip
|
||||||
```sh
|
```sh
|
||||||
# clone and enter repo
|
# clone and enter repo
|
||||||
git clone https://github.com/engineer-man/piston
|
git clone https://github.com/engineer-man/piston
|
||||||
cd piston/lxc
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Installation (simple)
|
#### Installation (simple)
|
||||||
|
|
||||||
- Coming soon.
|
- Install additional dependencies python3, pip and distrobuilder
|
||||||
|
- `cd container && ./build.sh`
|
||||||
|
- Wait, it may take up to an hour.
|
||||||
|
- `lxc-create -n piston -t local -- --metadata meta.tar.xz --fstree rootfs.tar.xz`
|
||||||
|
- `cd lxc && ./start`
|
||||||
|
- Good to go!
|
||||||
|
|
||||||
|
|
||||||
#### Installation (advanced)
|
#### Installation (advanced)
|
||||||
|
|
||||||
- See `var/install.txt` for how to create a new LXC container and install all of the required
|
- See `var/install.txt` for how to build the container manually
|
||||||
software.
|
|
||||||
|
|
||||||
#### CLI Usage
|
#### CLI Usage
|
||||||
- `cli/execute [language] [file path] [args]`
|
- `cli/execute [language] [file path] [args]`
|
||||||
|
@ -284,6 +288,7 @@ Content-Type: application/json
|
||||||
`python3`,
|
`python3`,
|
||||||
`ruby`,
|
`ruby`,
|
||||||
`rust`,
|
`rust`,
|
||||||
|
`scala`,
|
||||||
`swift`,
|
`swift`,
|
||||||
`typescript`,
|
`typescript`,
|
||||||
`zig`,
|
`zig`,
|
||||||
|
|
294
var/install.txt
294
var/install.txt
|
@ -5,299 +5,7 @@ lxc-create -t download -n piston -- --dist ubuntu --release bionic --arch amd64
|
||||||
# open a shell to the container
|
# open a shell to the container
|
||||||
./shell
|
./shell
|
||||||
|
|
||||||
# install all necessary piston dependencies
|
# run everything located in container/install.sh
|
||||||
echo 'source /opt/.profile' >> /opt/.bashrc
|
|
||||||
echo 'export HOME=/opt' >> /opt/.profile
|
|
||||||
echo 'export TERM=linux' >> /opt/.profile
|
|
||||||
echo 'export PATH=$PATH:/opt/.local/bin' >> /opt/.profile
|
|
||||||
export HOME=/opt
|
|
||||||
export TERM=linux
|
|
||||||
sed -i 's/\/root/\/opt/' /etc/passwd
|
|
||||||
sed -i \
|
|
||||||
's/http:\/\/archive.ubuntu.com\/ubuntu/http:\/\/mirror.math.princeton.edu\/pub\/ubuntu/' \
|
|
||||||
/etc/apt/sources.list
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y \
|
|
||||||
nano wget build-essential pkg-config libxml2-dev \
|
|
||||||
libsqlite3-dev mono-complete curl cmake libpython2.7-dev \
|
|
||||||
ruby libtinfo-dev unzip git openssl libssl-dev sbcl libevent-dev
|
|
||||||
|
|
||||||
# install python2
|
|
||||||
# final binary: /opt/python2/Python-2.7.17/python
|
|
||||||
# get version: /opt/python2/Python-2.7.17/python -V
|
|
||||||
cd /opt && mkdir python2 && cd python2
|
|
||||||
wget https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz
|
|
||||||
unxz Python-2.7.17.tar.xz
|
|
||||||
tar -xf Python-2.7.17.tar
|
|
||||||
cd Python-2.7.17
|
|
||||||
./configure
|
|
||||||
# open Modules/Setup and uncomment zlib line
|
|
||||||
make
|
|
||||||
echo 'export PATH=$PATH:/opt/python2/Python-2.7.17' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install python3
|
|
||||||
# final binary: /opt/python3/Python-3.9.1/python
|
|
||||||
# get version: /opt/python3/Python-3.9.1/python -V
|
|
||||||
cd /opt && mkdir python3 && cd python3
|
|
||||||
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
|
|
||||||
unxz Python-3.9.1.tar.xz
|
|
||||||
tar -xf Python-3.9.1.tar
|
|
||||||
cd Python-3.9.1
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
ln -s python python3.9
|
|
||||||
echo 'export PATH=$PATH:/opt/python3/Python-3.9.1' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install paradoc
|
|
||||||
# this is not a binary, it is a python module
|
|
||||||
# therefore it cannot be run directly as it requires python3 to be installed
|
|
||||||
cd /opt && mkdir paradoc && cd paradoc
|
|
||||||
git clone https://github.com/betaveros/paradoc.git
|
|
||||||
|
|
||||||
# install node.js
|
|
||||||
# final binary: /opt/nodejs/node-v12.16.1-linux-x64/bin/node
|
|
||||||
# get version: /opt/nodejs/node-v12.16.1-linux-x64/bin/node -v
|
|
||||||
cd /opt && mkdir nodejs && cd nodejs
|
|
||||||
wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
|
|
||||||
unxz node-v12.16.1-linux-x64.tar.xz
|
|
||||||
tar -xf node-v12.16.1-linux-x64.tar
|
|
||||||
echo 'export PATH=$PATH:/opt/nodejs/node-v12.16.1-linux-x64/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install typescript
|
|
||||||
# final binary: /opt/nodejs/node-v12.16.1-linux-x64/bin/tsc
|
|
||||||
# get version: /opt/nodejs/node-v12.16.1-linux-x64/bin/tsc -v
|
|
||||||
/opt/nodejs/node-v12.16.1-linux-x64/bin/npm i -g typescript
|
|
||||||
|
|
||||||
# install golang
|
|
||||||
# final binary: /opt/go/go/bin/go
|
|
||||||
# get version: /opt/go/go/bin/go version
|
|
||||||
cd /opt && mkdir go && cd go
|
|
||||||
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz
|
|
||||||
tar -xzf go1.14.1.linux-amd64.tar.gz
|
|
||||||
echo 'export PATH=$PATH:/opt/go/go/bin' >> /opt/.profile
|
|
||||||
echo 'export GOROOT=/opt/go/go' >> /opt/.profile
|
|
||||||
echo 'export GOCACHE=/tmp' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install php
|
|
||||||
# final binary: /usr/local/bin/php
|
|
||||||
# get version: /usr/local/bin/php -v
|
|
||||||
cd /opt && mkdir php && cd php
|
|
||||||
wget https://www.php.net/distributions/php-8.0.0.tar.gz
|
|
||||||
tar -xzf php-8.0.0.tar.gz
|
|
||||||
cd php-8.0.0
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
# install rust
|
|
||||||
# final binary: /usr/local/bin/rustc
|
|
||||||
# get version: /usr/local/bin/rustc --version
|
|
||||||
cd /opt && mkdir rust && cd rust
|
|
||||||
wget https://static.rust-lang.org/dist/rust-1.49.0-x86_64-unknown-linux-gnu.tar.gz
|
|
||||||
tar -xzf rust-1.49.0-x86_64-unknown-linux-gnu.tar.gz
|
|
||||||
cd rust-1.49.0-x86_64-unknown-linux-gnu
|
|
||||||
./install.sh
|
|
||||||
|
|
||||||
# install swift
|
|
||||||
# final binary: /opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin/swift
|
|
||||||
# get version: /opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin/swift --version
|
|
||||||
cd /opt && mkdir swift && cd swift
|
|
||||||
wget https://swift.org/builds/swift-5.1.5-release/ubuntu1804/swift-5.1.5-RELEASE/swift-5.1.5-RELEASE-ubuntu18.04.tar.gz
|
|
||||||
tar -xzf swift-5.1.5-RELEASE-ubuntu18.04.tar.gz
|
|
||||||
echo 'export PATH=$PATH:/opt/swift/swift-5.1.5-RELEASE-ubuntu18.04/usr/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install nasm
|
|
||||||
# final binary: /opt/nasm/nasm-2.14.02/nasm
|
|
||||||
# get version: /opt/nasm/nasm-2.14.02/nasm -v
|
|
||||||
cd /opt && mkdir nasm && cd nasm
|
|
||||||
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
|
|
||||||
tar -xzf nasm-2.14.02.tar.gz
|
|
||||||
cd nasm-2.14.02
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
echo 'export PATH=$PATH:/opt/nasm/nasm-2.14.02' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install java
|
|
||||||
# final binary: /opt/java/jdk-14/bin/java
|
|
||||||
# get version: /opt/java/jdk-14/bin/java -version
|
|
||||||
cd /opt && mkdir java && cd java
|
|
||||||
wget https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_linux-x64_bin.tar.gz
|
|
||||||
tar -xzf openjdk-14_linux-x64_bin.tar.gz
|
|
||||||
echo 'export PATH=$PATH:/opt/java/jdk-14/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install jelly
|
|
||||||
cd /opt && mkdir jelly && cd jelly
|
|
||||||
wget https://github.com/DennisMitchell/jellylanguage/archive/master.zip
|
|
||||||
unzip master.zip
|
|
||||||
cd jellylanguage-master
|
|
||||||
python3.8 -m pip install .
|
|
||||||
sed -i 's/\/usr\/local\/bin\/python3.8/\/opt\/python3\/Python-3.8.2\/python3.8/' /usr/local/bin/jelly
|
|
||||||
|
|
||||||
# install julia
|
|
||||||
# final binary: /opt/julia/julia-1.5.0/bin/julia
|
|
||||||
# get version: /opt/julia/julia-1.5.0/bin/julia --version
|
|
||||||
cd /opt && mkdir julia && cd julia
|
|
||||||
wget https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.0-linux-x86_64.tar.gz
|
|
||||||
tar -xzf julia-1.5.0-linux-x86_64.tar.gz
|
|
||||||
echo 'export PATH=$PATH:/opt/julia/julia-1.5.0/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install kotlin
|
|
||||||
# final binary: /opt/kotlinc/bin/kotlinc
|
|
||||||
# get version: /opt/kotlinc/bin/kotlinc -version
|
|
||||||
cd /opt
|
|
||||||
wget https://github.com/JetBrains/kotlin/releases/download/v1.4.10/kotlin-compiler-1.4.10.zip
|
|
||||||
unzip kotlin-compiler-1.4.10.zip
|
|
||||||
rm kotlin-compiler-1.4.10.zip
|
|
||||||
echo 'export PATH=$PATH:/opt/kotlinc/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install elixir and erlang
|
|
||||||
# final binary: /opt/elixir/bin/elixir
|
|
||||||
# get version: /opt/elixir/bin/elixir --version
|
|
||||||
# erlang
|
|
||||||
cd /opt && mkdir erlang && cd erlang
|
|
||||||
wget http://erlang.org/download/otp_src_23.0.tar.gz
|
|
||||||
gunzip -c otp_src_23.0.tar.gz | tar xf -
|
|
||||||
cd otp_src_23.0 && ./configure
|
|
||||||
make
|
|
||||||
echo 'export PATH=$PATH:/opt/erlang/otp_src_23.0/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
# elixir
|
|
||||||
cd /opt && mkdir elixir && cd elixir
|
|
||||||
wget https://github.com/elixir-lang/elixir/releases/download/v1.10.3/Precompiled.zip
|
|
||||||
mkdir elixir-1.10.3 && unzip Precompiled.zip -d elixir-1.10.3/
|
|
||||||
echo 'export PATH=$PATH:/opt/elixir/elixir-1.10.3/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install emacs
|
|
||||||
# final binary: /opt/emacs/emacs-26.3/src/emacs
|
|
||||||
# get version: /opt/emacs/emacs-26.3/src/emacs --version
|
|
||||||
cd /opt && mkdir emacs && cd emacs
|
|
||||||
wget https://mirrors.ocf.berkeley.edu/gnu/emacs/emacs-26.3.tar.xz
|
|
||||||
tar -xf emacs-26.3.tar.xz
|
|
||||||
rm emacs-26.3.tar.xz
|
|
||||||
cd emacs-26.3
|
|
||||||
./configure --with-gnutls=no
|
|
||||||
make
|
|
||||||
echo 'export PATH=$PATH:/opt/emacs/emacs-26.3/src' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install lua
|
|
||||||
# final binary: /opt/lua/lua54/src/lua
|
|
||||||
# get version: /opt/lua/lua54/src/lua -v
|
|
||||||
cd /opt && mkdir lua && cd lua
|
|
||||||
wget https://sourceforge.net/projects/luabinaries/files/5.4.0/Docs%20and%20Sources/lua-5.4.0_Sources.tar.gz/download
|
|
||||||
tar -xzf download
|
|
||||||
cd lua54
|
|
||||||
make
|
|
||||||
echo 'export PATH=$PATH:/opt/lua/lua54/src' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install haskell
|
|
||||||
# final binary: /usr/bin/ghc
|
|
||||||
# get version: /usr/bin/ghc --version
|
|
||||||
apt install -y ghc
|
|
||||||
|
|
||||||
# install deno
|
|
||||||
# final binary: /opt/.deno/bin/deno
|
|
||||||
# get version: /opt/.deno/bin/deno --version
|
|
||||||
cd /opt && mkdir deno && cd deno
|
|
||||||
curl -fsSL https://deno.land/x/install/install.sh | sh
|
|
||||||
echo 'export DENO_INSTALL="/opt/.deno"' >> /opt/.profile
|
|
||||||
echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install brainfuck
|
|
||||||
cd /opt && mkdir bf && cd bf
|
|
||||||
git clone https://github.com/texus/Brainfuck-interpreter
|
|
||||||
cd Brainfuck-interpreter
|
|
||||||
echo 'export PATH=$PATH:/opt/bf/Brainfuck-interpreter' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install crystal
|
|
||||||
# final binary: /opt/crystal/crystal-0.35.1-1/bin/crystal
|
|
||||||
# get version: /opt/crystal/crystal-0.35.1-1/bin/crystal -v
|
|
||||||
cd /opt && mkdir crystal && cd crystal
|
|
||||||
wget https://github.com/crystal-lang/crystal/releases/download/0.35.1/crystal-0.35.1-1-linux-x86_64.tar.gz
|
|
||||||
tar -xzf crystal-0.35.1-1-linux-x86_64.tar.gz
|
|
||||||
echo 'export PATH="$PATH:/opt/crystal/crystal-0.35.1-1/bin:$PATH"' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install d
|
|
||||||
# final binary: /opt/d/dmd2/linux/bin64/dmd
|
|
||||||
# get version: /opt/d/dmd2/linux/bin64/dmd --version
|
|
||||||
cd /opt && mkdir d && cd d
|
|
||||||
wget http://downloads.dlang.org/releases/2.x/2.095.0/dmd.2.095.0.linux.tar.xz
|
|
||||||
unxz dmd.2.095.0.linux.tar.xz
|
|
||||||
tar -xf dmd.2.095.0.linux.tar
|
|
||||||
echo 'export PATH=$PATH:/opt/d/dmd2/linux/bin64' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install zig
|
|
||||||
# final binary: /opt/zig/zig
|
|
||||||
# get version: /opt/zig/zig version
|
|
||||||
cd /opt && mkdir zig && cd zig
|
|
||||||
wget https://ziglang.org/download/0.7.1/zig-linux-x86_64-0.7.1.tar.xz
|
|
||||||
tar -xf zig-linux-x86_64-0.7.1.tar.xz
|
|
||||||
mv zig-linux-x86_64-0.7.1 zig
|
|
||||||
rm zig-linux-x86_64-0.7.1.tar.xz
|
|
||||||
echo 'export PATH=$PATH:/opt/zig/zig' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install nim
|
|
||||||
# final binary: /opt/nim/bin/nim
|
|
||||||
# get version: /opt/nim/bin/nim -v
|
|
||||||
cd /opt && mkdir nim && cd nim
|
|
||||||
wget https://nim-lang.org/download/nim-1.4.0-linux_x64.tar.xz
|
|
||||||
unxz nim-1.4.0-linux_x64.tar.xz
|
|
||||||
tar -xf nim-1.4.0-linux_x64.tar
|
|
||||||
cd nim-1.4.0
|
|
||||||
./install.sh /opt
|
|
||||||
echo 'export PATH=$PATH:/opt/nim/bin' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# install 05AB1E
|
|
||||||
# final binary: /opt/05AB1E/05AB1E/osabie
|
|
||||||
# requires Elixir to install
|
|
||||||
cd /opt && mkdir 05AB1E && cd 05AB1E
|
|
||||||
git clone https://github.com/Adriandmen/05AB1E.git
|
|
||||||
cd 05AB1E
|
|
||||||
mix local.hex --force
|
|
||||||
mix deps.get --force
|
|
||||||
MIX_ENV=prod mix escript.build --force
|
|
||||||
echo 'export PATH=$PATH:/opt/05AB1E/05AB1E' >> /opt/.profile
|
|
||||||
source /opt/.profile
|
|
||||||
|
|
||||||
# create runnable users and apply limits
|
|
||||||
for i in {1..150}; do
|
|
||||||
useradd -M runner$i
|
|
||||||
usermod -d /tmp runner$i
|
|
||||||
echo "runner$i soft nproc 64" >> /etc/security/limits.conf
|
|
||||||
echo "runner$i hard nproc 64" >> /etc/security/limits.conf
|
|
||||||
echo "runner$i soft nofile 2048" >> /etc/security/limits.conf
|
|
||||||
echo "runner$i hard nofile 2048" >> /etc/security/limits.conf
|
|
||||||
done
|
|
||||||
|
|
||||||
# remove any lingering write access to others
|
|
||||||
cd /opt
|
|
||||||
chown -R root: *
|
|
||||||
chmod -R o-w *
|
|
||||||
|
|
||||||
# cleanup
|
|
||||||
rm -rf /home/ubuntu
|
|
||||||
chmod 777 /tmp
|
|
||||||
|
|
||||||
# disable cron
|
|
||||||
systemctl stop cron
|
|
||||||
systemctl disable cron
|
|
||||||
|
|
||||||
# leave container
|
# leave container
|
||||||
exit
|
exit
|
||||||
|
|
Loading…
Reference in New Issue