https://bugzilla.redhat.com/show_bug.cgi?id=1350257
--- Comment #12 from Dave Love <d.love(a)liverpool.ac.uk> ---
OK, I've now spent some time looking at this and building it; sorry for the
delay.
The %() stuff needs removing. It can only work for things in the
build root, and it's not necessary -- you can see errors in the build
output and from rpmlint.
I'd forgotten that I had a more recent cgns installed; the epel6
version won't work, and needs to be conditionalized out. I also found
it needed a patch I'll attach to avoid a clash with complex.h.
EPEL needs Require: openmpi%{_isa}, which I think is harmless elsewhere.
MPI headers should be in $MPI_INCLUDE/include/petsc, similarly to the serial
ones.
The other instances of "environment(modules)" need conditionalizing for el6.
Why is matplotlib required?
What is the SETOPT_FLAGS=... business about? It looks wrong and
everything seems to work without it.
I still think it should use openblas (as below).
I think it's better to remove use of pkg-config, which isn't
necessary, and simplify the configure args. I think the spec would be
lot more maintainable and easier to follow by simplifying it. I think
the constant with_... conditions should be removed to start with --
add comments about what doesn't work where appropriate. You could
abstract the common configure options and simplify them a lot,
especially if you ensure the with_... macros are always defined. The
following works for me (compacted a bit for posting):
%global common_args --with-shared-libraries=1 \\\
--with-petsc-arch=%{_arch} --with-fortran-interfaces=1 --with-debugging=0
\\\
--with-precision=double --with-clanguage=C \\\
COPTFLAGS="$RPM_OPT_FLAGS -O3" CXXOPTFLAGS="$RPM_OPT_FLAGS -O3"
\\\
FOPTFLAGS="$RPM_OPT_FLAGS -I%{_fmoddir} -O3" \\\
--with-gmp=1 --with-openmp=1 --with-libpng=1 --with-hwloc=1 --with-metis=1
\\\
%if %{with_cgns} \
--with-cgns=1 \\\
%endif \
--with-valgrind=1 --with-valgrind-dir=%{_prefix} --with-papi=1 \\\
%if 0%{?el6} \
--with-papi-include=%{_libdir}/papi-5.1.1/%{_includedir}
--with-papi-lib=%{_libdir}/papi-5.1.1/%{_prefix}/lib/libpapi.so \\\
%else \
--with-papi-include=%{_includedir} --with-papi-lib=libpapi.so \\\
%endif \
%if %{with_suitesparse} \
--with-suitesparse=1 \\\
--with-suitesparse-include=%{_includedir}/suitesparse \\\
--with-suitesparse-lib=[libumfpack.so,libklu.so,libcholmod.so,libbtf.so,libccolamd.so,libcolamd.so,libcamd.so,libamd.so,libsuitesparseconfig.so]
\\\
%endif \
%if %{with_superlu} && ! %{arch64} \
--with-superlu=1 \\\
--with-superlu-include=%{_includedir}/SuperLU \\\
--with-superlu-lib=libsuperlu.so \\\
%endif \
%if %{with_opencl} \
--with-opencl=1 \\\
%endif
...
%if 0%{?with_openmpi}
pushd buildopenmpi_dir
%{_openmpi_load}
%configure \
%{common_args} \
--with-blas-lib=libopenblas.so --with-lapack-lib=libopenblas.so \
--with-scalapack=1 --with-hdf5=1 \
%if %{with_netcdf}
--with-netcdf=1 \
%endif
--with-ptscotch=1 --with-hypre=1 --with-sundials=1 \
--with-hypre-include=$MPI_INCLUDE/hypre
--with-hypre-lib=$MLI_LIB/hypre/libHYPRE.so
make \
V=1 MAKE_NP=%{?_smp_mflags}
PETSC_DIR=%{_builddir}/%{name}-%{version}/buildopenmpi_dir
popd
%{_openmpi_unload}
%endif
I guess it's worth adding the -O3 to restore vectorization over the
RPM defaults.
Assuming it's not going to be supported on el5, you could clean up the
spec according to the packaging guidelines (no Group:, %clean etc.).
I hope that doesn't seem too picky. I think it's worthwhile making the
maintenance changes on something like this. (Some of the comments
apply to my version too, as a result of looking at it again.)
--
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component