sysconf returns a long which is an i32 on ILP32 architectures. Add a cast which is a noop on LP64 architectures; the overflow of an u32 in this check can't happen on ILP32 anyway.
Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/bat/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- Makefile 11 Sep 2021 07:36:14 -0000 1.5 +++ Makefile 13 Sep 2021 20:11:34 -0000 @@ -1,19 +1,11 @@ # $OpenBSD: Makefile,v 1.5 2021/09/11 07:36:14 semarie Exp $ -# building sys-info fails -# error[E0308]: mismatched types -# --> /pobj/bat-0.18.2/bat-0.18.2/modcargo-crates/sys-info-0.9.0/lib.rs:542:29 -# | -# 542 | if ret < 1 || ret > std::u32::MAX as i64 { -# | ^^^^^^^^^^^^^^^^^^^^ expected `i32`, found `i64` - -ONLY_FOR_ARCHS = ${LP64_ARCHS} - COMMENT = cat(1) clone with wings GH_ACCOUNT = sharkdp GH_PROJECT = bat GH_TAGNAME = v0.18.3 +REVISION = 0 CATEGORIES = sysutils @@ -29,6 +21,7 @@ WANTLIB += c c++abi git2 m onig pthread CONFIGURE_STYLE = cargo SEPARATE_BUILD = Yes +PATCHORIG = .openbsd.orig LIB_DEPENDS += devel/libgit2/libgit2 \ textproc/oniguruma Index: patches/patch-modcargo-crates_sys-info-0_9_0_lib_rs =================================================================== RCS file: patches/patch-modcargo-crates_sys-info-0_9_0_lib_rs diff -N patches/patch-modcargo-crates_sys-info-0_9_0_lib_rs --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modcargo-crates_sys-info-0_9_0_lib_rs 13 Sep 2021 20:11:34 -0000 @@ -0,0 +1,16 @@ +$OpenBSD$ + +Fix build on ILP32 architectures. + +Index: modcargo-crates/sys-info-0.9.0/lib.rs +--- modcargo-crates/sys-info-0.9.0/lib.rs.orig ++++ modcargo-crates/sys-info-0.9.0/lib.rs +@@ -539,7 +539,7 @@ pub fn cpu_num() -> Result<u32, Error> { + #[cfg(any(target_os = "solaris", target_os = "illumos", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd"))] + { + let ret = unsafe { libc::sysconf(libc::_SC_NPROCESSORS_ONLN) }; +- if ret < 1 || ret > std::u32::MAX as i64 { ++ if ret < 1 || ret as i64 > std::u32::MAX as i64 { + Err(Error::IO(io::Error::last_os_error())) + } else { + Ok(ret as u32)