From: Pino Toscano <pino@debian.org>
Date: Tue, 2 Jun 2026 21:06:36 +0800
Subject: Fix build problems on hurd-i386

Forwarded: partially
Last-Update: 2018-10-24

This patch allows Open MPI to build on Debian GNU/HURD.

Also, the memory:linux MCA component is disabled, since its use of POSIX API
in malloc hooks called very early at startup causes troubles.

Also changes by Samuel Thibault <sthibault@debian.org>
See bugs.debian.org/846965
---
 3rd-party/romio341/mpl/src/str/mpl_str.c | 5 +++++
 ompi/include/ompi_config.h               | 4 ++++
 ompi/mca/fbtl/posix/fbtl_posix_preadv.c  | 4 ++++
 ompi/mca/fbtl/posix/fbtl_posix_pwritev.c | 4 ++++
 opal/mca/base/mca_base_var.c             | 8 ++++++++
 5 files changed, 25 insertions(+)

diff --git a/3rd-party/romio341/mpl/src/str/mpl_str.c b/3rd-party/romio341/mpl/src/str/mpl_str.c
index 0704b22..fd151eb 100644
--- a/3rd-party/romio341/mpl/src/str/mpl_str.c
+++ b/3rd-party/romio341/mpl/src/str/mpl_str.c
@@ -18,6 +18,11 @@
 #include <sys/param.h>
 #endif
 
+/* Non-linux systems like hurd might not define PATH_MAX in param.h */
+#ifndef PATH_MAX
+#define PATH_MAX        4096
+#endif
+
 #ifdef MPL_HAVE_TIME_H
 #include <time.h>
 #endif
diff --git a/ompi/include/ompi_config.h b/ompi/include/ompi_config.h
index b8b5ad3..fbb244b 100644
--- a/ompi/include/ompi_config.h
+++ b/ompi/include/ompi_config.h
@@ -28,6 +28,10 @@
 
 #include "opal_config.h"
 
+#ifndef PATH_MAX /* Hurd */
+#define PATH_MAX 65535
+#endif
+
 #define OMPI_IDENT_STRING OPAL_IDENT_STRING
 
 /***********************************************************************
diff --git a/ompi/mca/fbtl/posix/fbtl_posix_preadv.c b/ompi/mca/fbtl/posix/fbtl_posix_preadv.c
index fcb94ec..459d25d 100644
--- a/ompi/mca/fbtl/posix/fbtl_posix_preadv.c
+++ b/ompi/mca/fbtl/posix/fbtl_posix_preadv.c
@@ -39,6 +39,10 @@ static ssize_t mca_fbtl_posix_preadv_generic (ompio_file_t *fh, struct flock *lo
 static ssize_t mca_fbtl_posix_preadv_single (ompio_file_t *fh, struct flock *lock, int *lock_counter);
 
 
+#ifndef IOV_MAX
+#define IOV_MAX 1024
+#endif
+
 ssize_t mca_fbtl_posix_preadv (ompio_file_t *fh )
 {
     ssize_t bytes_read=0;
diff --git a/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c b/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c
index 9f43fee..2fcb752 100644
--- a/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c
+++ b/ompi/mca/fbtl/posix/fbtl_posix_pwritev.c
@@ -37,6 +37,10 @@ static ssize_t mca_fbtl_posix_pwritev_datasieving (ompio_file_t *fh, struct floc
 static ssize_t mca_fbtl_posix_pwritev_generic (ompio_file_t *fh, struct flock *lock, int *lock_counter );
 static ssize_t mca_fbtl_posix_pwritev_single (ompio_file_t *fh, struct flock *lock, int *lock_counter );
 
+#ifndef IOV_MAX
+#define IOV_MAX 1024
+#endif
+
 ssize_t  mca_fbtl_posix_pwritev(ompio_file_t *fh )
 {
     ssize_t bytes_written=0;
diff --git a/opal/mca/base/mca_base_var.c b/opal/mca/base/mca_base_var.c
index b9860c6..a956c60 100644
--- a/opal/mca/base/mca_base_var.c
+++ b/opal/mca/base/mca_base_var.c
@@ -61,6 +61,14 @@
 #include "opal/util/printf.h"
 #include "opal/util/show_help.h"
 
+#ifndef MAXPATHLEN /* Hurd */
+#define MAXPATHLEN 65535
+#endif
+
+#ifndef PATH_MAX  /* Hurd */
+#define PATH_MAX 65535
+#endif
+
 /*
  * local variables
  */
