commit:     8c77c5ad0a0785cc8745bf6438e06c43e98a0e2f
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 19 20:13:55 2025 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Tue Dec 23 07:53:14 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8c77c5ad

check-reqs.eclass: properly extract memory and swap for Darwin and Solaris

Use the proper methods on Darwin and Solaris hosts to get available
memory and available swap in kibibytes.

Closes: https://bugs.gentoo.org/404207
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 eclass/check-reqs.eclass | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/eclass/check-reqs.eclass b/eclass/check-reqs.eclass
index 11eec694ef04..6084c25c3167 100644
--- a/eclass/check-reqs.eclass
+++ b/eclass/check-reqs.eclass
@@ -333,7 +333,28 @@ _check-reqs_memory() {
        if [[ -r /proc/meminfo ]] ; then
                actual_memory=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
                actual_swap=$(awk '/SwapTotal/ { print $2 }' /proc/meminfo)
+       elif [[ ${CBUILD:-${CHOST}} == *-darwin* ]] ; then
+               # bug #404207
+               actual_memory=$(sysctl -n hw.memsize 2>/dev/null)
+               [[ $? -eq 0 ]] && actual_memory=$((actual_memory / 1024))
+               actual_swap=$(sysctl -n vm.swapusage 2>/dev/null)
+               if [[ $? -eq 0 ]] ; then
+                       actual_swap=$(awk '{
+                               split($3, v, 'M', s); print int(v[0] * 1024)
+                       }' <<<"${actual_swap}")
+               fi
+       elif [[ ${CBUILD:-${CHOST}} == *-solaris* ]] ; then
+               actual_memory=$(prtconf 2>/dev/null | grep Memory)
+               if [[ $? -eq 0 ]] ; then
+                       actual_memory=$(awk '{
+                               print int($3 * 1024)
+                       }' <<<"${actual_memory}")
+               fi
+               actual_swap=$(swap -s 2>/dev/null)
+               [[ $? -eq 0 ]] && actual_swap=$(
+                       sed -n 's/^.*, \([0-9]\+\)k available.*$/\1/p' 
<<<"${actual_swap}")
        else
+               # FreeBSD
                actual_memory=$(sysctl hw.physmem 2>/dev/null)
                [[ $? -eq 0 ]] && actual_memory=$(echo "${actual_memory}" \
                        | sed -e 's/^[^:=]*[:=][[:space:]]*//')

Reply via email to