219 lines
7.5 KiB
RPMSpec
219 lines
7.5 KiB
RPMSpec
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 <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> - 5.0.3-6
|
|
- Modified %%check section to perform tests properly
|
|
|
|
* Tue Mar 19 2013 Antonio Trande <sagitter@fedoraproject.org> - 5.0.3-5
|
|
- Added %%check section
|
|
- Removed GK*.h libraries installation
|
|
|
|
* Sun Mar 17 2013 Antonio Trande <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> - 5.0.3-1
|
|
- Initial package
|
|
- Removed chrpaths
|
|
- Added BR chrpath
|
|
- Removed exec permissions to silence spurious-executable-perm warning
|