Skip to content

Commit

Permalink
check available disk space in sh installers (#751)
Browse files Browse the repository at this point in the history
* check available disk space in sh installers

* add news

* str this int

* use kb everywhere

* satisfy shellcheck
  • Loading branch information
jaimergp committed Feb 6, 2024
1 parent d934f13 commit b74b31f
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
9 changes: 9 additions & 0 deletions constructor/header.sh
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,15 @@ if ! mkdir -p "$PREFIX"; then
exit 1
fi

total_installation_size_kb="__TOTAL_INSTALLATION_SIZE_KB__"
free_disk_space_bytes="$(df -Pk "$PREFIX" | tail -n 1 | awk '{print $4}')"
free_disk_space_kb="$((free_disk_space_bytes / 1024))"
free_disk_space_kb_with_buffer="$((free_disk_space_bytes - 100 * 1024))" # add 100MB of buffer
if [ "$free_disk_space_kb_with_buffer" -lt "$total_installation_size_kb" ]; then
printf "ERROR: Not enough free disk space: %s < %s\\n" "$free_disk_space_kb_with_buffer" "$total_installation_size_kb" >&2
exit 1
fi

# pwd does not convert two leading slashes to one
# https://github.com/conda/constructor/issues/284
PREFIX=$(cd "$PREFIX"; pwd | sed 's@//@/@')
Expand Down
2 changes: 2 additions & 0 deletions constructor/shar.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from .preconda import write_files as preconda_write_files
from .utils import (
add_condarc,
approx_size_kb,
filename_dist,
fill_template,
get_final_channels,
Expand Down Expand Up @@ -90,6 +91,7 @@ def get_header(conda_exec, tarball, info):
'pycache': '__pycache__',
'SHORTCUTS': shortcuts_flags(info),
'REGISTER_ENVS': str(info.get("register_envs", True)).lower(),
'TOTAL_INSTALLATION_SIZE_KB': str(approx_size_kb(info, "total")),
}
if has_license:
replace['LICENSE'] = read_ascii_only(info['license_file'])
Expand Down
19 changes: 19 additions & 0 deletions news/751-disk-usage-sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### Enhancements

* In SH installers, error early if available disk space for chosen installation path is insufficient. (#749 via #751)

### Bug fixes

* <news item>

### Deprecations

* <news item>

### Docs

* <news item>

### Other

* <news item>

0 comments on commit b74b31f

Please sign in to comment.