File pvm.spec of Package pvm

#
# spec file for package pvm
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           pvm
BuildRequires:  gcc-fortran
BuildRequires:  readline-devel
BuildRequires:  tcsh
Summary:        Parallel Virtual Machine
License:        MIT and GPL-2.0+
Group:          Development/Libraries/Parallel
Version:        3.4.5
Release:        0
Source0:        ftp://ftp.netlib.org/pvm3/%{name}-%{version}.tar.bz2
Source3:        Makefile
Patch0:         %{name}-%{version}.dif
Patch1:         pvm-%{version}-cons.patch
Patch2:         pvm-%{version}-gcc4.patch
Patch3:         pvm-3.4.5_missing_includes.patch
Patch4:         pvm-3.4.5_missing_format_param.patch
Url:            http://www.epm.ornl.gov/pvm/pvm_home.html
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
ExclusiveArch:  %ix86 alpha sparc sparc64 ppc ppc64 ia64 s390 s390x hppa x86_64 %arm
%define		_pvm_root 	/usr/lib/pvm3
%ifarch %{ix86}
%define		_pvm_arch	LINUX
%else
%ifarch alpha
%define		_pvm_arch	LINUXALPHA
%else
%ifarch sparc sparc64
%define		_pvm_arch	LINUXSPARC
%else
%ifarch ppc 
%define		_pvm_arch	LINUXPPC
%else
%ifarch ppc64 
%define		_pvm_arch	LINUXPPC64
%else
%ifarch ia64
%define		_pvm_arch	LINUX64
%else
%ifarch s390 s390x
%define		_pvm_arch	LINUXS390
%else
%ifarch hppa
%define		_pvm_arch	LINUXHPPA
%else
%ifarch x86_64
%define		_pvm_arch	LINUX64
%else
%ifarch %arm
%define		_pvm_arch	LINUXARM
%endif
%endif
%endif
%endif
%endif
%endif
%endif
%endif
%endif
%endif

%description
PVM is a software system that enables a collection of heterogeneous
computers to be used as a coherent and flexible concurrent
computational resource.

The individual computers may be shared- or local-memory
multiprocessors, vector supercomputers, specialized graphics engines,
or scalar workstations, that may be interconnected by a variety of
networks, such as ethernet, FDDI.  User programs written in C, C++ or
Fortran access PVM through library routines.

After installation you find in /usr/share/doc/packages/pvm/ the
documentation as PostScript file pvm-book.ps.  Furthermore some
examples are packed together in two tar archives.  Those archives
should be extracted into your HOME directory which leads to
~/pvm3/examples/ or ~/pvm3/gexamples/ in your HOME directory.  The call
`aimk all' (see manual page aimk(1)) e.g. in ~/pvm3/examples/ compiles
the examples for the PVM system.

The PVM web home page is at http://www.epm.ornl.gov/pvm/pvm_home.html .



Authors:
--------
    J. J. Dongarra		<pvm@msr.epm.ornl.gov>
    G. E. Fagg		<pvm@msr.epm.ornl.gov>
    G. A. Geist		<pvm@msr.epm.ornl.gov>
    J. A. Kohl		<pvm@msr.epm.ornl.gov>
    R. J. Manchek		<pvm@msr.epm.ornl.gov>
    P. Mucci		<pvm@msr.epm.ornl.gov>
    P. M. Papadopoulos	<pvm@msr.epm.ornl.gov>
    S. L. Scott		<pvm@msr.epm.ornl.gov>
    V. S. Sunderam		<pvm@msr.epm.ornl.gov>

%package devel
Summary:        Parallel Virtual Machine
Group:          Development/Libraries/Parallel
Requires:       %{name} = %{version}

%description devel
PVM is a software system that enables a collection of heterogeneous
computers to be used as a coherent and flexible concurrent
computational resource.

The individual computers may be shared- or local-memory
multiprocessors, vector supercomputers, specialized graphics engines,
or scalar workstations, that may be interconnected by a variety of
networks, such as ethernet, FDDI.  User programs written in C, C++ or
Fortran access PVM through library routines.

After installation you find in /usr/share/doc/packages/pvm/ the
documentation as PostScript file pvm-book.ps.  Furthermore some
examples are packed together in two tar archives.  Those archives
should be extracted into your HOME directory which leads to
~/pvm3/examples/ or ~/pvm3/gexamples/ in your HOME directory.  The call
`aimk all' (see manual page aimk(1)) e.g. in ~/pvm3/examples/ compiles
the examples for the PVM system.

