# Copyright (c) 2014 Dave Love, University of Liverpool # Licence as for the package itself # fixme: patch to avoid using $MPI_HOME/specifications # unbundle callpath %bcond_with mpich # rc seems to be predefined #%%global rc_ rc3 Name: must Version: 1.7.0 Release: 1%{?rc_:.%rc_}%{?dist} Summary: MPI runtime error detection tool License: BSD URL: https://itc.rwth-aachen.de/must/ Source0: https://hpc.rwth-aachen.de/must/files/MUST-v%(basename %version .0).tar.gz BuildRequires: cmake3 BuildRequires: gcc-c++ gcc-gfortran graphviz-devel git BuildRequires: openmpi-devel libxml2-devel chrpath dyninst-devel %{?el7:BuildRequires: openmpi3-devel} %global desc \ MUST detects usage errors of the Message Passing Interface (MPI) and\ reports them to the user. As MPI calls are complex and usage errors\ common, this functionality is extremely helpful for application\ developers that want to develop correct MPI applications. This\ includes errors that already manifest -- segmentation faults or\ incorrect results -- as well as many errors that are not visible to\ the application developer or do not manifest on a certain system or\ MPI implementation.\ \ To detect errors, MUST intercepts the MPI calls that are issued by the\ target application and evaluates their arguments. The two main usage\ scenarios for MUST arise during application development and when\ porting an existing application to a new system. When a developer adds\ new MPI communication calls, MUST can detect newly introduced errors,\ especially also some that may not manifest in an application\ crash. Further, before porting an application to a new system, MUST\ can detect violations to the MPI standard that might manifest on the\ target system. MUST reports errors in a log file that can be\ investigated once the execution of the target executable finishes. %description %desc %package openmpi Summary: MPI runtime error detection tool - openmpi Obsoletes: must <= 1.4.0-2 %description openmpi %desc This is the openmpi version. %if 0%{?el7} %package openmpi3 Summary: MPI runtime error detection tool - openmpi3 Obsoletes: must <= 1.4.0-2 %description openmpi3 %desc This is the openmpi3 version. %endif %if %{with mpich} %package mpich Summary: MPI runtime error detection tool - mpich Obsoletes: must <= 1.4.0-2 %description mpich %desc This is the mpich version. %endif %prep %setup -q -n MUST-v%(basename %version .0)%{?rc_:-%rc_} mkdir openmpi mpich openmpi3 %build %global buildit \ CXXFLAGS="-I$MPI_INCLUDE/pnmpi -fpermissive" FFLAGS="-I$MPI_INCLUDE"\ %cmake3 -DCALLPATH_STACKWALKER_LIB_PATH=%_libdir/dyninst \\\ -DUSE_CALLPATH=ON \\\ -DCMAKE_INSTALL_PREFIX=$MPI_LIB/must -DCMAKE_BUILD_TYPE=Release ..\ %make_build %_openmpi_load pushd openmpi %buildit popd %_openmpi_unload %if 0%{?el7} %_openmpi3_load pushd openmpi3 %buildit popd %_openmpi3_unload %endif %if %{with mpich} %_mpich_load pushd mpich %buildit popd %_mpich_unload %endif %install %global inst \ %make_install\ chrpath -d $RPM_BUILD_ROOT$MPI_LIB/must/modules/*.so\ mkdir -p $RPM_BUILD_ROOT$MPI_BIN\ mv $RPM_BUILD_ROOT$MPI_LIB/must/bin/mustrun $RPM_BUILD_ROOT$MPI_BIN %_openmpi_load pushd openmpi %inst popd %_openmpi_unload %if 0%{?el7} %_openmpi3_load pushd openmpi3 %inst popd %_openmpi3_unload %endif %if %{with mpich} %_mpich_load pushd mpich %inst popd %_mpich_unload %endif %check ctest3 -V %files openmpi %doc README.txt doc/manual/manual.pdf %license LICENSE %exclude %_libdir/openmpi/lib/must/share %_libdir/openmpi/bin/* %_libdir/openmpi/lib/* %if 0%{?el7} %files openmpi3 %doc README.txt doc/manual/manual.pdf %license LICENSE %exclude %_libdir/openmpi3/lib/must/share %_libdir/openmpi3/bin/* %_libdir/openmpi3/lib/* %endif %if %{with mpich} %files mpich %doc README.txt doc/manual/manual.pdf %license LICENSE.txt %exclude %_libdir/mpich/lib/must/bin %exclude %_libdir/mpich/lib/must/lib %exclude %_libdir/mpich/lib/must/share %_libdir/mpich/bin/* %_libdir/mpich/lib/* %endif %changelog * Thu May 13 2021 Dave Love - 1.7.0-1rc3:.%rc_}%{?dist} - New version - Update URLs * Mon Dec 30 2019 Dave Love - 1.6.0-4 - Add openmpi3 on el7 * Mon Dec 23 2019 Dave Love - 1.6.0-3 - New version * Wed Mar 13 2019 Dave Love - 1.6.0-2.rc3 - RC update * Fri Jun 22 2018 Dave Love - 1.6.0-1.rc1 - New version * Mon Jul 25 2016 Dave Love - 1.5.0-1 - New version * Wed May 20 2015 Dave Love - 1.4.0-4 - Non-rc version * Mon Mar 23 2015 Dave Love - 1.4.0-3 - Clean empty installed directories - openmpi and mpich packages * Fri Mar 20 2015 Dave Love - 1.4.0-2 - Don't duplicate manual - Just install in MPI_BIN * Fri Dec 5 2014 Dave Love - 1.4.0-1 - New version * Tue Jul 29 2014 Dave Love - 1.3.0- - New version * Tue Jul 8 2014 Dave Love - 1.2.0-2 - Fix duplicated manual * Mon May 5 2014 Dave Love - 1.2.0-1 - Initial packaging