Re: git: e2650af157bc - main - Make CPU_SET macros compliant with other implementations

From: Stefan Esser <se_at_freebsd.org>
Date: Sun, 02 Jan 2022 21:45:14 UTC
Am 02.01.22 um 20:51 schrieb Antoine Brodin:
> Hi,
> 
> It seems that the 2 main ports failing are math/py-numpy (503 ports
> skipped) and sysutils/slurm-wlm (232 ports skipped)

Hi Antoine,

thank you for the information!

> Failure logs:
> http://beefy18.nyi.freebsd.org/data/main-amd64-default/pe2d17ded99d5_s5169832c96/logs/errors/py38-numpy-1.20.3,1.log

Python 3.8.12 (default, Dec 31 2021, 10:50:47)
>>> import os
>>> os.sched_getaffinity(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 34] Result too large

This is a Python interpreter problem: it seems that the wrapper
for the sched_getaffinity() function that has been introduced by
kib in <sched.h> is buggy.

As a work-around I have added a patch to comment out the
os.sched_getaffinity(0) call (which used to cause an Attribute
error that was caught by try/except, before).

See ports commit 507c189b2876.

> http://beefy18.nyi.freebsd.org/data/main-amd64-default/pe2d17ded99d5_s5169832c96/logs/errors/slurm-wlm-20.02.7.log

This is easily fixed with this patch:

--- src/plugins/task/affinity/affinity.c.orig	2021-05-12 20:23:20 UTC
+++ src/plugins/task/affinity/affinity.c
@@ -297,7 +297,7 @@ void reset_cpuset(cpu_set_t *new_mask, cpu_set_t *cur_
 	if (slurm_getaffinity(1, sizeof(full_mask), &full_mask)) {
 		/* Try to get full CPU mask from process init */
 		CPU_ZERO(&full_mask);
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) && !defined(CPU_ALLOC)
 		CPU_OR(&full_mask, cur_mask);
 #else
 		CPU_OR(&full_mask, &full_mask, cur_mask);

This effectively removes the conditional compilation that was
required due to the different CPU_OR signature.

BUT: There are many other build issues in this port, that do not
depend on the CPU_SET macros.

Since the build succeeds on -STABLE, there must be other changes
in the build configuration on -CURRENT, which lead to #include of
Linux specific headers and try to use pushd/popd in /bin/sh (under
the assumption of Bash installed as /bin/sh).

I'll look into these issues, but they must be somewhere in the
build system, not the sources being compiled.

I'm sure that the patch above is required, but I'm not going to
commit it right now, since I want to understand the other build
issues first.

Regards, STefan