Backend.AI Kernel Runner based on GNU libc
Project description
backend.ai-krunner-static-gnu
Backend.AI Kernel Runner Package for glibc-based Kernels
Notice about source distribution
This package is to distribute prebuilt binaries, so the source distribution does not have prebuilt binaries and does not work as intended. Just refer this repository on how we build stuffs.
How to read below
{distro}
is a string likestatic-gnu
,static-musl
, etc. depending on which repository you are in.{distro_}
is a string same to{distro}
but with hyphens replaced with underscores for Python package names and paths. (e.g.,static_gnu
,static_musl
)
Development
$ git clone https://github.com/lablup/backend.ai-krunner-{distro} krunner-{distro}
$ cd krunner-{distro}
$ pyenv virtualenv 3.9.6 venv-krunner # you may share the same venv with other krunner projects
$ pyenv local venv-krunner
$ pip install -U pip setuptools
$ pip install -U click -e .
How to update
- Modify Dockerfile and/or other contents.
- To update the Python version, update
src/ai/backend/krunner/{distro_}/krunner-python.{distro}.txt
and the dockerfiles accordingly, including thePYTHON_VERSION
environment variable and the download URL of the statically built Python distribution.
- Increment the volume version number specified as a label
ai.backend.krunner.version
insrc/ai/backend/krunner/{distro_}/krunner-env.{distro}.dockerfile
- Run
scripts/build.py
. - Repeat the above steps for each distro version. (For static builds, there is only one.)
- Increment the package version number in
src/ai/backend/krunner/{distro_}/__init__.py
rm -r dist/* build/*
(skip if these directories do not exist and or are empty)python setup.py sdist bdist_wheel
twine upload dist/*
Note that src/ai/backend/krunner/{distro_}/krunner-version.{distro}.txt
files are
overwritten by the build script from the label.
Build custom ttyd binary
⚠️ Warning: Use a x86-64 host to build ttyd, because:
- ttyd uses
musl
as their C stdlib, notglibc
. - The
musl
toochain used by the build script is x86_64 binaries.
libwebsockets>=4.0.0
features auto ping/pong with 5 min default interval.
(https://github.com/warmcat/libwebsockets#connection-validity-tracking) And,
ws_ping_pong_interval
of ttyd is not effective in libwebsockets>=4.0.0
.
This seems to be the reason why ttyd>=1.6.1
does not set
ws_ping_pong_interval
for libwebsockets>=4.0.0
.
(https://github.com/tsl0922/ttyd/blob/master/src/server.c#L456)
To fix this issue, we modify and build the latest version of libwebsockets
used by the ttyd build script manually.
# Prepare Ubuntu environment (possibly, through container) and dependencies.
sudo apt-get update
sudo apt-get install -y autoconf automake build-essential cmake curl file libtool
# Download ttyd source.
git clone https://github.com/tsl0922/ttyd.git
cd ttyd
Now let's modify ./scripts/cross-build.sh
.
Add these two lines under pushd "${BUILD_DIR}/libwebsockets-${LIBWEBSOCKETS_VERSION}"
:
sed -i 's/context->default_retry.secs_since_valid_ping = 300/context->default_retry.secs_since_valid_ping = 20/g' lib/core/context.c
sed -i 's/context->default_retry.secs_since_valid_hangup = 310/context->default_retry.secs_since_valid_hangup = 30/g' lib/core/context.c
Finally, build the ttyd
binary.
# Run build script.
./scripts/cross-build.sh
# Check ttyd binary version.
./build/ttyd --version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for backend.ai-krunner-static-gnu-3.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | eda99c3290b64589f1a1a2f7125d4b6b0789a56129596f984d2a9492847b932f |
|
MD5 | b21a0fc02383715fcb95a4928943985b |
|
BLAKE2b-256 | aa6368af4d9f084c503c158cf5a713d5c78c3e9e4a060515e2d6f899a421780d |
Hashes for backend.ai_krunner_static_gnu-3.0.0-py3-none-manylinux2014_x86_64.macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bbe7bbbd5bca290134eb96920221a5de91ceac0e9344ab592fc46ec3413f669 |
|
MD5 | 322e6858131c6a6d2ec81b7bc796c024 |
|
BLAKE2b-256 | 4d1e734fc6d0b2499fe1605fdd70ef37bf668bceb5dec8b319a19d23cd727392 |
Hashes for backend.ai_krunner_static_gnu-3.0.0-py3-none-manylinux2014_aarch64.macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70efd9fbd2e0c8bbfc6c13bcdffb61ea06e0f6879ee04d9a08985fa56eb1d076 |
|
MD5 | c9e64c9ec35396b98c6e86b941abcb28 |
|
BLAKE2b-256 | d0120c9957ba4d6c637dbe70e209a130cef549463f1dd1d394d3e5580831179a |