The PVM web home page is at http://www.epm.ornl.gov/pvm/pvm_home.html .



Authors:
--------
    J. J. Dongarra  <pvm@msr.epm.ornl.gov>
    G. E. Fagg  <pvm@msr.epm.ornl.gov>
    G. A. Geist  <pvm@msr.epm.ornl.gov>
    J. A. Kohl  <pvm@msr.epm.ornl.gov>
    R. J. Manchek  <pvm@msr.epm.ornl.gov>
    P. Mucci  <pvm@msr.epm.ornl.gov>
    P. M. Papadopoulos <pvm@msr.epm.ornl.gov>
    S. L. Scott  <pvm@msr.epm.ornl.gov>
    V. S. Sunderam  <pvm@msr.epm.ornl.gov>

%prep 
%setup -q  -n pvm3
%patch0 
%patch1
%patch2 -p1
%patch3
%patch4

%build
mkdir -p src/%{_pvm_arch}
cp %{SOURCE3}  src/%{_pvm_arch}/Makefile
PVM_ROOT=`pwd` \
make %{?_smp_mflags} OPT_FLAGS="$RPM_OPT_FLAGS -fPIC -DPIC -fno-strict-aliasing"

%install
install -d $RPM_BUILD_ROOT{%{_bindir},%{_includedir},%{_libdir},%{_pvm_root}/conf,%{_docdir}/%{name}} \
	$RPM_BUILD_ROOT%{_docdir}/%{name}/{examples,gexamples,hoster,misc,tasker,xep} \
	$RPM_BUILD_ROOT{%{_mandir}/man{1,3},%{_sbindir},%{_pvm_root}/bin/%{_pvm_arch},%{_pvm_root}/lib/%{_pvm_arch}}
