Compare commits

...

8 Commits

Author SHA1 Message Date
Thomas Hobson e97b6d426d
Merge pull request #367 from Brikaa/constraints-bug
Fix important constraints bug
2021-10-13 06:43:26 +13:00
Thomas Hobson 72c11467e3
Merge pull request #370 from Brikaa/zig
Increase zig compile timeout
2021-10-13 06:41:54 +13:00
Thomas Hobson 6b2a5a9d33
Merge pull request #368 from Brikaa/env-val-bug
Fix env_val bug
2021-10-13 06:40:53 +13:00
Thomas Hobson d1b87e8017
Merge pull request #372 from dvargas46/master
improve piston shell script
2021-10-13 06:40:03 +13:00
Dan Vargas 198d8ff061 improve piston shell script
- fix portability & using piston within a symlink
- only install cli npm modules on update or first use
- allow building packages with custom builder
- fix all shellchecks except SC2164
2021-10-12 12:21:20 -05:00
Brikaa 80eefaa6fb Increase zig compile timeout 2021-10-11 13:26:43 +02:00
Brikaa afd71cc82d Fix env_val bug 2021-10-10 22:08:55 +02:00
Brikaa 2f114d6e54 Fix important constraints bug 2021-10-10 19:20:17 +02:00
5 changed files with 41 additions and 28 deletions

View File

