-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbuild
More file actions
executable file
·73 lines (61 loc) · 2.44 KB
/
build
File metadata and controls
executable file
·73 lines (61 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env bash
set -eou pipefail
echo -e "=== 🔧 \033[1mRenku Python dependency manager buildpack\033[0m ==="
layer_dir="${CNB_LAYERS_DIR}/deps"
execd_dir="${layer_dir}"/exec.d
mkdir -p "${execd_dir}"
cat >"${execd_dir}"/setup.sh <<EOL
#!/usr/bin/env bash
set -eo pipefail
if [ -d \${RENKU_MOUNT_DIR}/.venv ] && \
([ "\$(readlink -e \${RENKU_MOUNT_DIR}/.venv/bin/python 2>/dev/null)" != "\$(readlink -e \$(which python 2>/dev/null) 2>/dev/null)" ] || \
[ "\$(grep "version = " \${RENKU_MOUNT_DIR}/.venv/pyvenv.cfg 2>/dev/null | cut -d' ' -f3)" != "\$(python --version 2>/dev/null | cut -d' ' -f2)" ]); then
echo "Virtualenv exists but has mismatch - recreating..."
rm -rf \${RENKU_MOUNT_DIR}/.venv
fi
python -m venv --system-site-packages \${RENKU_MOUNT_DIR}/.venv
base_site_packages="\$(python -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')"
derived_site_packages="\$(\${RENKU_MOUNT_DIR}/.venv/bin/python -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')"
echo "\$base_site_packages" > "\$derived_site_packages"/_base_packages.pth
if !(grep "source \${RENKU_MOUNT_DIR}/.venv/bin/activate" \${HOME}/.bashrc); then
printf "source \${RENKU_MOUNT_DIR}/.venv/bin/activate\n" >> \${HOME}/.bashrc
fi
source \${RENKU_MOUNT_DIR}/.venv/bin/activate
if python -c "import ipykernel" >/dev/null 2>&1;then
JUPYTER_DATA_DIR="\${RENKU_MOUNT_DIR}/.local/share/jupyter/" \
python -m ipykernel install --user --name Python3
fi
EOL
if (which uv); then
uv_cache_dir="${CNB_LAYERS_DIR}/uv_cache"
ls -la /layers
cat /layers/*.toml
uv_cache_layer="/layers/paketo-buildpacks_python-package-managers-run/uv-env-cache"
cp -r "${uv_cache_layer}" "$uv_cache_dir"
chmod -R go+w "${uv_cache_dir}"
cat >>"${execd_dir}"/setup.sh <<EOL
cp -ras --update=none "${uv_cache_dir}" "\${RENKU_MOUNT_DIR}/.uv_cache"
export UV_CACHE_DIR="\${RENKU_MOUNT_DIR}/.uv_cache"
if !(grep "UV_CACHE_DIR" \${HOME}/.bashrc); then
printf "export UV_CACHE_DIR=\${RENKU_MOUNT_DIR}/.uv_cache\n" >> \${HOME}/.bashrc
fi
EOL
cat >"${uv_cache_dir}.toml"<<EOL
[types]
launch = true
[metadata]
description = "set uv cache for in session use"
version = "0.0.6"
EOL
fi
chmod +x "${execd_dir}"/setup.sh
echo "Added launch script to ${execd_dir}/setup.sh"
cat >"${layer_dir}".toml <<EOL
[types]
launch = true
[metadata]
description = "set dependency management for run sessions"
version = "0.0.6"
EOL
ls -la "${CNB_LAYERS_DIR}"
cat "${CNB_LAYERS_DIR}"/*toml