On 4/9/25 14:07, Tomas Vondra wrote:
> ...
> 
> OK, here are two patches, where 0001 adds the missingdeps check to the
> Debian meson build. It just adds that to the build script.
> 
> 0002 leaves the NUMA stuff in src/port (i.e. it's no longer moved to
> src/backend/port). It still needs to include c.h because of PGDLLIMPORT,
> but I think that's fine.
> 

Forgot to attach the patches ...

-- 
Tomas Vondra
From a5d2080e8eb966698ced88364fc7beebea8a226a Mon Sep 17 00:00:00 2001
From: Tomas Vondra <to...@vondra.me>
Date: Wed, 9 Apr 2025 13:29:31 +0200
Subject: [PATCH 1/2] adjust ci

---
 .cirrus.tasks.yml | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
index 98f3455eb72..94ded37e29a 100644
--- a/.cirrus.tasks.yml
+++ b/.cirrus.tasks.yml
@@ -528,8 +528,17 @@ task:
             build-32
         EOF
 
-      build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}'
-      build_32_script: su postgres -c 'ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET}'
+      build_script: |
+        su postgres <<-EOF
+          ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}
+          ninja -C build -t missingdeps
+        EOF
+
+      build_32_script: |
+        su postgres <<-EOF
+          ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET}
+          ninja -C build -t missingdeps
+        EOF
 
       upload_caches: ccache
 
-- 
2.49.0

From 60b71e953d80150e6b596937a1f8fcd1af510798 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <to...@vondra.me>
Date: Tue, 8 Apr 2025 23:31:29 +0200
Subject: [PATCH 2/2] fixup

---
 contrib/pg_buffercache/pg_buffercache_pages.c |  2 +-
 src/backend/storage/ipc/shmem.c               | 33 +++++++++++++++-
 src/include/port/pg_numa.h                    |  3 --
 src/include/storage/shmem.h                   |  2 +
 src/port/pg_numa.c                            | 38 +------------------
 5 files changed, 36 insertions(+), 42 deletions(-)

diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c
index c9ceba604b1..e1701bd56ef 100644
--- a/contrib/pg_buffercache/pg_buffercache_pages.c
+++ b/contrib/pg_buffercache/pg_buffercache_pages.c
@@ -343,7 +343,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
 		 * This information is needed before calling move_pages() for NUMA
 		 * node id inquiry.
 		 */
-		os_page_size = pg_numa_get_pagesize();
+		os_page_size = pg_get_shmem_pagesize();
 
 		/*
 		 * The pages and block size is expected to be 2^k, so one divides the
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c
index e10b380e5c7..0903eb50f54 100644
--- a/src/backend/storage/ipc/shmem.c
+++ b/src/backend/storage/ipc/shmem.c
@@ -93,6 +93,8 @@ static HTAB *ShmemIndex = NULL; /* primary index hashtable for shmem */
 /* To get reliable results for NUMA inquiry we need to "touch pages" once */
 static bool firstNumaTouch = true;
 
+Datum		pg_numa_available(PG_FUNCTION_ARGS);
+
 /*
  *	InitShmemAccess() --- set up basic pointers to shared memory.
  */
@@ -615,7 +617,7 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS)
 	 * This information is needed before calling move_pages() for NUMA memory
 	 * node inquiry.
 	 */