@ -129,7 +129,7 @@ function get_job(body) {
compile_timeout = compile_timeout || rt.timeouts.compile; compile_timeout = compile_timeout || rt.timeouts.compile;
run_timeout = run_timeout || rt.timeouts.run; run_timeout = run_timeout || rt.timeouts.run;
compile_memory_limit = compile_memory_limit || rt.memory_limits.compile; compile_memory_limit = compile_memory_limit || rt.memory_limits.compile;
run_timeout = run_timeout || rt.timeouts.run; run_memory_limit = run_memory_limit || rt.memory_limits.run;
resolve( resolve(
new Job({ new Job({
runtime: rt, runtime: rt,

View File

@ -215,7 +215,7 @@ options.forEach(option => {
const parsed_val = parser(env_val); const parsed_val = parser(env_val);
const value = parsed_val || option.default; const value = env_val === undefined ? option.default : parsed_val;
option.validators.for_each(validator => { option.validators.for_each(validator => {
let response = null; let response = null;

View File

@ -27,7 +27,7 @@ setInterval(() => {
}, 10); }, 10);
class Job { class Job {
constructor({ runtime, files, args, stdin }) { constructor({ runtime, files, args, stdin, timeouts, memory_limits }) {
this.uuid = uuidv4(); this.uuid = uuidv4();
this.runtime = runtime; this.runtime = runtime;
this.files = files.map((file, i) => ({ this.files = files.map((file, i) => ({
@ -38,6 +38,9 @@ class Job {
this.args = args; this.args = args;
this.stdin = stdin; this.stdin = stdin;
this.timeouts = timeouts;
this.memory_limits = memory_limits;
this.uid = config.runner_uid_min + uid; this.uid = config.runner_uid_min + uid;
this.gid = config.runner_gid_min + gid; this.gid = config.runner_gid_min + gid;
@ -220,8 +223,8 @@ class Job {
compile = await this.safe_call( compile = await this.safe_call(
path.join(this.runtime.pkgdir, 'compile'), path.join(this.runtime.pkgdir, 'compile'),
this.files.map(x => x.name), this.files.map(x => x.name),
this.runtime.timeouts.compile, this.timeouts.compile,
this.runtime.memory_limits.compile this.memory_limits.compile
); );
} }
@ -230,8 +233,8 @@ class Job {
const run = await this.safe_call( const run = await this.safe_call(
path.join(this.runtime.pkgdir, 'run'), path.join(this.runtime.pkgdir, 'run'),
[this.files[0].name, ...this.args], [this.files[0].name, ...this.args],
this.runtime.timeouts.run, this.timeouts.run,
this.runtime.memory_limits.run this.memory_limits.run
); );
this.state = job_states.EXECUTED; this.state = job_states.EXECUTED;
@ -263,8 +266,8 @@ class Job {
const { error, code, signal } = await this.safe_call( const { error, code, signal } = await this.safe_call(
path.join(this.runtime.pkgdir, 'compile'), path.join(this.runtime.pkgdir, 'compile'),
this.files.map(x => x.name), this.files.map(x => x.name),
this.runtime.timeouts.compile, this.timeouts.compile,
this.runtime.memory_limits.compile, this.memory_limits.compile,
eventBus eventBus
); );
@ -276,8 +279,8 @@ class Job {
const { error, code, signal } = await this.safe_call( const { error, code, signal } = await this.safe_call(
path.join(this.runtime.pkgdir, 'run'), path.join(this.runtime.pkgdir, 'run'),
[this.files[0].name, ...this.args], [this.files[0].name, ...this.args],
this.runtime.timeouts.run, this.timeouts.run,
this.runtime.memory_limits.run, this.memory_limits.run,
eventBus eventBus
); );

View File

@ -1,5 +1,8 @@
{ {
"language": "zig", "language": "zig",
"version": "0.8.0", "version": "0.8.0",
"aliases": ["zig"] "aliases": ["zig"],
"limit_overrides": {
"compile_timeout": 15000
}
} }

39
piston
View File

@ -1,7 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
cd "$(dirname "$0")"
PISTON_ENV=$(cat .piston_env || echo dev) EXECUTION_PATH="$PWD"
PISTON_PATH="$(dirname "$(realpath "$0")")"
cd "$PISTON_PATH"
PISTON_ENV=$(cat .piston_env 2> /dev/null || echo dev)
docker_compose(){ docker_compose(){
if [ -f "docker-compose.$PISTON_ENV.yaml" ]; then if [ -f "docker-compose.$PISTON_ENV.yaml" ]; then
@ -32,13 +35,14 @@ case $1 in
echo echo
echo "Development Commands:" echo "Development Commands:"
if [ $PISTON_ENV == dev ]; then if [ "$PISTON_ENV" == dev ]; then
echo " clean-pkgs Clean any package build artifacts on disk" echo " clean-pkgs Clean any package build artifacts on disk"
echo " clean-repo Remove all packages from local repo" echo " clean-repo Remove all packages from local repo"
echo " build-pkg <package> <version> Build a package" echo " list-pkgs Lists all packages that can be built"
echo " rebuild Build and restart the docker container" echo " build-pkg <package> <version> [builder] Build a package [with desired builder image]"
echo " lint Lint the codebase using prettier" echo " rebuild Build and restart the docker container"
echo " lint Lint the codebase using prettier"
else else
@ -56,7 +60,7 @@ case $1 in
restart) docker_compose restart ;; restart) docker_compose restart ;;
start) start)
rm -f .git/hooks/pre-commit rm -f .git/hooks/pre-commit
ln -s $(realpath $(dirname "$0"))/pre-commit .git/hooks/pre-commit ln -s "$PISTON_PATH/pre-commit" "$PISTON_PATH/.git/hooks/pre-commit"
docker_compose up -d docker_compose up -d
;; ;;
stop) docker_compose down ;; stop) docker_compose down ;;
@ -66,6 +70,7 @@ case $1 in
update) update)
git pull git pull
cd cli && npm i > /dev/null && cd -
docker_compose pull docker_compose pull
docker_compose up -d docker_compose up -d
;; ;;
@ -73,12 +78,15 @@ case $1 in
clean-pkgs) git clean -fqXd packages ;; clean-pkgs) git clean -fqXd packages ;;
clean-repo) git clean -fqXd repo ;; clean-repo) git clean -fqXd repo ;;
list-pkgs) find packages -depth 2 | awk -F/ '$2 && $3{ print $2 "-" $3 }' | column ;;
build-pkg) build-pkg)
PKGSLUG="$2-$3" PKGSLUG="$2-$3"
BUILDER="${4:-piston-repo-builder}"
echo "Building $PKGSLUG" echo "Building $PKGSLUG"
echo "Ensuring latest builder image" echo "Ensuring latest builder image"
docker build repo -t piston-repo-builder docker build repo -t "$BUILDER"
docker run --rm -v "$(realpath $(dirname "$0")):/piston" piston-repo-builder --no-server $PKGSLUG docker run --rm -v "$PWD:/piston" "$BUILDER" --no-server "$PKGSLUG"
;; ;;
lint) lint)
@ -86,9 +94,8 @@ case $1 in
npx prettier --ignore-unknown --write . npx prettier --ignore-unknown --write .
;; ;;
*) *)
cd cli [ -d ./cli/node_modules ] || npm i > /dev/null
npm i > /dev/null cd "$EXECUTION_PATH"
cd ../ node "${PISTON_PATH}/cli/index.js" "$@"
node cli/index.js "$@" ;;
;;
esac esac