git: 677f2a7b833e - 2022Q1 - Make multiple ports build with new CPU_* macros

From: Stefan Eßer <se_at_FreeBSD.org>
Date: Fri, 14 Jan 2022 20:35:48 UTC
The branch 2022Q1 has been updated by se:

URL: https://cgit.FreeBSD.org/ports/commit/?id=677f2a7b833e101623186c8ccfb9d812f0cd8ac4

commit 677f2a7b833e101623186c8ccfb9d812f0cd8ac4
Author:     Stefan Eßer <se@FreeBSD.org>
AuthorDate: 2022-01-02 22:02:21 +0000
Commit:     Stefan Eßer <se@FreeBSD.org>
CommitDate: 2022-01-14 20:32:23 +0000

    Make multiple ports build with new CPU_* macros
    
    Merge commits from main branch to 2022Q1 to allow the affected
    ports to build on 13-STABLE as of today, which has received the
    CPU_AND, CPU_ANDNOT, CPU_OR, and CPU_XOR macros from -CURRENT.
    
    sysutils/slurm-wlm: fix build on -CURRENT
    
    The CPU_OR macro has been made compatible with GLIBC on -CURRENT,
    the FreeBSD specific alternative is therefore no longer required.
    
    While here pass --disable-slurmrestd to prevent the auto-configure
    script from attempting to build slurmrestd if glib is found by
    auto-configure (it does not build on FreeBSD due to Linux specific
    headers and shell features provided by Bash but by the /bin/sh in
    FreeBSD).
    
    This port has numerous build issues when not building in a clean
    jail (i.e. on a system with a previous version installed or with
    other software that is detected by auto-configure).
    
    The port revision is not bumped since these changes do not modify
    the package that is generated.
    
    (cherry picked from commit addda1277abed746f93ad76aecc2a2e9bc97d033)
    
    net/dpdk-20.11: fix build on -CURRENT
    
    The CPU_SET macros in -CURRENT have been made compatible with GLIBC.
    A simple test for the new signature of CPU_AND, CPU_OR, ... is the
    existence of a CPU_ALLOC macro.
    
    (cherry picked from commit 1b13427e48ed448f68a7d67a694da31b2d57104d)
    
    net/dpdk: fix build on -CURRENT
    
    The CPU_SET macros in -CURRENT have been made compatible with GLIBC.
    A simple test for the new signature of CPU_AND, CPU_OR, ... is the
    existence of a CPU_ALLOC macro.
    
    (cherry picked from commit c3e19584524281d37fe92868e5c3582fcd7d7d28)
    
    benchmarks/stress-ng: fix build on -CURRENT
    
    The CPU_SET macros in -CURRENT have been made compatible with GLIBC.
    A simple test for the new signature of CPU_AND, CPU_OR, ... is the
    existence of a CPU_ALLOC macro.
    
    (cherry picked from commit 7dc5416497a6d04bb85c5ded6b4983fb46b199b4)
    
    net/haproxy: fix build on -CURRENT
    
    The CPU_SET macros in -CURRENT have been made compatible with GLIBC.
    A simple test for the new signature of CPU_AND, CPU_OR, ... is the
    existence of a CPU_ALLOC macro.
    
    (cherry picked from commit 2913605c79b25b88a4a21b3d93ec2ab11949eaaa)
    
    net/haproxy-devel: fix build on -CURRENT
    
    The CPU_SET macros in -CURRENT have been made compatible with GLIBC.
    A simple test for the new signature of CPU_AND, CPU_OR, ... is the
    existence of a CPU_ALLOC macro.
    
    (cherry picked from commit 91efb4d016bcb7953f00a022f6bfe49a84dc61ac)
    
    sysutils/turbostat: use CPU_* macros defined in -CURRENT
    
    (cherry picked from commit 6cc600ed7040ae0270d22f580c4778266d9bdbe4)
    
    Approved by:    portmgr (implicit)
---
 .../stress-ng/files/patch-stress-tlb-shootdown.c   |  9 +++--
 ...patch-lib_librte__eal_freebsd_include_rte__os.h | 41 +++++++++++++++++++++
 ...h-lib_librte__eal_freebsd_eal_include_rte__os.h | 42 +++++++++++++++++++---
 net/haproxy-devel/files/patch-src_cpuset.c         | 14 ++++++++
 net/haproxy/files/patch-src_cpuset.c               | 14 ++++++++
 sysutils/slurm-wlm/Makefile                        |  3 +-
 .../patch-src_plugins_task_affinity_affinity.c     | 11 ++++++
 7 files changed, 126 insertions(+), 8 deletions(-)

diff --git a/benchmarks/stress-ng/files/patch-stress-tlb-shootdown.c b/benchmarks/stress-ng/files/patch-stress-tlb-shootdown.c
index 0beb2950f2b2..d54609e2fc7f 100644
--- a/benchmarks/stress-ng/files/patch-stress-tlb-shootdown.c
+++ b/benchmarks/stress-ng/files/patch-stress-tlb-shootdown.c
@@ -1,11 +1,14 @@
---- stress-tlb-shootdown.c.orig	2021-12-28 15:45:13 UTC
+--- stress-tlb-shootdown.c.orig	2021-12-19 20:49:35 UTC
 +++ stress-tlb-shootdown.c
