diff options
author | Bryan Drewery <bryan@shatow.net> | 2022-11-04 17:32:09 +0300 |
---|---|---|
committer | Bryan Drewery <bryan@shatow.net> | 2022-11-04 17:33:23 +0300 |
commit | 241ab13407e10ea6db5b464fba04e5a568f96f17 (patch) | |
tree | 7c47ab785d8c4f81aadafe6695340e2919330ef7 | |
parent | 3588824845fdab1221291592562f0bd4030c73aa (diff) |
Add MAX_MEMORY_pkgname support.
Fixes #1016
-rw-r--r-- | src/etc/poudriere.conf.sample | 2 | ||||
-rwxr-xr-x | src/share/poudriere/common.sh | 17 | ||||
-rwxr-xr-x | src/share/poudriere/testport.sh | 4 |
3 files changed, 18 insertions, 5 deletions
diff --git a/src/etc/poudriere.conf.sample b/src/etc/poudriere.conf.sample index 4f6b2884..8e87d869 100644 --- a/src/etc/poudriere.conf.sample +++ b/src/etc/poudriere.conf.sample @@ -73,6 +73,8 @@ USE_TMPFS=yes # How much memory to limit jail processes to for *each builder* # in GiB (default: none) +# This can also be set per PKGBASE, such as MAX_MEMORY_rust=20. +# Package names with hyphens (-) should be replaced with underscores (_). #MAX_MEMORY=8 # How many file descriptors to limit each jail process to (default: 1024) diff --git a/src/share/poudriere/common.sh b/src/share/poudriere/common.sh index 2a736ceb..f2a5a83b 100755 --- a/src/share/poudriere/common.sh +++ b/src/share/poudriere/common.sh @@ -649,6 +649,7 @@ injail() { injail_tty() { local name + local MAX_MEMORY_BYTES if [ "${DISALLOW_NETWORKING}" = "yes" ]; then local JNETNAME= @@ -657,6 +658,10 @@ injail_tty() { _my_name name [ -n "${name}" ] || err 1 "No jail setup" if [ ${JEXEC_LIMITS:-0} -eq 1 ]; then + unset MAX_MEMORY_BYTES + if [ -n "${MAX_MEMORY}" ]; then + MAX_MEMORY_BYTES="$((MAX_MEMORY * 1024 * 1024 * 1024))" + fi jexec -U ${JUSER:-root} ${name}${JNETNAME:+-${JNETNAME}} \ ${JEXEC_LIMITS+/usr/bin/limits} \ ${MAX_MEMORY_BYTES:+-v ${MAX_MEMORY_BYTES}} \ @@ -670,7 +675,12 @@ injail_tty() { jstart() { local name network + local MAX_MEMORY_BYTES + unset MAX_MEMORY_BYTES + if [ -n "${MAX_MEMORY}" ]; then + MAX_MEMORY_BYTES="$((MAX_MEMORY * 1024 * 1024 * 1024))" + fi network="${localipargs}" if [ "${RESTRICT_NETWORKING}" != "yes" ]; then @@ -5188,9 +5198,11 @@ build_pkg() { _gsub_var_name "${pkgname%-*}" pkgname_varname eval "MAX_FILES=\${MAX_FILES_${pkgname_varname}:-${DEFAULT_MAX_FILES}}" - if [ -n "${MAX_MEMORY_BYTES}" -o -n "${MAX_FILES}" ]; then + eval "MAX_MEMORY=\${MAX_MEMORY_${pkgname_varname}:-${MAX_MEMORY:-}}" + if [ -n "${MAX_MEMORY}" -o -n "${MAX_FILES}" ]; then JEXEC_LIMITS=1 fi + unset pkgname_varname MNT_DATADIR="${mnt}/${DATADIR_NAME}" add_relpath_var MNT_DATADIR cd "${MNT_DATADIR}" @@ -9066,9 +9078,6 @@ INTERACTIVE_MODE=0 : ${LC_COLLATE:=C} export LC_COLLATE -if [ -n "${MAX_MEMORY}" ]; then - MAX_MEMORY_BYTES="$((MAX_MEMORY * 1024 * 1024 * 1024))" -fi : ${MAX_FILES:=1024} : ${DEFAULT_MAX_FILES:=${MAX_FILES}} : ${DEP_FATAL_ERROR_FILE:=dep_fatal_error} diff --git a/src/share/poudriere/testport.sh b/src/share/poudriere/testport.sh index 97baaf08..ef44e923 100755 --- a/src/share/poudriere/testport.sh +++ b/src/share/poudriere/testport.sh @@ -317,9 +317,11 @@ fi sed -i '' '/DISABLE_MAKE_JOBS=poudriere/d' ${MASTERMNT}/etc/make.conf _gsub_var_name "${PKGNAME%-*}" PKGNAME_VARNAME eval "MAX_FILES=\${MAX_FILES_${PKGNAME_VARNAME}:-${DEFAULT_MAX_FILES}}" -if [ -n "${MAX_MEMORY_BYTES}" -o -n "${MAX_FILES}" ]; then +eval "MAX_MEMORY=\${MAX_MEMORY_${PKGNAME_VARNAME}:-${MAX_MEMORY:-}}" +if [ -n "${MAX_MEMORY}" -o -n "${MAX_FILES}" ]; then JEXEC_LIMITS=1 fi +unset PKGNAME_VARNAME log_start "${PKGNAME}" 1 buildlog_start "${PKGNAME}" "${ORIGINSPEC}" ret=0 |