Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Drewery <bryan@shatow.net>2022-11-04 17:32:09 +0300
committerBryan Drewery <bryan@shatow.net>2022-11-04 17:33:23 +0300
commit241ab13407e10ea6db5b464fba04e5a568f96f17 (patch)
tree7c47ab785d8c4f81aadafe6695340e2919330ef7
parent3588824845fdab1221291592562f0bd4030c73aa (diff)
Add MAX_MEMORY_pkgname support.
Fixes #1016
-rw-r--r--src/etc/poudriere.conf.sample2
-rwxr-xr-xsrc/share/poudriere/common.sh17
-rwxr-xr-xsrc/share/poudriere/testport.sh4
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