From: Jeremie Courreges-Anglas Subject: Re: AppStream: replace HW_PHYSMEM (obsolete) with HW_PHYSMEM64 To: Rafael Sadowski Cc: ports@openbsd.org, Antoine Jacoutot Date: Sun, 28 Dec 2025 21:02:39 +0100 On Sun, Dec 28, 2025 at 07:47:41PM +0100, Rafael Sadowski wrote: > On Sun Dec 28, 2025 at 06:09:43PM +0100, Jeremie Courreges-Anglas wrote: > > On Sun, Dec 28, 2025 at 05:26:49PM +0100, Rafael Sadowski wrote: > > > Replace HW_PHYSMEM (deprecated) with HW_PHYSMEM64. This code also > > > works on Free and NetBSD. > > > > FreeBSD doesn't have HW_PHYSMEM64. Also its HW_PHYSMEM uses a long > > instead of an int, so the current appstream code is only correct-ish > > on FreeBSD. > > This is a trap, however, if one does not look closely: > https://man.freebsd.org/cgi/man.cgi?query=sysctl&sektion=7&manpath=NetBSD+8.0 FreeBSD's HW_PHYSMEM divergence is indeed error-prone. But the fact that HW_PHYSMEM remains on NetBSD and OpenBSD also is error-prone. It's another case of dubious divergence. But I'm not sure what you mean by pointing at the NetBSD manpage. :) > > > OK? > > > > On OpenBSD and NetBSD HW_PHYSMEM wants an int and HW_PHYSMEM64 wants > > an int64_t so after the patch the code would be incorrect on 32 bits > > archs. > > > > Thanks for the input, what about this? LGTM and compile-tested, ok jca@ > diff --git a/devel/appstream/Makefile b/devel/appstream/Makefile > index bc8aadbd293..8e6e334d95a 100644 > --- a/devel/appstream/Makefile > +++ b/devel/appstream/Makefile > @@ -14,8 +14,8 @@ DISTNAME= AppStream-${V} > EXTRACT_SUFX= .tar.xz > PKGNAME-main= ${DISTNAME:L} > PKGNAME-qt6= appstream-qt6-${V} > -REVISION-main= 0 > -REVISION-qt6= 0 > +REVISION-main= 1 > +REVISION-qt6= 1 > > SHARED_LIBS += appstream 1.2 # 1.1.1 > SHARED_LIBS += appstream-compose 1.1 # 1.1.1 > diff --git a/devel/appstream/patches/patch-src_as-system-info_c b/devel/appstream/patches/patch-src_as-system-info_c > index 87ab6781782..da0fa9338ee 100644 > --- a/devel/appstream/patches/patch-src_as-system-info_c > +++ b/devel/appstream/patches/patch-src_as-system-info_c > @@ -12,12 +12,22 @@ Index: src/as-system-info.c > #include > #include > #elif defined(__GNU__) > -@@ -476,7 +476,7 @@ as_get_physical_memory_total (void) > +@@ -476,11 +476,15 @@ as_get_physical_memory_total (void) > if (si.mem_unit > 0) > return (si.totalram * si.mem_unit) / MB_IN_BYTES; > return 0; > -#elif defined(__FreeBSD__) || defined(__NetBSD__) > +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) > ++#if defined(__NetBSD__) || defined(__OpenBSD__) > ++ int64_t physmem; > ++ int mib[2] = { CTL_HW, HW_PHYSMEM64 }; > ++#elif defined(__FreeBSD__) > unsigned long physmem; > - size_t len = sizeof (physmem); > +- size_t len = sizeof (physmem); > int mib[2] = { CTL_HW, HW_PHYSMEM }; > +- > ++#endif > ++ size_t len = sizeof (physmem); > + if (sysctl (mib, 2, &physmem, &len, NULL, 0) == -1) { > + g_warning ("Unable to determine physical memory size: %s", g_strerror (errno)); > + return 0; > -- jca