install -c -m 0755  lib/%{_pvm_arch}/* $RPM_BUILD_ROOT%{_pvm_root}/lib/%{_pvm_arch}
install -c -m 0755 lib/pvmtmparch	$RPM_BUILD_ROOT%{_pvm_root}/lib
install -c -m 0755 lib/pvmgetarch	$RPM_BUILD_ROOT%{_pvm_root}/lib
install -c -m 0755 lib/pvmd	$RPM_BUILD_ROOT%{_pvm_root}/lib
install -c -m 0755 lib/pvmd	$RPM_BUILD_ROOT%{_bindir}
install -c -m 0755 lib/aimk	$RPM_BUILD_ROOT%{_pvm_root}/lib
install -c -m 0755 bin/%{_pvm_arch}/{pvm_gstat,pvmgroups,pvmgs,tracer,trcsort} $RPM_BUILD_ROOT%{_pvm_root}/bin/%{_pvm_arch}
install -c -m 0755 lib/pvm $RPM_BUILD_ROOT%{_bindir}
install -c -m 0755 lib/wrapper  $RPM_BUILD_ROOT%{_bindir}/pvm_gstat
install -c -m 0755 lib/wrapper  $RPM_BUILD_ROOT%{_bindir}/pvmgroups
install -c -m 0755 lib/wrapper  $RPM_BUILD_ROOT%{_bindir}/pvmgs
install -c -m 0755 lib/wrapper  $RPM_BUILD_ROOT%{_bindir}/tracer
install -c -m 0755 lib/wrapper  $RPM_BUILD_ROOT%{_bindir}/trcsort
install conf/%{_pvm_arch}.def $RPM_BUILD_ROOT%{_pvm_root}/conf
install include/{fpvm3,pvm3,pvmproto,pvmtev}.h $RPM_BUILD_ROOT%{_includedir}
#install lib/%{_pvm_arch}/lib*.a $RPM_BUILD_ROOT%{_libdir}
install lib/%{_pvm_arch}/lib*.so $RPM_BUILD_ROOT%{_libdir}/libpvm3.so.3.4
(
cd $RPM_BUILD_ROOT%{_libdir}
for lib in `ls pvm3/lib/%{_pvm_arch}/*.a`; do
    basen=$(basename $lib)
    ln -sf pvm3/lib/%{_pvm_arch}/${basen}
done
ln -sf libpvm3.so.3.4 libpvm3.so.3
ln -sf libpvm3.so.3.4 libpvm3.so
)
install -m 0644 man/man1/* $RPM_BUILD_ROOT%{_mandir}/man1
install -m 0644 man/man3/* $RPM_BUILD_ROOT%{_mandir}/man3
# Examples
cp -rf examples gexamples hoster misc tasker xep $RPM_BUILD_ROOT%{_docdir}/%{name}
#install %{SOURCE2}  $RPM_BUILD_ROOT%{_docdir}/%{name}/pvm-book.ps
#gzip -9nf $RPM_BUILD_ROOT%{_docdir}/%{name}/pvm-book.ps
rm $RPM_BUILD_ROOT/%{_pvm_root}/lib/%{_pvm_arch}/*.so
rm -f $RPM_BUILD_ROOT/%{_libdir}/lib*.a

# make PVM_ROOT valid with some symlinks
%__mkdir -p %buildroot/%{_pvm_root}/include
%__ln_s %{_includedir}/fpvm3.h %buildroot/%{_pvm_root}/include/fpvm3.h
%__ln_s %{_includedir}/pvm3.h %buildroot/%{_pvm_root}/include/pvm3.h
%__ln_s %{_includedir}/pvmproto.h %buildroot/%{_pvm_root}/include/pvmproto.h
%__ln_s %{_includedir}/pvmtev.h %buildroot/%{_pvm_root}/include/pvmtev.h
%__ln_s %{_libdir}/libpvm3.so %buildroot/%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.so
%__ln_s %{_libdir}/libpvm3.so.3 %buildroot/%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.so.3
%__ln_s %{_libdir}/libpvm3.so.3.4 %buildroot/%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.so.3.4

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%defattr(-,root,root)
%{_bindir}/*
%{_libdir}/libpvm3.so.*
%dir %{_pvm_root}
%dir %{_pvm_root}/lib
%dir %{_pvm_root}/lib/%{_pvm_arch}
%{_pvm_root}/bin
%{_pvm_root}/lib/%{_pvm_arch}/pvm*
%{_pvm_root}/lib/pvmd
%{_pvm_root}/lib/pvmgetarch
%{_pvm_root}/lib/pvmtmparch
%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.so.*
%doc %{_mandir}/man1/pvm*
%doc %{_mandir}/man1/PVM*
%{_docdir}/%{name}

%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_pvm_root}/lib/aimk
%{_pvm_root}/conf
%{_libdir}/libpvm3.so
%{_includedir}/fpvm3.h
%{_includedir}/pvm3.h
%{_includedir}/pvmproto.h
%{_includedir}/pvmtev.h
%dir %{_pvm_root}/include
%{_pvm_root}/include/*.h
%{_pvm_root}/lib/%{_pvm_arch}/libfpvm3.a
%{_pvm_root}/lib/%{_pvm_arch}/libgpvm3.a
%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.a
%{_pvm_root}/lib/%{_pvm_arch}/libpvmtrc.a
%{_pvm_root}/lib/%{_pvm_arch}/libpvm3.so
%{_mandir}/man1/aimk.1*
%{_mandir}/man3/*

%changelog