From: Debian Open MPI Maintainers Date: Fri, 14 Nov 2014 16:57:11 +0000 (+0000) Subject: build_hurd X-Git-Tag: archive/raspbian/2.1.1-7+rpi1~1^2^2^2^2^2^2^2~11 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3bbe96b9805929c45cc15feb2e4fd4fe43c4654f;p=openmpi.git build_hurd Gbp-Pq: Name build_hurd --- diff --git a/ompi/runtime/ompi_mpi_abort.c b/ompi/runtime/ompi_mpi_abort.c index 766dd1b1..69bd8923 100644 --- a/ompi/runtime/ompi_mpi_abort.c +++ b/ompi/runtime/ompi_mpi_abort.c @@ -53,10 +53,11 @@ ompi_mpi_abort(struct ompi_communicator_t* comm, bool kill_remote_of_intercomm) { int count = 0, i; - char *msg, *host, hostname[MAXHOSTNAMELEN]; + char *msg, *host = NULL; pid_t pid = 0; orte_process_name_t *abort_procs; orte_std_cntr_t nabort_procs; + bool free_host = false; /* Protection for recursive invocation */ if (have_been_invoked) { @@ -70,8 +71,12 @@ ompi_mpi_abort(struct ompi_communicator_t* comm, if (orte_initialized) { host = orte_process_info.nodename; } else { - gethostname(hostname, sizeof(hostname)); - host = hostname; + size_t host_length = 128; + do { + host_length *= 2; + host = realloc(host, host_length); + } while ((gethostname(host, host_length) == -1) && (errno == ENAMETOOLONG)); + free_host = true; } pid = getpid(); diff --git a/ompi/runtime/ompi_mpi_finalize.c b/ompi/runtime/ompi_mpi_finalize.c index e65030cf..7365a763 100644 --- a/ompi/runtime/ompi_mpi_finalize.c +++ b/ompi/runtime/ompi_mpi_finalize.c @@ -101,13 +101,18 @@ int ompi_mpi_finalize(void) /* Note that if we're already finalized, we cannot raise an MPI exception. The best that we can do is write something to stderr. */ - char hostname[MAXHOSTNAMELEN]; + char *hostname = NULL; + size_t hostname_length = 128; pid_t pid = getpid(); - gethostname(hostname, sizeof(hostname)); + do { + hostname_length *= 2; + hostname = realloc(hostname, hostname_length); + } while ((gethostname(hostname, hostname_length) == -1) && (errno == ENAMETOOLONG)); orte_show_help("help-mpi-runtime.txt", "mpi_finalize:invoked_multiple_times", true, hostname, pid); + free(hostname); return MPI_ERR_OTHER; } diff --git a/opal/mca/base/mca_base_component_find.c b/opal/mca/base/mca_base_component_find.c index b2259011..4566a267 100644 --- a/opal/mca/base/mca_base_component_find.c +++ b/opal/mca/base/mca_base_component_find.c @@ -208,11 +208,16 @@ int mca_base_component_find(const char *directory, const char *type, } if (opal_list_get_end(found_components) == item) { - char h[MAXHOSTNAMELEN]; - gethostname(h, sizeof(h)); + char *h = NULL; + size_t h_length = 128; + do { + h_length *= 2; + h = realloc(h, h_length); + } while ((gethostname(h, h_length) == -1) && (errno == ENAMETOOLONG)); opal_show_help("help-mca-base.txt", "find-available:not-valid", true, h, type, requested_component_names[i]); + free(h); return OPAL_ERR_NOT_FOUND; } } diff --git a/opal/mca/base/mca_base_param.c b/opal/mca/base/mca_base_param.c index 2bcfa7bf..e98a2f59 100644 --- a/opal/mca/base/mca_base_param.c +++ b/opal/mca/base/mca_base_param.c @@ -186,8 +186,14 @@ int mca_base_param_recache_files(bool rel_path_search) home = (char*)opal_home_directory(); if(NULL == cwd) { +#if !defined(MAXPATHLEN) && defined(__GLIBC__) + cwd = get_current_dir_name(); + if( NULL == cwd) +#else cwd = (char *) malloc(sizeof(char) * MAXPATHLEN); - if( NULL == (cwd = getcwd(cwd, MAXPATHLEN) )) { + if( NULL == (cwd = getcwd(cwd, MAXPATHLEN) )) +#endif + { opal_output(0, "Error: Unable to get the current working directory\n"); cwd = strdup("."); } diff --git a/opal/mca/memory/linux/configure.m4 b/opal/mca/memory/linux/configure.m4 index 5adf3940..22a2e6db 100644 --- a/opal/mca/memory/linux/configure.m4 +++ b/opal/mca/memory/linux/configure.m4 @@ -58,6 +58,10 @@ AC_DEFUN([MCA_memory_linux_CONFIG],[ [memory_linux_ptmalloc2_happy=yes memory_linux_ummu_happy=no])]) + AS_IF([echo "$host_os" | grep '^gnu' >/dev/null 2>/dev/null], + [memory_linux_ptmalloc2_happy=no + memory_linux_ummu_happy=no]) + ###################################################################### # ptmalloc2 ###################################################################### diff --git a/opal/mca/pstat/darwin/configure.m4 b/opal/mca/pstat/darwin/configure.m4 index 51573f97..9c3328b5 100644 --- a/opal/mca/pstat/darwin/configure.m4 +++ b/opal/mca/pstat/darwin/configure.m4 @@ -23,9 +23,9 @@ # ----------------------------------------------------------- AC_DEFUN([MCA_pstat_darwin_CONFIG],[ OMPI_VAR_SCOPE_PUSH([paff_darwin_happy]) - # check to see if we have + # check to see if we have # as this is a Darwin-specific thing - AC_CHECK_HEADER([mach/mach_host.h], [paff_darwin_happy=yes], [paff_darwin_happy=no]) + AC_CHECK_HEADER([mach/clock.h], [paff_darwin_happy=yes], [paff_darwin_happy=no]) AS_IF([test "$paff_darwin_happy" = "yes"], [$1], [$2]) OMPI_VAR_SCOPE_POP diff --git a/opal/mca/shmem/mmap/shmem_mmap_module.c b/opal/mca/shmem/mmap/shmem_mmap_module.c index d8b4d23f..748ba40b 100644 --- a/opal/mca/shmem/mmap/shmem_mmap_module.c +++ b/opal/mca/shmem/mmap/shmem_mmap_module.c @@ -61,6 +61,10 @@ /* for tons of debug output: -mca shmem_base_verbose 70 */ +#ifndef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 256 +#endif + /* ////////////////////////////////////////////////////////////////////////// */ /*local functions */ /* local functions */ diff --git a/opal/mca/shmem/posix/shmem_posix_common_utils.h b/opal/mca/shmem/posix/shmem_posix_common_utils.h index e83a2bc7..d18c64c8 100644 --- a/opal/mca/shmem/posix/shmem_posix_common_utils.h +++ b/opal/mca/shmem/posix/shmem_posix_common_utils.h @@ -45,6 +45,10 @@ BEGIN_C_DECLS OPAL_DECLSPEC extern int shmem_posix_shm_open(char *posix_file_name_buff, size_t size); +#ifndef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 256 +#endif + END_C_DECLS #endif /* OPAL_SHMEM_POSIX_COMMON_UTILS_H */ diff --git a/opal/mca/shmem/sysv/shmem_sysv_module.c b/opal/mca/shmem/sysv/shmem_sysv_module.c index 240b459e..a8343415 100644 --- a/opal/mca/shmem/sysv/shmem_sysv_module.c +++ b/opal/mca/shmem/sysv/shmem_sysv_module.c @@ -65,6 +65,10 @@ /* for tons of debug output: -mca shmem_base_verbose 70 */ +#ifndef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 256 +#endif + /* ////////////////////////////////////////////////////////////////////////// */ /* local functions */ static int diff --git a/opal/mca/sysinfo/darwin/configure.m4 b/opal/mca/sysinfo/darwin/configure.m4 index 273f74e7..1695c752 100644 --- a/opal/mca/sysinfo/darwin/configure.m4 +++ b/opal/mca/sysinfo/darwin/configure.m4 @@ -12,9 +12,9 @@ # ----------------------------------------------------------- AC_DEFUN([MCA_sysinfo_darwin_CONFIG],[ OMPI_VAR_SCOPE_PUSH([sysinfo_darwin_happy]) - # check to see if we have + # check to see if we have # as this is a Darwin-specific thing - AC_CHECK_HEADER([mach/mach_host.h], [sysinfo_darwin_happy=yes], [sysinfo_darwin_happy=no]) + AC_CHECK_HEADER([mach/clock.h], [sysinfo_darwin_happy=yes], [sysinfo_darwin_happy=no]) AS_IF([test "$sysinfo_darwin_happy" = "yes"], [$1], [$2]) OMPI_VAR_SCOPE_POP diff --git a/opal/util/stacktrace.c b/opal/util/stacktrace.c index 7766bce1..54fb6dcc 100644 --- a/opal/util/stacktrace.c +++ b/opal/util/stacktrace.c @@ -437,8 +437,12 @@ int opal_util_register_stackhandlers (void) mca_base_param_lookup_string (param, &string_value); memset(&act, 0, sizeof(act)); +#ifdef SA_SIGINFO act.sa_sigaction = show_stackframe; act.sa_flags = SA_SIGINFO; +#else + act.sa_handler = show_stackframe_handler; +#endif #ifdef SA_ONESHOT act.sa_flags |= SA_ONESHOT; #else diff --git a/orte/mca/odls/base/odls_base_default_fns.c b/orte/mca/odls/base/odls_base_default_fns.c index 92b210e0..726e181c 100644 --- a/orte/mca/odls/base/odls_base_default_fns.c +++ b/orte/mca/odls/base/odls_base_default_fns.c @@ -1370,8 +1370,13 @@ int orte_odls_base_default_launch_local(orte_jobid_t job, orte_local_rank_t local_rank; orte_node_rank_t node_rank; char *pathenv = NULL, *mpiexec_pathenv = NULL; +#if !defined(MAXPATHLEN) && defined(__GLIBC__) + char *basedir=NULL; + char *dir=NULL; +#else char basedir[MAXPATHLEN]; char dir[MAXPATHLEN]; +#endif char **argvptr; char *full_search; char **argvsav=NULL; @@ -1388,7 +1393,11 @@ int orte_odls_base_default_launch_local(orte_jobid_t job, * bouncing around as we execute various apps, but we will always return * to this place as our default directory */ +#if !defined(MAXPATHLEN) && defined(__GLIBC__) + basedir = get_current_dir_name(); +#else getcwd(basedir, sizeof(basedir)); +#endif /* find the jobdat for this job */ jobdat = NULL; @@ -1621,7 +1630,11 @@ int orte_odls_base_default_launch_local(orte_jobid_t job, * again not match getcwd! This is beyond our control - we are only * ensuring they start out matching. */ +#if !defined(MAXPATHLEN) && defined(__GLIBC__) + dir = get_current_dir_name(); +#else getcwd(dir, sizeof(dir)); +#endif opal_setenv("PWD", dir, true, &app->env); /* Search for the OMPI_exec_path and PATH settings in the environment. */ @@ -2118,6 +2131,10 @@ CLEANUP: GETOUT: opal_condition_signal(&orte_odls_globals.cond); OPAL_THREAD_UNLOCK(&orte_odls_globals.mutex); +#if !defined(MAXPATHLEN) && defined(__GLIBC__) + free(basedir); + free(dir); +#endif return rc; } diff --git a/orte/orted/orted_main.c b/orte/orted/orted_main.c index 07d27a1f..0f2de5ca 100644 --- a/orte/orted/orted_main.c +++ b/orte/orted/orted_main.c @@ -228,7 +228,8 @@ int orte_daemon(int argc, char *argv[]) int ret = 0; int fd; opal_cmd_line_t *cmd_line = NULL; - char log_file[PATH_MAX]; + char *log_file = NULL; + size_t log_file_len; char *jobidstring; char *rml_uri; int i; @@ -482,13 +483,16 @@ int orte_daemon(int argc, char *argv[]) } /* define a log file name in the session directory */ - snprintf(log_file, PATH_MAX, "output-orted-%s-%s.log", + log_file_len = 13 + strlen(jobidstring) + 1 + strlen(orte_process_info.nodename) + 4 + 1; + log_file = malloc(log_file_len); + snprintf(log_file, log_file_len, "output-orted-%s-%s.log", jobidstring, orte_process_info.nodename); log_path = opal_os_path(false, orte_process_info.tmpdir_base, orte_process_info.top_session_dir, log_file, NULL); + free(log_file); fd = open(log_path, O_RDWR|O_CREAT|O_TRUNC, 0640); if (fd < 0) { diff --git a/orte/util/context_fns.c b/orte/util/context_fns.c index a54818e0..fcdea45a 100644 --- a/orte/util/context_fns.c +++ b/orte/util/context_fns.c @@ -55,10 +55,12 @@ int orte_util_check_context_cwd(orte_app_context_t *context, { bool good = true; const char *tmp; +#if 0 /* 'hostname' looks unused... */ char hostname[MAXHOSTNAMELEN]; /* Use hostname in a few messages below */ gethostname(hostname, sizeof(hostname)); +#endif /* If we want to chdir and the chdir fails (for any reason -- such as if the dir doesn't exist, it isn't a dir, we don't have