Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
science
netcdf-fortran
netcdf-fortran.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File netcdf-fortran.spec of Package netcdf-fortran
# # spec file # # Copyright (c) 2023 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/ # %global flavor @BUILD_FLAVOR@%{nil} %define _do_check 1 %global pname netcdf-fortran %global ver 4.5.3 %global _ver 4_5_3 %if 0%{?sle_version} >= 150200 %define DisOMPI1 ExclusiveArch: do_not_build %endif %if !0%{?is_opensuse} && 0%{?sle_version:1} %if 0%{?sle_version} < 150200 %define DisOMPI3 ExclusiveArch: do_not_build %endif %if 0%{?sle_version} < 150300 %define DisOMPI4 ExclusiveArch: do_not_build %endif %endif ExcludeArch: i586 %arm s390 %if "%flavor" == "" ExclusiveArch: do_not_build %define package_name %pname %define compiler_family gnu %endif ExcludeArch: s390 s390x %ix86 %{bcond_with staticlibs} %if "%flavor" == "gnu-hpc" %global compiler_family gnu %{bcond_with mpi} %endif %if "%flavor" == "gnu-openmpi4-hpc" %{?DisOMPI4} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 4 %{bcond_without mpi} %endif %if "%flavor" == "gnu-openmpi5-hpc" %{?DisOMPI5} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 5 %{bcond_without mpi} %endif %if "%flavor" == "gnu-mvapich2-hpc" %global compiler_family gnu %global mpi_flavor mvapich2 %{bcond_without mpi} %endif %if "%flavor" == "gnu-mpich-hpc" %global compiler_family gnu %global mpi_flavor mpich %{bcond_without mpi} %endif %if "%flavor" == "gnu7-hpc" %global compiler_family gnu %{bcond_with mpi} %global c_f_ver 7 %endif %if "%flavor" == "gnu7-openmpi4-hpc" %{?DisOMPI4} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 4 %global c_f_ver 7 %{bcond_without mpi} %endif %if "%flavor" == "gnu7-openmpi5-hpc" %{?DisOMPI5} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 5 %global c_f_ver 7 %{bcond_without mpi} %endif %if "%flavor" == "gnu7-mvapich2-hpc" %global compiler_family gnu %global mpi_flavor mvapich2 %global c_f_ver 7 %{bcond_without mpi} %endif %if "%flavor" == "gnu7-mpich-hpc" %global compiler_family gnu %global mpi_flavor mpich %global c_f_ver 7 %{bcond_without mpi} %endif %if "%flavor" == "gnu8-hpc" %global compiler_family gnu %{bcond_with mpi} %global c_f_ver 8 %endif %if "%flavor" == "gnu8-openmpi4-hpc" %{?DisOMPI4} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 4 %global c_f_ver 8 %{bcond_without mpi} %endif %if "%flavor" == "gnu8-openmpi5-hpc" %{?DisOMPI5} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 5 %global c_f_ver 8 %{bcond_without mpi} %endif %if "%flavor" == "gnu8-mvapich2-hpc" %global compiler_family gnu %global mpi_flavor mvapich2 %global c_f_ver 8 %{bcond_without mpi} %endif %if "%flavor" == "gnu8-mpich-hpc" %global compiler_family gnu %global mpi_flavor mpich %global c_f_ver 8 %{bcond_without mpi} %endif %if "%flavor" == "gnu9-hpc" %global compiler_family gnu %{bcond_with mpi} %global c_f_ver 9 %endif %if "%flavor" == "gnu9-openmpi4-hpc" %{?DisOMPI4} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 4 %global c_f_ver 9 %{bcond_without mpi} %endif %if "%flavor" == "gnu9-openmpi5-hpc" %{?DisOMPI5} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 5 %global c_f_ver 9 %{bcond_without mpi} %endif %if "%flavor" == "gnu9-mvapich2-hpc" %global compiler_family gnu %global mpi_flavor mvapich2 %global c_f_ver 9 %{bcond_without mpi} %endif %if "%flavor" == "gnu9-mpich-hpc" %global compiler_family gnu %global mpi_flavor mpich %global c_f_ver 9 %{bcond_without mpi} %endif %if "%flavor" == "gnu10-hpc" %global compiler_family gnu %{bcond_with mpi} %global c_f_ver 10 %endif %if "%flavor" == "gnu10-openmpi4-hpc" %{?DisOMPI4} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 4 %global c_f_ver 10 %{bcond_without mpi} %endif %if "%flavor" == "gnu10-openmpi5-hpc" %{?DisOMPI5} %global compiler_family gnu %global mpi_flavor openmpi %global mpi_ver 5 %global c_f_ver 10 %{bcond_without mpi} %endif %if "%flavor" == "gnu10-mvapich2-hpc" %global compiler_family gnu %global mpi_flavor mvapich2 %global c_f_ver 10 %{bcond_without mpi} %endif %if "%flavor" == "gnu10-mpich-hpc" %global compiler_family gnu %global mpi_flavor mpich %global c_f_ver 10 %{bcond_without mpi} %endif %define limit_cores(c:) %{?_smp_mflags: %(a=1; b=$(sed -se "s/.*-j[[:space:]]*\\([[:digit:]]\\+\\).*/\\1/" <<< %_smp_mflags); [ $b -le $a ] || b=$a ; sed -se "s/\\(.*-j[[:space:]]*\\)[[:digit:]]\\+\\(.*\\)/\\1$b/" <<< %_smp_mflags )} %define hpc_upcase_trans_hyph() %(echo %{**} | tr [a-z] [A-Z] | tr '-' '_') %{?hpc_init:%{hpc_init -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} %{?with_mpi:-m %mpi_flavor %{?mpi_ver:-V %mpi_ver}}}} %{!?hpc_package_name_tail:%define hpc_package_name_tail %{nil}} %if 0%{!?package_name:1} %define package_name %{hpc_package_name %_ver} %endif Name: %package_name %define libname libnetcdf-fortran Summary: Command-line programs for the NetCDF scientific data format License: NetCDF Group: Productivity/Scientific/Other Version: %ver Release: 0 %define sonum 7 URL: https://www.unidata.ucar.edu/software/netcdf/ Source: https://github.com/Unidata/netcdf-fortran/archive/v%{version}.tar.gz#/%{pname}-%{version}.tar.gz BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel BuildRequires: %{compiler_family}-compilers-hpc BuildRequires: gawk BuildRequires: libcurl-devel >= 7.18.0 BuildRequires: lua-lmod BuildRequires: m4 BuildRequires: pkg-config BuildRequires: suse-hpc BuildRequires: zlib-devel >= 1.2.5 %if %{with mpi} BuildRequires: %{mpi_flavor}%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel %endif BuildRequires: hdf5-%{compiler_family}%{?c_f_ver}%{?with_mpi:-%{mpi_flavor}%{?mpi_ver}}-hpc-devel BuildRequires: netcdf-%{compiler_family}%{?c_f_ver}%{?with_mpi:-%{mpi_flavor}%{?mpi_ver}}-hpc-devel >= 4.7.4 Requires: %{libname}%{hpc_package_name_tail %_ver} = %{version} %description NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. %if %{without mpi} This package contains utility functions for working with NetCDF files. %else This package contains the %{mpi_flavor} version of utility functions for working with NetCDF files. %endif %package -n %{libname}%{hpc_package_name_tail %_ver} Summary: Shared libraries for the NetCDF scientific data format Group: System/Libraries %{?hpc_requires} %{requires_eq libnetcdf-%{compiler_family}%{?c_f_ver}%{?with_mpi:-%{mpi_flavor}%{?mpi_ver}}-hpc} %description -n %{libname}%{hpc_package_name_tail %_ver} NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. NetCDF (network Common Data Form) is an interface for array-oriented data access and a collection of software libraries for C, Fortran, C++, and Perl that provides an implementation of the interface. The NetCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. NetCDF data is: - Self-Describing: A NetCDF file includes information about the data it contains. - Network-transparent: A NetCDF file is represented in a form that can be accessed by computers with different ways of storing integers, characters, and floating-point numbers. - Direct-access: A small subset of a large dataset may be accessed efficiently, without first reading through all the preceding data. - Appendable: Data can be appended to a NetCDF dataset along one dimension without copying the dataset or redefining its structure. The structure of a NetCDF dataset can be changed, though this sometimes causes the dataset to be copied. - Sharable: One writer and multiple readers may simultaneously access the same NetCDF file. This package contains all files needed to create projects that use %{?mpi_flavor:the %mpi_flavor version of} NetCDF. %{hpc_master_package -l -L -n %{libname}%{hpc_package_name_tail}} %package devel Summary: Development files for %{name} Group: Development/Libraries/Parallel Requires: %{libname}%{hpc_package_name_tail %_ver} = %{version} Requires: libcurl-devel >= 7.18.0 Requires: pkgconfig Requires: zlib-devel >= 1.2.5 %{?hpc_requires_devel} %{requires_eq netcdf-%{compiler_family}%{?c_f_ver}%{?with_mpi:-%{mpi_flavor}%{?mpi_ver}}-hpc-devel} Obsoletes: %{name} < %{version}-%{release} Provides: %{name} = %{version}-%{release} %description devel NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. This package contains all files needed to create projects that use %{?mpi_flavor:the %mpi_flavor version of} NetCDF. %{hpc_master_package devel -O netcdf-fortran%{?hpc_package_name_tail}} %package devel-static Summary: Static development files for %{name} Group: Development/Libraries/Parallel Requires: %{name}-devel = %{version} #Requires: hdf-devel %{requires_eq hdf5-%{compiler_family}%{?c_f_ver}%{?with_mpi:-%{mpi_flavor}%{?mpi_ver}}-hpc-devel} Requires: libcurl-devel >= 7.18.0 Requires: zlib-devel >= 1.2.5 %description devel-static NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. This package contains the static libraries for %{?mpi_flavor:the %mpi_flavor version of} NetCDF. %prep %setup -q -n %{pname}-%{version} # Fix spurious-executable-perm RPMLINT warning chmod a-x RELEASE_NOTES.md %build %{?_lto_cflags: %global _lto_cflags %{?_lto_cflags} -ffat-lto-objects} %{?with_staticlibs:%{?_smp_mflags:%global _smp_mflags %{limit_cores -c 8}}} %{hpc_setup} module load netcdf export CFLAGS="%{optflags} -I $NETCDF_INC -L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" export FCFLAGS="%{optflags} -std=legacy" export FFLAGS=$FCFLAGS export CPPFLAGS=$CFLAGS export LDFLAGS="-L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" %if %{with mpi} export CC="mpicc" export FC="mpif90" export F77="mpif77" %endif %hpc_configure \ --enable-shared \ --with-pic \ --disable-doxygen \ %if %{with staticlibs} --enable-static %else --disable-static %endif make %{?_smp_mflags} %install %{hpc_setup} module load netcdf export CFLAGS="%{optflags} -I $NETCDF_INC -L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" export FCFLAGS="%{optflags}" export CPPFLAGS=$CFLAGS export LDFLAGS="-L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" %if %{with mpi} export CC="mpicc" export FC="mpif90" export F77="mpif77" %endif make install DESTDIR="%{buildroot}" rm -f %{buildroot}%{hpc_libdir}/*.la %hpc_write_modules_files #%%Module1.0##################################################################### proc ModulesHelp { } { puts stderr " " puts stderr "This module loads the NetCDF Fortran API built with the %{compiler_family} compiler toolchain." puts stderr " " puts stderr "Note that this build of NetCDF leverages the HDF I/O library and requires linkage" puts stderr "against hdf5 and the native C NetCDF library. Consequently, phdf5 and the standard C" puts stderr "version of NetCDF are loaded automatically via this module. A typical compilation" puts stderr "example for Fortran applications requiring NetCDF is as follows:" puts stderr " " puts stderr "\\\$FC -I\\\$NETCDF_FORTRAN_INC app.f90 -L\\\$NETCDF_FORTRAN_LIB -lnetcdff -L\\\$NETCDF_LIB -lnetcdf -L\\\$HDF5_LIB -lhdf5" puts stderr "\nVersion %{version}\n" } module-whatis "Name: %{hpc_upcase %pname} built with %{compiler_family} toolchain %{mpi_flavor: and %{mpi_flavor}}" module-whatis "Version: %{version}" module-whatis "Category: runtime library" module-whatis "Description: %{SUMMARY:0}" module-whatis "%{url}" # Require generic netcdf if [ expr [ module-info mode load ] || [module-info mode display ] ] { if { ![is-loaded netcdf] } { module load netcdf } } set version %{version} prepend-path PATH %{hpc_bindir} prepend-path MANPATH %{hpc_mandir} prepend-path LD_LIBRARY_PATH %{hpc_libdir} setenv %{hpc_upcase_trans_hyph %pname}_DIR %{hpc_prefix} if {[file isdirectory %{hpc_bindir}]} { setenv %{hpc_upcase_trans_hyph %pname}_BIN %{hpc_bindir} } if {[file isdirectory %{hpc_includedir}]} { prepend-path LIBRARY_PATH %{hpc_libdir} prepend-path CPATH %{hpc_includedir} prepend-path C_INCLUDE_PATH %{hpc_includedir} prepend-path CPLUS_INCLUDE_PATH %{hpc_includedir} prepend-path INCLUDE %{hpc_includedir} %hpc_modulefile_add_pkgconfig_path setenv %{hpc_upcase_trans_hyph %pname}_LIB %{hpc_libdir} setenv %{hpc_upcase_trans_hyph %pname}_INC %{hpc_includedir} } EOF %if %_do_check %check %{hpc_setup} module load netcdf export CFLAGS="-I $NETCDF_INC -L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" export CPPFLAGS=$CFLAGS export LDFLAGS="-L$NETCDF_LIB -lnetcdf -L$HDF5_LIB -lhdf5" %if 0%{with mpi} export CC="mpicc" export FC="mpif90" export F77="mpif77" %endif make check %endif %post -n %{libname}%{hpc_package_name_tail %_ver} /sbin/ldconfig -N %{hpc_libdir} %postun -n %{libname}%{hpc_package_name_tail %_ver} /sbin/ldconfig -N %{hpc_libdir} %hpc_module_delete_if_default %files -n %{libname}%{hpc_package_name_tail %_ver} %doc COPYRIGHT README.md RELEASE_NOTES.md %{hpc_dirs} %{hpc_modules_files} %{hpc_libdir}/libnetcdff.so.* %files devel %{hpc_includedir}/ %dir %{hpc_pkgconfigdir} %{hpc_libdir}/pkgconfig/netcdf-fortran.pc %{hpc_libdir}/*.so %dir %{hpc_datadir} %dir %{hpc_mandir} %{hpc_bindir}/ %{hpc_mandir}/man3/ %{hpc_libdir}/libnetcdff.settings %if %{with staticlibs} %files devel-static %{hpc_libdir}/libnetcdff.a %endif %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor