Open MPI specfile generator =========================== The Open MPI specfile generator is a tool that scans the Open MPI source tree for package description files. Based on this file a specfile will be generated which will produce a RPM for each specified package (if the corresponding files have been created). All files that are not specified to belong to a package will be put in the base package. The produced specfile is able to detect at build time if a package RPM should be build or not (e.g. if the gm component hasn't been build the gm package section will be skipped). This approach allows to have one big specfile for all possible build systems. The specfile also dynamically extracts the version information for each package at build time. This is necessary because a static approach would require to know the exact low level library version we want to use for this package. -- Naming Convention The base RPM will have the following naming convention: --..rpm e.g. openmpi-1.2a1r10877M-1.x86_64.rpm Each RPM that is build based in a package description will have the following format: ---_-..rpm e.g. openmpi-btl-mvapi-1.2a1r10877Mmvapi_4.1.0-1.x86_64.rpm Package Description File ======================== Package description files a simple INI files with the suffix ".package" instead of ".ini". Here is an example of a descriptor file: > cat mvapi.package [mvapi] summary=MVAPI btl component type=btl license=BSD group=Development/Libraries description=MVAPI btl component files=%{_prefix}/lib/openmpi/mca_btl_mvapi.so %{_prefix}/lib/openmpi/mca_btl_mvapi.la version=%{ompi_compile_root}/ompi/mca/btl/mvapi/get_vapi_version vendor=Mellanox > -- section name The section name is the name of the package that will be created. -- summary This summary will be the summary of the RPM. -- description The description will become the description of the RPM. -- type Specified the type of the package -- license The license of the RPM. (default : BSD) -- group The group where this package belongs to. (default = Development/Libraries) -- version The version field specifies a command that is executed during the RPM build process to obtain the version number of the package. This command is executed after the source code has been configured, compiled and installed. The %{ompi_compile_root} specifies the top level directory of the source tree. -- files List of files that should be part of the package. The %{_prefix} can be used to identify the prefix where Open MPI will be installed. If at least on of the specified files exists the package will be build. -- vendor The vendor field of RPM. (default = Open MPI) -- requires Additional dependencies for this package. The specfile generator will automatically add a default dependency for the Open MPI base RPM. If the Open MPI specfile generator should find multiple definitions of the same package then the "files" information will be merged and all the other fields will be overwritten by the latest information. This allows a decentralized package description (e.g. mvapi BTL + mvapi MPOOL).