Pin Open MPI in docker image to fix SCORPIO build (MPI_Type_hvector removed)
- Dominant language
- Python
- Stars
- 174
- Forks
- 225
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 14
Description
> **Note:** This is E3SM-specific (SCORPIO external / E3SM docker image).
## Description
The `spio` component fails to compile in the `docker` environment because SCORPIO uses the deprecated MPI-1 symbol `MPI_Type_hvector`, which has been removed in the Open MPI version currently installed in the image.
## Affected Test
```
SMS_P1.T42_T42.S.docker_gnu
```
## Component / Build Log
- Component: `spio` (SCORPIO I/O library)
- Log: `bld/spio.bldlog.*`
## Error
```
/e3sm/externals/scorpio/src/clib/core/rearr/pio_rearr_contig.cpp:391:17:
error: 'MPI_Type_hvector' was not declared in this scope; did you mean 'MPI_Type_vector'?
(also lines 405, 479, 493, 1390, 1402)
gmake[2]: *** [.../pio_rearr_contig.cpp.o] Error 1
gmake[1]: *** [.../spio_core_rearr.dir/all] Error 2
gmake: *** [all] Error 2
```
## Root Cause
`MPI_Type_hvector` is an MPI-1 symbol deprecated in MPI-2 and removed by default in recent Open MPI releases. The SCORPIO external still references it, so the build breaks against the newer MPI in the `docker` image.
## Fix
Pin Open MPI in the `docker` image to a version that still exposes the legacy MPI-1 symbols. (Longer term, SCORPIO should migrate `MPI_Type_hvector` -> `MPI_Type_create_hvector`.)
## Environment
- Machine: `docker`
- Compiler: `gnu`
- Project: E3SM
Contributor guide
Research direction
Search the repository's docker image configuration for the Open MPI installation or version pin, then run SMS_P1.T42_T42.S.docker_gnu and inspect bld/spio.bldlog.*. Done means the spio component compiles in the docker GNU environment without the MPI_Type_hvector error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100