-	os_page_size = pg_numa_get_pagesize();
+	os_page_size = pg_get_shmem_pagesize();
 
 	/*
 	 * Allocate memory for page pointers and status based on total shared
@@ -727,3 +729,32 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS)
 
 	return (Datum) 0;
 }
+
+/* This should be used only after the server is started */
+Size
+pg_get_shmem_pagesize(void)
+{
+	Size		os_page_size;
+#ifdef WIN32
+	SYSTEM_INFO sysinfo;
+
+	GetSystemInfo(&sysinfo);
+	os_page_size = sysinfo.dwPageSize;
+#else
+	os_page_size = sysconf(_SC_PAGESIZE);
+#endif
+
+	Assert(IsUnderPostmaster);
+	Assert(huge_pages_status != HUGE_PAGES_UNKNOWN);
+
+	if (huge_pages_status == HUGE_PAGES_ON)
+		GetHugePageSize(&os_page_size, NULL);
+
+	return os_page_size;
+}
+
+Datum
+pg_numa_available(PG_FUNCTION_ARGS)
+{
+	PG_RETURN_BOOL(pg_numa_init() != -1);
+}
diff --git a/src/include/port/pg_numa.h b/src/include/port/pg_numa.h
index 7e990d9f776..40f1d324dcf 100644
--- a/src/include/port/pg_numa.h
+++ b/src/include/port/pg_numa.h
@@ -14,12 +14,9 @@
 #ifndef PG_NUMA_H
 #define PG_NUMA_H
 
-#include "fmgr.h"
-
 extern PGDLLIMPORT int pg_numa_init(void);
 extern PGDLLIMPORT int pg_numa_query_pages(int pid, unsigned long count, void **pages, int *status);
 extern PGDLLIMPORT int pg_numa_get_max_node(void);
-extern PGDLLIMPORT Size pg_numa_get_pagesize(void);
 
 #ifdef USE_LIBNUMA
 
diff --git a/src/include/storage/shmem.h b/src/include/storage/shmem.h
index 904a336b851..c1f668ded95 100644
--- a/src/include/storage/shmem.h
+++ b/src/include/storage/shmem.h
@@ -41,6 +41,8 @@ extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr);
 extern Size add_size(Size s1, Size s2);
 extern Size mul_size(Size s1, Size s2);
 
+extern PGDLLIMPORT Size pg_get_shmem_pagesize(void);
+
 /* ipci.c */
 extern void RequestAddinShmemSpace(Size size);
 
diff --git a/src/port/pg_numa.c b/src/port/pg_numa.c
index 5e2523cf798..63dff799436 100644
--- a/src/port/pg_numa.c
+++ b/src/port/pg_numa.c
@@ -13,17 +13,14 @@
  *-------------------------------------------------------------------------
  */
 
-#include "postgres.h"
+#include "c.h"
 #include <unistd.h>
 
 #ifdef WIN32
 #include <windows.h>
 #endif
 
-#include "fmgr.h"
-#include "miscadmin.h"
 #include "port/pg_numa.h"
-#include "storage/pg_shmem.h"
 
 /*
  * At this point we provide support only for Linux thanks to libnuma, but in
@@ -36,8 +33,6 @@
 #include <numa.h>
 #include <numaif.h>
 
-Datum		pg_numa_available(PG_FUNCTION_ARGS);
-
 /* libnuma requires initialization as per numa(3) on Linux */
 int
 pg_numa_init(void)
@@ -66,8 +61,6 @@ pg_numa_get_max_node(void)
 
 #else
 
-Datum		pg_numa_available(PG_FUNCTION_ARGS);
-
 /* Empty wrappers */
 int
 pg_numa_init(void)
@@ -89,32 +82,3 @@ pg_numa_get_max_node(void)
 }
 
 #endif
-
-Datum
-pg_numa_available(PG_FUNCTION_ARGS)
-{
-	PG_RETURN_BOOL(pg_numa_init() != -1);
-}
-
-/* This should be used only after the server is started */
-Size
-pg_numa_get_pagesize(void)
-{
-	Size		os_page_size;
-#ifdef WIN32
-	SYSTEM_INFO sysinfo;
-
-	GetSystemInfo(&sysinfo);
-	os_page_size = sysinfo.dwPageSize;
-#else
-	os_page_size = sysconf(_SC_PAGESIZE);
-#endif
-
-	Assert(IsUnderPostmaster);
-	Assert(huge_pages_status != HUGE_PAGES_UNKNOWN);
-
-	if (huge_pages_status == HUGE_PAGES_ON)
-		GetHugePageSize(&os_page_size, NULL);
-
-	return os_page_size;
-}
-- 
2.49.0

Reply via email to