* fix(python): fix uv can't find ssl certificates - Add `PY_NATIVE_CERT` flag, forces UV to use native tls - Rename `PIP_INDEX_CERT` to `PY_INDEX_CERT` - Rename `PIP_TRUSTED_HOST` to `PY_TRUSTED_HOST` For backwards compatibility PIP* variables are still accessible * feat(python): add `custom_wheels` directory to PYTHONPATH Add global directory by path `<CACHE_DIR>/python_xyz/custom_wheels` For example for scripts running python 3.11, in every execution `<CACHE_DIR>/python_311/custom_wheels` will be accessible and all wheels placed there could be imported and used. This is usefull for preinstalling wheels before runtime * Make it work with Nsjail * Rework and make custom_wheels optional * Remove `create_dir_all` from imports * Use sync version of metadata * Rename `custom_wheels` to `global-site-packages`
144 lines
1.8 KiB
Protocol Buffer
144 lines
1.8 KiB
Protocol Buffer
name: "python run script"
|
|
|
|
mode: ONCE
|
|
hostname: "python"
|
|
log_level: ERROR
|
|
|
|
rlimit_as: 4096
|
|
rlimit_cpu: 1000
|
|
rlimit_fsize: 1000
|
|
rlimit_nofile: 10000
|
|
|
|
cwd: "/tmp"
|
|
|
|
clone_newnet: false
|
|
clone_newuser: {CLONE_NEWUSER}
|
|
|
|
keep_caps: false
|
|
keep_env: true
|
|
mount_proc: true
|
|
|
|
mount {
|
|
src: "/bin"
|
|
dst: "/bin"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "/lib"
|
|
dst: "/lib"
|
|
is_bind: true
|
|
}
|
|
|
|
|
|
mount {
|
|
src: "/lib64"
|
|
dst: "/lib64"
|
|
is_bind: true
|
|
mandatory: false
|
|
}
|
|
|
|
|
|
mount {
|
|
src: "/usr"
|
|
dst: "/usr"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "/dev/null"
|
|
dst: "/dev/null"
|
|
is_bind: true
|
|
rw: true
|
|
}
|
|
|
|
mount {
|
|
dst: "/tmp"
|
|
fstype: "tmpfs"
|
|
rw: true
|
|
options: "size=500000000"
|
|
}
|
|
|
|
mount {
|
|
src: "{JOB_DIR}/{MAIN}.py"
|
|
dst: "/tmp/{MAIN}.py"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "{JOB_DIR}/loader.py"
|
|
dst: "/tmp/loader.py"
|
|
is_bind: true
|
|
mandatory: false
|
|
}
|
|
|
|
mount {
|
|
src: "{JOB_DIR}/wrapper.py"
|
|
dst: "/tmp/wrapper.py"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "{JOB_DIR}/args.json"
|
|
dst: "/tmp/args.json"
|
|
is_bind: true
|
|
rw: true
|
|
}
|
|
|
|
mount {
|
|
src: "{JOB_DIR}/result.json"
|
|
dst: "/tmp/result.json"
|
|
rw: true
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "/etc"
|
|
dst: "/etc"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
dst: "/dev/shm"
|
|
fstype: "tmpfs"
|
|
rw: true
|
|
is_bind: false
|
|
}
|
|
|
|
mount {
|
|
src: "/dev/random"
|
|
dst: "/dev/random"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "{PY_INSTALL_DIR}"
|
|
dst: "{PY_INSTALL_DIR}"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "/dev/urandom"
|
|
dst: "/dev/urandom"
|
|
is_bind: true
|
|
}
|
|
|
|
mount {
|
|
src: "{GLOBAL_SITE_PACKAGES}"
|
|
dst: "{GLOBAL_SITE_PACKAGES}"
|
|
is_bind: true
|
|
mandatory: false
|
|
}
|
|
|
|
{SHARED_MOUNT}
|
|
|
|
{SHARED_DEPENDENCIES}
|
|
|
|
iface_no_lo: true
|
|
|
|
envar: "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH"
|
|
envar: "PYTHONPATH={ADDITIONAL_PYTHON_PATHS}"
|
|
envar: "HOME=/tmp"
|
|
|
|
|