Re: git: e2650af157bc - main - Make CPU_SET macros compliant with other implementations
- Reply: Konstantin Belousov : "Re: git: e2650af157bc - main - Make CPU_SET macros compliant with other implementations"
- Reply: Stefan Esser : "Re: git: e2650af157bc - main - Make CPU_SET macros compliant with other implementations"
- In reply to: Antoine Brodin : "Re: git: e2650af157bc - main - Make CPU_SET macros compliant with other implementations"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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