diff --git a/mpqc-2.3.1-c23-function-prototype.patch b/mpqc-2.3.1-c23-function-prototype.patch new file mode 100644 index 0000000..93db296 --- /dev/null +++ b/mpqc-2.3.1-c23-function-prototype.patch @@ -0,0 +1,74 @@ +diff --git a/src/lib/math/isosurf/implicit.c b/src/lib/math/isosurf/implicit.c +index c02a0e1..bf37f5c 100644 +--- a/src/lib/math/isosurf/implicit.c ++++ b/src/lib/math/isosurf/implicit.c +@@ -124,8 +124,8 @@ typedef struct intlists { /* list of list of integers */ + } INTLISTS; + + typedef struct process { /* parameters, function, storage */ +- double (*function)(); /* implicit surface function */ +- int (*triproc)(); /* triangle output function */ ++ double (*function)(double, double, double); /* implicit surface function */ ++ int (*triproc)(int, int, int, VERTICES); /* triangle output function */ + double size, delta; /* cube size, normal delta */ + int bounds; /* cube range within lattice */ + POINT start; /* start point on surface */ +@@ -136,14 +136,12 @@ typedef struct process { /* parameters, function, storage */ + EDGELIST **edges; /* edge and vertex id hash table */ + } PROCESS; + +-void *calloc(); +- + #define mycalloc(n,nbyte) _mycalloc(n,nbyte,__LINE__) + #define myfree(ptr) _myfree(ptr,__LINE__) + + static void makecubetable (); + static void free_cubetable(); +-static void converge(POINT*,POINT*,double,double(*f)(),POINT*); ++static void converge(POINT*,POINT*,double,double(*f)(double, double, double),POINT*); + static CORNER *setcorner (PROCESS*, int, int, int); + static int setcenter(CENTERLIST *table[], int, int, int); + static int dotet (CUBE*, int, int, int, int, PROCESS*); +@@ -231,7 +229,7 @@ VERTICES vertices; + + main () + { +- char *err, *polygonize(); ++ char *err; + + keepaspect(1, 1); + winopen("implicit"); +@@ -346,13 +344,12 @@ main () + */ + + char *polygonize (function, size, bounds, x, y, z, triproc, mode) +-double (*function)(), size, x, y, z; +-int bounds, (*triproc)(), mode; ++double (*function)(double, double, double), size, x, y, z; ++int bounds, (*triproc)(int, int, int, VERTICES), mode; + { + PROCESS p; + int n, noabort; +- CORNER *setcorner(); +- TEST in, out, find(); ++ TEST in, out; + + p.function = function; + p.triproc = triproc; +@@ -499,7 +496,6 @@ int i, j, k, face, c1, c2, c3, c4; + { + CUBE new; + CUBES *oldcubes = p->cubes; +- CORNER *setcorner(); + int n, pos = old->corners[c1]->value > 0.0 ? 1 : 0; + /* static int facebit[6] = {2, 2, 1, 1, 0, 0}; */ + /* int bit = facebit[face]; */ +@@ -1015,7 +1011,7 @@ PROCESS *p; + + static void converge (p1, p2, v, function, p) + double v; +-double (*function)(); ++double (*function)(double, double, double); + POINT *p1, *p2, *p; + { + int i = 0; diff --git a/mpqc-2.3.1-cpp17-exception-specification.patch b/mpqc-2.3.1-cpp17-exception-specification.patch new file mode 100644 index 0000000..5afd1db --- /dev/null +++ b/mpqc-2.3.1-cpp17-exception-specification.patch @@ -0,0 +1,91 @@ +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ijxy.cc b/src/lib/chemistry/qc/mbptr12/transform_ijxy.cc +index 2b45d3b..a25e5f9 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ijxy.cc ++++ b/src/lib/chemistry/qc/mbptr12/transform_ijxy.cc +@@ -174,7 +174,7 @@ TwoBodyMOIntsTransform_ijxy::init_acc() + } + + void +-TwoBodyMOIntsTransform_ijxy::check_int_symm(double threshold) const throw (ProgrammingError) ++TwoBodyMOIntsTransform_ijxy::check_int_symm(double threshold) const /*throw (ProgrammingError)*/ + { + Ref iacc = ints_acc(); + if (!iacc->is_committed()) +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ijxy.h b/src/lib/chemistry/qc/mbptr12/transform_ijxy.h +index 3407cb3..ecb61c6 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ijxy.h ++++ b/src/lib/chemistry/qc/mbptr12/transform_ijxy.h +@@ -70,7 +70,7 @@ public: + /// Computes transformed integrals + void compute(); + /// Check symmetry of transformed integrals +- void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const throw (ProgrammingError); ++ void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const /*throw (ProgrammingError)*/; + }; + + } +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ikjy.cc b/src/lib/chemistry/qc/mbptr12/transform_ikjy.cc +index ccb8d45..43c2fb6 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ikjy.cc ++++ b/src/lib/chemistry/qc/mbptr12/transform_ikjy.cc +@@ -175,7 +175,7 @@ TwoBodyMOIntsTransform_ikjy::init_acc() + } + + void +-TwoBodyMOIntsTransform_ikjy::check_int_symm(double threshold) const throw (ProgrammingError) ++TwoBodyMOIntsTransform_ikjy::check_int_symm(double threshold) const /*throw (ProgrammingError)*/ + { + Ref iacc = ints_acc(); + if (!iacc->is_committed()) +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ikjy.h b/src/lib/chemistry/qc/mbptr12/transform_ikjy.h +index 5697813..4be38e4 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ikjy.h ++++ b/src/lib/chemistry/qc/mbptr12/transform_ikjy.h +@@ -70,7 +70,7 @@ public: + /// Computes transformed integrals + void compute(); + /// Check symmetry of transformed integrals +- void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const throw (ProgrammingError); ++ void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const /*throw (ProgrammingError)*/; + }; + + } +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ixjy.cc b/src/lib/chemistry/qc/mbptr12/transform_ixjy.cc +index 2548296..b4f08cd 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ixjy.cc ++++ b/src/lib/chemistry/qc/mbptr12/transform_ixjy.cc +@@ -182,7 +182,7 @@ TwoBodyMOIntsTransform_ixjy::init_acc() + } + + void +-TwoBodyMOIntsTransform_ixjy::check_int_symm(double threshold) const throw (ProgrammingError) ++TwoBodyMOIntsTransform_ixjy::check_int_symm(double threshold) const /*throw (ProgrammingError)*/ + { + Ref iacc = ints_acc(); + if (!iacc->is_committed()) +diff --git a/src/lib/chemistry/qc/mbptr12/transform_ixjy.h b/src/lib/chemistry/qc/mbptr12/transform_ixjy.h +index 8fda231..a10e4ef 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_ixjy.h ++++ b/src/lib/chemistry/qc/mbptr12/transform_ixjy.h +@@ -71,7 +71,7 @@ public: + /// Computes transformed integrals + void compute(); + /// Check symmetry of transformed integrals +- void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const throw (ProgrammingError); ++ void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const /*throw (ProgrammingError)*/; + }; + + } +diff --git a/src/lib/chemistry/qc/mbptr12/transform_tbint.h b/src/lib/chemistry/qc/mbptr12/transform_tbint.h +index 731a53c..57e4e19 100644 +--- a/src/lib/chemistry/qc/mbptr12/transform_tbint.h ++++ b/src/lib/chemistry/qc/mbptr12/transform_tbint.h +@@ -196,7 +196,7 @@ public: + /// Computes transformed integrals + virtual void compute() = 0; + /// Check symmetry of transformed integrals +- virtual void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const throw (ProgrammingError) =0; ++ virtual void check_int_symm(double threshold = TwoBodyMOIntsTransform::zero_integral) const /*throw (ProgrammingError)*/ =0; + /// Make the transform obsolete. Next call to compute() will recompute + virtual void obsolete(); + diff --git a/mpqc-2.3.1-cpp20-std_istream-redirect.patch b/mpqc-2.3.1-cpp20-std_istream-redirect.patch new file mode 100644 index 0000000..54c3ab0 --- /dev/null +++ b/mpqc-2.3.1-cpp20-std_istream-redirect.patch @@ -0,0 +1,29 @@ +--- mpqc-2.3.1/src/lib/util/state/state_text.cc.cpp20 2002-10-11 04:58:21.000000000 +0900 ++++ mpqc-2.3.1/src/lib/util/state/state_text.cc 2026-01-15 14:40:20.392566622 +0900 +@@ -138,6 +138,7 @@ StateInText::no_array() + + /////////////////////////////////////////////////////////////////////// + ++/* + int + StateInText::read(char*s) + { +@@ -149,6 +150,7 @@ StateInText::read(char*s) + } + return strlen(s)+1; + } ++*/ + + int + StateInText::read(unsigned int&i) +--- mpqc-2.3.1/src/lib/util/state/state_text.h.cpp20 2002-04-03 15:44:40.000000000 +0900 ++++ mpqc-2.3.1/src/lib/util/state/state_text.h 2026-01-15 14:40:28.004235129 +0900 +@@ -94,7 +94,7 @@ class StateInText: public StateInFile { + void no_newline(); + void no_array(); + +- int read(char*); ++ /* int read(char*); */ + int read(unsigned int&); + int read(int&); + int read(float&); diff --git a/mpqc.spec b/mpqc.spec index 4a7bf89..4253eb1 100644 --- a/mpqc.spec +++ b/mpqc.spec @@ -1,9 +1,9 @@ Name: mpqc Summary: Ab-inito chemistry program Version: 2.3.1 -Release: 34%{?dist} -License: GPLv2+ and LGPLv2+ -Group: Applications/Engineering +Release: 66%{?dist} +# Automatically converted from old format: GPLv2+ and LGPLv2+ - review is highly recommended. +License: GPL-2.0-or-later AND LicenseRef-Callaway-LGPLv2+ URL: http://www.mpqc.org/ Source0: http://downloads.sourceforge.net/mpqc/%{name}-%{version}.tar.bz2 Source1: bash-script-noarch @@ -11,11 +11,22 @@ Patch0: mpqc-2.3.1-mdv-fix-wfn-lib.patch Patch1: mpqc-2.3.1-format-security.patch # C++11 build fix Patch2: mpqc-2.3.1-cpp11-constexpr.patch +# C23 strict function prototype fix +Patch3: mpqc-2.3.1-c23-function-prototype.patch +# C++17 build fix: remove deprecated exception specification +Patch4: mpqc-2.3.1-cpp17-exception-specification.patch +# C++20 fix: std::istream operator>>(char *) removal +Patch5: mpqc-2.3.1-cpp20-std_istream-redirect.patch Requires: %{name}-libs%{?_isa} = %{version}-%{release} +BuildRequires: make +BuildRequires: gcc-c++ BuildRequires: libtool flex bison BuildRequires: desktop-file-utils -BuildRequires: gcc-gfortran perl-generators tk doxygen -BuildRequires: libint-devel atlas-devel +BuildRequires: gcc-gfortran perl-generators +BuildRequires: doxygen +BuildRequires: /usr/bin/wish +BuildRequires: libint-devel +BuildRequires: flexiblas-devel %description MPQC is the Massively Parallel Quantum Chemistry Program. It computes @@ -27,7 +38,6 @@ oriented, using the C++ programming language. %package data Summary: Atom info and basis sets from MPQC -Group: Applications/Engineering #Requires: %{name}-doc = %{version}-%{release} BuildArch: noarch @@ -36,7 +46,6 @@ Atom info and basis sets from MPQC. %package doc Summary: HTML documentation for MPQC -Group: Applications/Engineering BuildArch: noarch %description doc @@ -45,7 +54,6 @@ with a graphical browser like Mozilla. %package libs Summary: Main libraries for %{name} -Group: Development/Libraries Requires: %{name}-data = %{version}-%{release} # Libint can have API breakage between releases Requires: libint(api)%{?_isa} = %{_libint_apiversion} @@ -57,7 +65,6 @@ based on mpqc computational chemistry package from Sandia Labs. %package devel Summary: Development headers and libraries for %{name} -Group: Development/Libraries Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description devel @@ -67,9 +74,13 @@ based on mpqc computational chemistry package from Sandia Labs. %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -b .cpp11 +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 -b .cpp11 +%patch -P3 -p1 -b .c23 +%patch -P4 -p1 -b .cpp17 +%patch -P5 -p1 -b .cpp20 + sed -i -e 's,molrender.in,%{_datadir}/molrender/molrender.in,g' src/bin/molrender/tkmolrender.in sed -i -e 's,prefix/lib,prefix/%{_lib},g' configure.in # fixup for modern autoreconf @@ -79,6 +90,8 @@ sed -i -r -e 's/AC_DEFINE_UNQUOTED\(([^,]*),([^)]*)\)/AC_DEFINE_UNQUOTED([\1],\2 sed -i -r -e 's/AC_DEFINE_DIR\(([^,]*),([^)]*)\)/AC_DEFINE_DIR([\1],\2,[\1])/g' configure.ac sed -i -r -e 's/AC_CANONICAL_SYSTEM/AC_CANONICAL_SYSTEM\nAC_DEFINE([SHMTYPE], [void *], [data type for shmat])/g' configure.ac sed -i -r -e 's/AC_DEFINE\(\[CXX_RESTRICT\],1,\[CXX_RESTRICT\]\)/AC_DEFINE([restrictxx],[restrict],[have restrict keyword]),AC_DEFINE([restrictxx],[],[do not have restrict keyword])/g' configure.ac +# Make configure.ac c99 conformant, -Werror=implicit-int -Werror=implicit-function-declaration +sed -i -e '\@main.*FF@s|main|extern void FF(void); int main|' configure.ac rm -f lib/autoconf/libtool.m4 # end autoreconf fixup cat >molrender.desktop << EOF @@ -97,20 +110,12 @@ EOF export F77=gfortran autoreconf -v -f -i -I lib/autoconf -# Libraries to use -%if 0%{?fedora} > 20 -lapacklib="-L%{_libdir}/atlas -ltatlas" -%else -lapacklib="-L%{_libdir}/atlas -llapack -lf77blas -latlas" -%endif - %configure --enable-shared --disable-static \ --enable-threads --disable-parallel \ --includedir="%{_includedir}/mpqc" \ - --with-libdirs="-L%{_libdir}/atlas" \ --with-cxx-optflags="$CXXFLAGS" \ --with-cc-optflags="$CFLAGS" \ - --with-libs="$lapacklib" + --with-libs="-lflexiblas" sed -i 's|.rpath .libdir||g' bin/sc-config sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool @@ -159,9 +164,7 @@ do chmod 0755 %{buildroot}%{_bindir}/${f} done -%post libs -p /sbin/ldconfig - -%postun libs -p /sbin/ldconfig +%ldconfig_scriptlets libs %files %doc CHANGES CITATION README @@ -199,6 +202,104 @@ done %changelog +* Thu Jan 15 2026 Mamoru TASAKA - 2.3.1-66 +- c++20 fix for std::istream redirect operator change + +* Thu Jul 24 2025 Fedora Release Engineering - 2.3.1-65 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 31 2025 Mamoru TASAKA - 2.3.1-64 +- Use wish instead of tk for BuildRequires +- F42: rebuild with wish in tk9 + +* Mon Jan 20 2025 Mamoru TASAKA - 2.3.1-63 +- Support C++17, remove deprecated exception specification + +* Sun Jan 19 2025 Mamoru TASAKA - 2.3.1-62 +- Support C23 strict function prototype + +* Fri Jan 17 2025 Fedora Release Engineering - 2.3.1-61 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Sep 02 2024 Miroslav Suchý - 2.3.1-60 +- convert license to SPDX + +* Thu Jul 18 2024 Fedora Release Engineering - 2.3.1-59 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri May 31 2024 Mamoru TASAKA - 2.3.1-58 +- Update %%patch usage for recent rpm + +* Thu Jan 25 2024 Fedora Release Engineering - 2.3.1-57 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.3.1-56 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 2.3.1-55 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 2.3.1-54 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sun Nov 27 2022 Mamoru TASAKA - 2.3.1-53 +- Make configure (wrt Fortran symbol detection) c99 conformant + for -Werror=implicit-int -Werror=implicit-function-declaration + +* Thu Jul 21 2022 Fedora Release Engineering - 2.3.1-52 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 2.3.1-51 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 2.3.1-50 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 2.3.1-49 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sun Aug 16 2020 Iñaki Úcar - 2.3.1-48 +- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager + +* Tue Jul 28 2020 Fedora Release Engineering - 2.3.1-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Jeff Law - 2.3.1-46 +- Use C++14 as this code is not C++17 ready + +* Wed Jan 29 2020 Fedora Release Engineering - 2.3.1-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 2.3.1-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 2.3.1-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 2.3.1-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 2.3.1-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Mamoru TASAKA - 2.3.1-40 +- F-28: rebuild against gfortran 8 + +* Thu Aug 03 2017 Fedora Release Engineering - 2.3.1-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.3.1-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 15 2017 Fedora Release Engineering - 2.3.1-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 2.3.1-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jan 30 2017 Mamoru TASAKA - 2.3.1-35 +- F-26: rebuild against gfortran 7 + * Fri May 6 2016 Mamoru TASAKA - 2.3.1-34 - Fix up sc-config all_sclibs - Rename arch-dependent scripts into arch-dependent names