File silo.spec of Package silo
#
# spec file for package silo
#
# Copyright (c) 2022 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%define modname Silo
Name: silo
Version: 4.11
Release: 0
Summary: A library for reading and writing a wide variety of scientific data
License: BSD-3-Clause
Group: Productivity/Scientific/Other
URL: https://wci.llnl.gov/simulation/computer-codes/silo
Source0: https://wci.llnl.gov/sites/wci/files/2021-09/silo-%{version}-bsd.tgz
# PATCH-FIX-UPSTREAM -- https://github.com/LLNL/Silo/issues/270
Patch0: 0001-Fix-missing-semicolon-in-H5Epush_ret-invocations.patch
# PATCH-FIX-UPSTREAM -- https://github.com/LLNL/Silo/issues/271
Patch1: 0001-Fix-python-print-invocation-in-configure.patch
# PATCH-FIX-UPSTREAM -- https://github.com/LLNL/Silo/issues/273
Patch2: 0001-Fix-missing-return-in-non-void-function.patch
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
BuildRequires: hdf5-devel
BuildRequires: netcdf-devel
BuildRequires: pkgconfig
BuildRequires: python3-devel
BuildRequires: readline-devel
BuildRequires: zlib-devel
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Widgets)
%description
Silo is a library for reading and writing a wide variety of scientific data to
binary, disk files. The files Silo produces and the data within them can be
easily shared and exchanged between wholly independently developed applications
running on disparate computing platforms. Consequently, Silo facilitates the
development of general purpose tools for processing scientific data. One of the
more popular tools that process Silo data files is the VisIt visualization tool.
Silo supports gridless (point) meshes, structured meshes, unstructured-zoo and
unstructured-arbitrary-polyhedral meshes, block structured AMR meshes,
constructive solid geometry (CSG) meshes, piecewise-constant (e.g.
zone-centered) and piecewise-linear (e.g. node-centered) variables defined on
the node, edge, face or volume elements of meshes as well as the decomposition
of meshes into arbitrary subset hierarchies including materials and mixing
materials. In addition, Silo supports a wide variety of other useful objects to
address various scientific computing application needs. Although the Silo
library is a serial library, it has some key features which enable it to be
applied quite effectively and scalable in parallel.
%package -n libsiloh5
Summary: A library for reading and writing a wide variety of scientific data
Group: System/Libraries
%description -n libsiloh5
Silo is a library for reading and writing a wide variety of scientific data to
binary, disk files. The files Silo produces and the data within them can be
easily shared and exchanged between wholly independently developed applications
running on disparate computing platforms. Consequently, Silo facilitates the
development of general purpose tools for processing scientific data. One of the
more popular tools that process Silo data files is the VisIt visualization tool.
Silo supports gridless (point) meshes, structured meshes, unstructured-zoo and
unstructured-arbitrary-polyhedral meshes, block structured AMR meshes,
constructive solid geometry (CSG) meshes, piecewise-constant (e.g.
zone-centered) and piecewise-linear (e.g. node-centered) variables defined on
the node, edge, face or volume elements of meshes as well as the decomposition
of meshes into arbitrary subset hierarchies including materials and mixing
materials. In addition, Silo supports a wide variety of other useful objects to
address various scientific computing application needs. Although the Silo
library is a serial library, it has some key features which enable it to be
applied quite effectively and scalable in parallel.
%package devel
Summary: A library for reading and writing a wide variety of scientific data
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Provides: %{name}-devel-static = %{version}
%description devel
This package contains the development headers needed for the %{name} package.
%package -n python-%modname
Summary: A python wrapper for %{name}
Group: Development/Languages/Python
%description -n python-%modname
Silo is a library for reading and writing a wide variety of scientific data to
binary, disk files. The files Silo produces and the data within them can be
easily shared and exchanged between wholly independently developed applications
running on disparate computing platforms. Consequently, Silo facilitates the
development of general purpose tools for processing scientific data. One of the
more popular tools that process Silo data files is the VisIt visualization tool.
Silo supports gridless (point) meshes, structured meshes, unstructured-zoo and
unstructured-arbitrary-polyhedral meshes, block structured AMR meshes,
constructive solid geometry (CSG) meshes, piecewise-constant (e.g.
zone-centered) and piecewise-linear (e.g. node-centered) variables defined on
the node, edge, face or volume elements of meshes as well as the decomposition
of meshes into arbitrary subset hierarchies including materials and mixing
materials. In addition, Silo supports a wide variety of other useful objects to
address various scientific computing application needs. Although the Silo
library is a serial library, it has some key features which enable it to be
applied quite effectively and scalable in parallel.
This package contains a python wrapper for the %{name} package.
%prep
%setup -q -n %{name}-%{version}-bsd
%autopatch -p1
# https://github.com/LLNL/Silo/issues/22
sed -i -e 's/qmake /qmake-qt5 /' \
-e 's/which moc/which moc-qt5/' \
-e '/qtHaveModule/ { /core/ { p ; d }; /gui/ { p ; d} ; s/help/widgets/g p; d}' \
configure
%build
%configure --enable-shared \
--disable-static \
--with-hdf5=%{_includedir},%{_libdir} \
--with-zlib=%{_includedir},%{_libdir} \
--enable-silex \
--enable-pythonmodule
%make_build
%install
%make_install
find %{buildroot}%{_libdir} -type f -name '*.la' -print -exec rm {} \;
# Remove timestamp
sed -i -e 's/Configured on:.*/Configured on:/' %{buildroot}%{_libdir}/*.settings
# move python module into the right place
mkdir -p %{buildroot}%{python_sitearch}
mv %{buildroot}%{_libdir}/Silo.so %{buildroot}%{python_sitearch}
mv %{buildroot}%{_bindir}/{browser,silo_browser}
%post -n libsiloh5 -p /sbin/ldconfig
%postun -n libsiloh5 -p /sbin/ldconfig
%files
%{_bindir}/*
%files -n libsiloh5
%license COPYRIGHT BSD_LICENSE_README
%{_libdir}/*.so
%files devel
%doc FAQ docs/Silo.book.pdf
%{_libdir}/*.settings
%{_includedir}/*
%files -n python-Silo
%{python_sitearch}/%{modname}.so
%changelog