-@@ -64,7 +64,7 @@ static int stress_tlb_shootdown(const stress_args_t *a
+@@ -64,7 +64,11 @@ static int stress_tlb_shootdown(const stress_args_t *a
  		const int32_t max_cpus = stress_get_processors_configured();
  
  		CPU_ZERO(&proc_mask);
--		CPU_OR(&proc_mask, &proc_mask_initial, &proc_mask);
++#ifdef CPU_ALLOC
+ 		CPU_OR(&proc_mask, &proc_mask_initial, &proc_mask);
++#else
 +		CPU_OR(&proc_mask, &proc_mask_initial);
++#endif
  
  		tlb_procs = max_cpus;
  		if (tlb_procs > MAX_TLB_PROCS)
diff --git a/net/dpdk-20.11/files/patch-lib_librte__eal_freebsd_include_rte__os.h b/net/dpdk-20.11/files/patch-lib_librte__eal_freebsd_include_rte__os.h
new file mode 100644
index 000000000000..c48d4a55c9a2
--- /dev/null
+++ b/net/dpdk-20.11/files/patch-lib_librte__eal_freebsd_include_rte__os.h
@@ -0,0 +1,41 @@
+--- lib/librte_eal/freebsd/include/rte_os.h.orig	2021-03-08 17:40:08 UTC
++++ lib/librte_eal/freebsd/include/rte_os.h
+@@ -14,6 +14,28 @@
+ #include <pthread_np.h>
+ 
+ typedef cpuset_t rte_cpuset_t;
++
++/* FreeBSD 14 uses GLIBC compatible CPU_AND, CPU_OR, ... */
++#ifdef CPU_ALLOC
++
++#define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2)
++#define RTE_CPU_OR(dst, src1, src2) CPU_OR(dst, src1, src2)
++#define RTE_CPU_FILL(set) do \
++{ \
++	unsigned int i; \
++	CPU_ZERO(set); \
++	for (i = 0; i < CPU_SETSIZE; i++) \
++		CPU_SET(i, set); \
++} while (0)
++#define RTE_CPU_NOT(dst, src) do \
++{ \
++	cpu_set_t tmp; \
++	RTE_CPU_FILL(&tmp); \
++	CPU_XOR(dst, &tmp, src); \
++} while (0)
++
++#else
++
+ #define RTE_CPU_AND(dst, src1, src2) do \
+ { \
+ 	cpuset_t tmp; \
+@@ -47,6 +69,8 @@ typedef cpuset_t rte_cpuset_t;
+ 	CPU_ANDNOT(&tmp, src); \
+ 	CPU_COPY(&tmp, dst); \
+ } while (0)
+-#endif
++#endif /* CPU_NAND */
++
++#endif /* CPU_ALLOC */
+ 
+ #endif /* _RTE_OS_H_ */
diff --git a/net/dpdk/files/patch-lib_librte__eal_freebsd_eal_include_rte__os.h b/net/dpdk/files/patch-lib_librte__eal_freebsd_eal_include_rte__os.h
index ede8d170de6e..6e63d49836ac 100644
--- a/net/dpdk/files/patch-lib_librte__eal_freebsd_eal_include_rte__os.h
+++ b/net/dpdk/files/patch-lib_librte__eal_freebsd_eal_include_rte__os.h
@@ -1,6 +1,38 @@
---- lib/librte_eal/freebsd/eal/include/rte_os.h.orig	2020-01-03 12:22:03 UTC
+--- lib/librte_eal/freebsd/eal/include/rte_os.h.orig	2021-03-17 16:43:15 UTC
 +++ lib/librte_eal/freebsd/eal/include/rte_os.h
-@@ -29,6 +29,9 @@ typedef cpuset_t rte_cpuset_t;
+@@ -14,8 +14,30 @@
+ #include <pthread_np.h>
+ 
+ typedef cpuset_t rte_cpuset_t;
+-#define RTE_CPU_AND(dst, src1, src2) do \
++
++/* FreeBSD 14 uses GLIBC compatible CPU_AND, CPU_OR, ... */
++#ifdef CPU_ALLOC
++
++#define RTE_CPU_AND(dst, src1, src2) CPU_AND(dst, src1, src2)
++#define RTE_CPU_OR(dst, src1, src2) CPU_OR(dst, src1, src2)
++#define RTE_CPU_FILL(set) do \
+ { \
++	unsigned int i; \
++	CPU_ZERO(set); \
++	for (i = 0; i < CPU_SETSIZE; i++) \
++		CPU_SET(i, set); \
++} while (0)
++#define RTE_CPU_NOT(dst, src) do \
++{ \
++	cpu_set_t tmp; \
++	RTE_CPU_FILL(&tmp); \
++	CPU_XOR(dst, &tmp, src); \
++} while (0)
++
++#else
++
++#define RTE_CPU_AND(dst, src1, src2) do		\
++{ \
+ 	cpuset_t tmp; \
+ 	CPU_COPY(src1, &tmp); \
+ 	CPU_AND(&tmp, src2); \
+@@ -29,6 +51,9 @@ typedef cpuset_t rte_cpuset_t;
  	CPU_COPY(&tmp, dst); \
  } while (0)
  #define RTE_CPU_FILL(set) CPU_FILL(set)
@@ -10,7 +42,7 @@
  #define RTE_CPU_NOT(dst, src) do \
  { \
  	cpuset_t tmp; \
-@@ -36,5 +39,14 @@ typedef cpuset_t rte_cpuset_t;
+@@ -36,5 +61,16 @@ typedef cpuset_t rte_cpuset_t;
  	CPU_NAND(&tmp, src); \
  	CPU_COPY(&tmp, dst); \
  } while (0)
@@ -22,6 +54,8 @@
 +	CPU_ANDNOT(&tmp, src); \
 +	CPU_COPY(&tmp, dst); \
 +} while (0)
-+#endif
++#endif /* CPU_NAND */
++
++#endif /* CPU_ALLOC */
  
  #endif /* _RTE_OS_H_ */
diff --git a/net/haproxy-devel/files/patch-src_cpuset.c b/net/haproxy-devel/files/patch-src_cpuset.c
new file mode 100644
index 000000000000..42f04b37e6f6
--- /dev/null
+++ b/net/haproxy-devel/files/patch-src_cpuset.c
@@ -0,0 +1,14 @@
+--- src/cpuset.c.orig	2021-12-23 16:47:51 UTC
++++ src/cpuset.c
+@@ -53,7 +53,11 @@ void ha_cpuset_and(struct hap_cpuset *dst, const struc
+ 	CPU_AND(&dst->cpuset, &dst->cpuset, &src->cpuset);
+ 
+ #elif defined(CPUSET_USE_FREEBSD_CPUSET)
++#if defined(CPU_ALLOC)
++	CPU_AND(&dst->cpuset, &dst->cpuset, &src->cpuset);
++#else
+ 	CPU_AND(&dst->cpuset, &src->cpuset);
++#endif
+ 
+ #elif defined(CPUSET_USE_ULONG)
+ 	dst->cpuset &= src->cpuset;
diff --git a/net/haproxy/files/patch-src_cpuset.c b/net/haproxy/files/patch-src_cpuset.c
new file mode 100644
index 000000000000..42f04b37e6f6
--- /dev/null
+++ b/net/haproxy/files/patch-src_cpuset.c
@@ -0,0 +1,14 @@
+--- src/cpuset.c.orig	2021-12-23 16:47:51 UTC
++++ src/cpuset.c
+@@ -53,7 +53,11 @@ void ha_cpuset_and(struct hap_cpuset *dst, const struc
+ 	CPU_AND(&dst->cpuset, &dst->cpuset, &src->cpuset);
+ 
+ #elif defined(CPUSET_USE_FREEBSD_CPUSET)
++#if defined(CPU_ALLOC)
++	CPU_AND(&dst->cpuset, &dst->cpuset, &src->cpuset);
++#else
+ 	CPU_AND(&dst->cpuset, &src->cpuset);
++#endif
+ 
+ #elif defined(CPUSET_USE_ULONG)
+ 	dst->cpuset &= src->cpuset;
diff --git a/sysutils/slurm-wlm/Makefile b/sysutils/slurm-wlm/Makefile
index 517b38320bd3..f3dd6e9c9b11 100644
--- a/sysutils/slurm-wlm/Makefile
+++ b/sysutils/slurm-wlm/Makefile
@@ -77,7 +77,8 @@ RRD_CONFIGURE_WITH=	rrdtool
 # --docdir is non-functional
 # CONFIGURE_ARGS=	--docdir=${DOCSDIR}
 # FreeBSD Infiniband support is still experimental
-CONFIGURE_ARGS=	--without-ofed
+# slurmrestd does not build on FreeBSD
+CONFIGURE_ARGS=	--without-ofed --disable-slurmrestd
 DOCSDIR=	${PREFIX}/share/doc/${PORTNAME}-${DISTVERSION}
 
 CFLAGS+=	-I${WRKSRC}/slurm -I${LOCALBASE}/include -fcommon
diff --git a/sysutils/slurm-wlm/files/patch-src_plugins_task_affinity_affinity.c b/sysutils/slurm-wlm/files/patch-src_plugins_task_affinity_affinity.c
new file mode 100644
index 000000000000..cf09d539002c
--- /dev/null
+++ b/sysutils/slurm-wlm/files/patch-src_plugins_task_affinity_affinity.c
@@ -0,0 +1,11 @@
+--- 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);