Name: metis Version: 5.0.3 Release: 8%{?dist} Summary: Serial Graph Partitioning and Fill-reducing Matrix Ordering License: ASL 2.0 and BSD and LGPLv2+ Group: Development/Libraries URL: http://glaros.dtc.umn.edu/gkhome/views/%{name} Source0: http://glaros.dtc.umn.edu/gkhome/fetch/sw/%{name}/%{name}-%{version}.tar.gz ## This patch sets up libmetis soname of libmetis Patch0: %{name}-libmetis.patch ## This patch sets up shared GKlib library Patch1: %{name}-shared-GKlib.patch ## Specify the width (32 or 64 bits) of the elementary data type ## used in METIS. This is controled by the IDXTYPEWIDTH ## constant. ## For now, on a 32 bit architecture you can only specify a width of 32, ## whereas for a 64 bit architecture you can specify a width of either ## 32 or 64 bits. Patch2: %{name}-width-datatype.patch ## This patch sets up GKREGEX, GKRAND, libsuffix options to the Makefiles Patch4: %{name}-GKREGEX-GKRAND-LIBSUFFIX-fix.patch %if 0%{?rhel} BuildRequires: cmake28 Conflicts: cmake < 2.8 %else BuildRequires: cmake >= 2.8 BuildRequires: perl-Carp-Clan %endif BuildRequires: openmpi-devel BuildRequires: pcre-devel BuildRequires: help2man %description METIS is a set of serial programs for partitioning graphs, partitioning finite element meshes, and producing fill reducing orderings for sparse matrices. The algorithms implemented in METIS are based on the multilevel recursive-bisection, multilevel k-way, and multi-constraint partitioning schemes developed in our lab. %package devel Summary: The Metis headers and development-related files Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Header and library files of Metis. %prep %setup -q -n %{name}-%{version} %patch0 -p1 %patch1 -p1 if [ %{__isa_bits} = "64" ]; then %patch2 -p1 fi %patch4 -p1 %build # Build metis cd build %if 0%{?rhel} %cmake28 \ %else %cmake \ %endif -DCMAKE_C_COMPILER=%{_bindir}/gcc \ -DCMAKE_CXX_COMPILER=%{_bindir}/g++ \ -DGKLIB_PATH=../GKlib \ -DSHARED=1 \ -DOPENMP=%{_includedir}/openmpi-%{_arch} \ -DPCRE=%{_includedir} \ -DCMAKE_CXX_FLAGS="%{optflags} -fopenmp -pthread" -DCMAKE_C_FLAGS="%{optflags} -fopenmp -pthread" \ -DCMAKE_VERBOSE_MAKEFILE=1 \ -DCMAKE_INSTALL_PREFIX=%{_prefix} .. make %{?_smp_mflags} cd ../ %check cp -p %{buildroot}%{_bindir}/* graphs pushd graphs LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH ./ndmetis mdual.graph LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH ./mpmetis metis.mesh 2 LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH ./gpmetis test.mgraph 4 LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH ./gpmetis copter2.graph 4 LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH ./graphchk 4elt.graph popd %install pushd build %make_install ## Generate manpages from binaries %if 0%{?rhel} LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ help2man --version-option="%{version}" -n "Partitions a graph into a specified number of parts." \ -N --output="gpmetis.1" -h -help %{buildroot}%{_bindir}/gpmetis ##This command seems not acceptable for ndmetis #LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ #help2man --version-option="%{version}" \ # -n "Computes a fill-reducing ordering of the vertices of the graph using multilevel nested dissection." \ # -N --output="ndmetis.1" -h -help %{buildroot}%{_bindir}/ndmetis LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ help2man --version-option="%{version}" -n "Partitions a mesh into a specified number of parts." \ -N --output="mpmetis.1" -h -help %{buildroot}%{_bindir}/mpmetis LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ help2man --version-option="%{version}" -n "Converts a mesh into a graph that is compatible with METIS." \ -N --output="m2gmetis.1" -h -help %{buildroot}%{_bindir}/m2gmetis ##There is no help page for graphchk #LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ #help2man --version-option="%{version}" -n "Checks the graph for format correctness and consistency." \ # -N --output="graphchk.1" -h -help %{buildroot}%{_bindir}/graphchk LD_PRELOAD=%{buildroot}%{_libdir}/lib%{name}.so.0 \ help2man -n "cmpfillin" \ --version-option="%{version}" -N --output=cmpfillin.1 -h -help %{buildroot}%{_bindir}/cmpfillin %else help2man --version-string="%{version}" -n "Partitions a graph into a specified number of parts." \ -N --output="gpmetis.1" --no-discard-stderr --help-option="-help" %{buildroot}%{_bindir}/gpmetis help2man --version-string="%{version}" \ -n "Computes a fill-reducing ordering of the vertices of the graph using multilevel nested dissection." \ -N --output="ndmetis.1" --no-discard-stderr --help-option="-help" %{buildroot}%{_bindir}/ndmetis help2man --version-string="%{version}" -n "Partitions a mesh into a specified number of parts." \ -N --output="mpmetis.1" --no-discard-stderr --help-option="-help" %{buildroot}%{_bindir}/mpmetis help2man --version-string="%{version}" -n "Converts a mesh into a graph that is compatible with METIS." \ -N --output="m2gmetis.1" --no-discard-stderr -h "-help" %{buildroot}%{_bindir}/m2gmetis ##There is no help page for graphchk #help2man --version-string="%{version}" -n "Checks the graph for format correctness and consistency." \ # -N --output="graphchk.1" --no-discard-stderr --help-option="-help" %{buildroot}%{_bindir}/graphchk help2man -n "cmpfillin" --version-string="%{version}" -N --output=cmpfillin.1 --no-discard-stderr \ --help-option="-help" %{buildroot}%{_bindir}/cmpfillin %endif mkdir -p %{buildroot}%{_mandir}/man1 mv *.1 %{buildroot}%{_mandir}/man1 popd %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %doc LICENSE.txt Changelog manual/manual.pdf %{_bindir}/* %{_mandir}/man1/*.1.gz %{_libdir}/lib%{name}.so.* %files devel %doc Changelog %{_includedir}/%{name}.h %{_libdir}/lib%{name}.so %changelog * Wed Mar 20 2013 Antonio Trande - 5.0.3-8 - Added BR cmake28 for EPEL6 building - Set up of manpages creation in EPEL6 - Added BR 'perl-Carp-Clan' for Fedora * Wed Mar 20 2013 Antonio Trande - 5.0.3-7 - Removed explicit manpages compression - License tag changed to 'ASL 2.0 and BSD and LGPLv2+' * Wed Mar 20 2013 Antonio Trande - 5.0.3-6 - Modified %%check section to perform tests properly * Tue Mar 19 2013 Antonio Trande - 5.0.3-5 - Added %%check section - Removed GK*.h libraries installation * Sun Mar 17 2013 Antonio Trande - 5.0.3-4 - Added patch to sets up GKREGEX, GKRAND, libsuffix options to the Makefiles - Configured patch2 condition - soname version of libmetis changed to 0 - Added cmake options and flags to check openmp - GKlib_includes destination changed to include/metis - Added commands to generate binaries man-page - Added BR openmpi-devel, pcre-devel, help2man * Fri Mar 15 2013 Antonio Trande - 5.0.3-3 - Static sub-package removed - TEMPORARY fix for files in "/usr/lib" removed - Added patches for set up shared GKlib and soname libmetis - Removed BR chrpath * Tue Mar 14 2013 Antonio Trande - 5.0.3-2 - Initial release changed from 0 to 1 - Removed chrpath command - Added metis-width-datatype.patch only for 64bit systems - Build commands completely changed to use %%cmake - TEMPORARY fix for files in "/usr/lib" * Sat Mar 02 2013 Antonio Trande - 5.0.3-1 - Initial package - Removed chrpaths - Added BR chrpath - Removed exec permissions to silence spurious-executable-perm warning