diff --git a/.gitignore b/.gitignore index 1c6c827..4a8814a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,9 @@ /v2.6.0.tar.gz /libint-2.6.0.tgz /libint-2.6.0-classdoc.tar.bz2 +/libint-2.8.2.tgz +/v2.8.2.tar.gz +/progman-2.8.2.pdf +/v2.9.0.tar.gz +/progman-2.9.0.pdf +/libint-2.9.0.tar.xz diff --git a/generate-sources.sh b/generate-sources.sh index 5ad282e..6a73ebc 100644 --- a/generate-sources.sh +++ b/generate-sources.sh @@ -1,10 +1,10 @@ # Generate libint2 source tarball. -# 2016-07-09 Susi Lehtola +# 2024-02-21 Susi Lehtola # Before running this script, make sure that you have all the -# buildrequires for building libint2 w/ bootstrapping +# buildrequires for building libint2 w/ bootstrapping by running the command -sudo dnf install boost-devel gmp-devel mpfr-devel autoconf automake "tex(latex)" "tex(appendix.sty)" "tex(framed.sty)" "tex(mathcomp.sty)" "tex(subfigure.sty)" "tex(wrapfig.sty)" "tex-bibtex" "tex(bbding.sty)" "tex(braket.sty)" "tex(sfmath.sty)" +# sudo dnf install boost-devel gmp-devel mpfr-devel autoconf automake "tex(latex)" "tex(appendix.sty)" "tex(framed.sty)" "tex(mathcomp.sty)" "tex(subfigure.sty)" "tex(wrapfig.sty)" "tex-bibtex" "tex(bbding.sty)" "tex(braket.sty)" "tex(sfmath.sty)" latex2html # Read the version from the spec file ver=`grep "Version" libint2.spec|awk '{print $2}'` @@ -41,17 +41,35 @@ if [ ! -f libint-${ver}.tgz ]; then export CXX=g++ # Optimization flags to use for the compiler (just speeds up the generation) export OPTFLAGS=`rpm --eval %{optflags}` + export CXXGENFLAGS=`rpm --eval %{optflags}` + + if(( 1 )); then + ../configure --enable-shared --disable-static \ + --enable-eri=2 --enable-eri3=2 --enable-eri2=2 \ + --enable-1body=2 --enable-g12=1 \ + --enable-1body-property-derivs \ + --with-multipole-max-order=10 \ + --with-eri-max-am=6,5,4 \ + --with-eri3-max-am=12,11,10 --with-eri2-max-am=12,11,10 \ + --with-max-am=6,5,4 \ + --with-g12-max-am=5 --with-g12-opt-am=3 \ + --with-g12dkh-max-am=5 --with-g12dkh-opt-am=3 \ + --disable-unrolling --enable-generic-code --enable-contracted-ints \ + --with-cxx-optflags="$OPTFLAGS" \ + | tee configure.log + else + # Much smaller version to work out the packaging + ../configure --enable-shared --disable-static \ + --enable-eri=2 --enable-eri3=2 --enable-eri2=2 \ + --with-eri-max-am=3,2,1 --with-eri-opt-am=3 \ + --with-eri3-max-am=3 --with-eri2-max-am=3 \ + --with-g12-max-am=2 --with-g12-opt-am=2 \ + --with-g12dkh-max-am=2 --with-g12dkh-opt-am=2 \ + --disable-unrolling --enable-generic-code --enable-contracted-ints \ + --with-cxx-optflags="$OPTFLAGS" \ + | tee configure.log + fi - ../configure --enable-shared --disable-static \ - --enable-eri=2 --enable-eri3=2 --enable-eri2=2 \ - --with-eri-max-am=7,5,4 --with-eri-opt-am=3 \ - --with-eri3-max-am=7 --with-eri2-max-am=7 \ - --with-g12-max-am=5 --with-g12-opt-am=3 \ - --with-g12dkh-max-am=5 --with-g12dkh-opt-am=3 \ - --disable-unrolling --enable-generic-code --enable-contracted-ints \ - --with-cxx-optflags="$OPTFLAGS" \ - | tee configure.log - # Generate the library sources echo "Running make export, follow progress in export.log" make export > export.log @@ -65,7 +83,10 @@ make -C doc # Copy the generated source tarball cp libint-${ver}.tgz ../.. # Copy the programmer's manual -cp -p doc/progman/progman.pdf ../.. -# and compress the html sources -cd doc/classdoc -tar jcf ../../../../libint-${ver}-classdoc.tar.bz2 html/ +cp -p doc/progman/progman.pdf ../../progman-${ver}.pdf + +# Recompress with xz +cd ../.. +cp -p libint-${ver}.{tgz,tar.gz} +gunzip libint-${ver}.tar.gz +xz libint-${ver}.tar diff --git a/libint-2.8.2-fedoraver.patch b/libint-2.8.2-fedoraver.patch new file mode 100644 index 0000000..49f4506 --- /dev/null +++ b/libint-2.8.2-fedoraver.patch @@ -0,0 +1,22 @@ +diff -up libint-2.8.2/CMakeLists.txt.fedoraver libint-2.8.2/CMakeLists.txt +--- libint-2.8.2/CMakeLists.txt.fedoraver 2024-02-21 23:21:55.000000000 +0000 ++++ libint-2.8.2/CMakeLists.txt 2024-02-22 09:49:10.871180865 +0000 +@@ -16,7 +16,7 @@ if (LIBINT_BUILDID) + else(LIBINT_BUILDID) + set(LIBINT_EXT_VERSION ${LIBINT_VERSION}) + endif(LIBINT_BUILDID) +-set(MAX_AM_ERI "") # patch here in export tarball w/highest 4-center, 0-deriv ERI AM in numbers ++set(MAX_AM_ERI "7") # patch here in export tarball w/highest 4-center, 0-deriv ERI AM in numbers + + # Add module directory and modules ===================================================================================== + +diff -up libint-2.8.2/src/configuration.cc.cmake.in.fedoraver libint-2.8.2/src/configuration.cc.cmake.in +--- libint-2.8.2/src/configuration.cc.cmake.in.fedoraver 2024-02-21 23:21:54.000000000 +0000 ++++ libint-2.8.2/src/configuration.cc.cmake.in 2024-02-22 09:50:11.307111838 +0000 +@@ -23,5 +23,5 @@ + @return the semicolon-separated strings from CMake components */ + const char* configuration_accessor() { + // return "@Libint2_CONFIG_COMPONENTS@"; +- return "(nyi)"; ++ return "ss;multipole_nn_d0;multipole_mm_d0;multipole_ll_d0;multipole_kk_d0;multipole_ii_d0;multipole_hh_d0;multipole_gg_d0;multipole_ff_d0;multipole_dd_d0;onebody_kk_d0;onebody_ii_d0;onebody_hh_d0;onebody_gg_d0;onebody_ff_d0;onebody_dd_d0;onebody_kk_d1;onebody_ii_d1;onebody_hh_d1;onebody_gg_d1;onebody_ff_d1;onebody_dd_d1;onebody_hh_d2;onebody_gg_d2;onebody_ff_d2;onebody_dd_d2;eri_kkkk_d0;eri_iiii_d0;eri_hhhh_d0;eri_gggg_d0;eri_ffff_d0;eri_dddd_d0;eri_kkkk_d1;eri_iiii_d1;eri_hhhh_d1;eri_gggg_d1;eri_ffff_d1;eri_dddd_d1;eri_gggg_d2;eri_ffff_d2;eri_dddd_d2;eri_kkQ_d0;eri_kkO_d0;eri_kkN_d0;eri_kkM_d0;eri_kkL_d0;eri_kkK_d0;eri_iiQ_d0;eri_iiO_d0;eri_iiN_d0;eri_iiM_d0;eri_iiL_d0;eri_iiK_d0;eri_iiI_d0;eri_hhQ_d0;eri_hhO_d0;eri_hhN_d0;eri_hhM_d0;eri_hhL_d0;eri_hhK_d0;eri_hhI_d0;eri_hhH_d0;eri_ggQ_d0;eri_ggO_d0;eri_ggN_d0;eri_ggM_d0;eri_ggL_d0;eri_ggK_d0;eri_ggI_d0;eri_ggH_d0;eri_ggG_d0;eri_ffQ_d0;eri_ffO_d0;eri_ffN_d0;eri_ffM_d0;eri_ffL_d0;eri_ffK_d0;eri_ffI_d0;eri_ffH_d0;eri_ffG_d0;eri_ffF_d0;eri_ddQ_d0;eri_ddO_d0;eri_ddN_d0;eri_ddM_d0;eri_ddL_d0;eri_ddK_d0;eri_ddI_d0;eri_ddH_d0;eri_ddG_d0;eri_ddF_d0;eri_ddD_d0;eri_kkK_d1;eri_iiK_d1;eri_iiI_d1;eri_hhK_d1;eri_hhI_d1;eri_hhH_d1;eri_ggK_d1;eri_ggI_d1;eri_ggH_d1;eri_ggG_d1;eri_ffK_d1;eri_ffI_d1;eri_ffH_d1;eri_ffG_d1;eri_ffF_d1;eri_ddK_d1;eri_ddI_d1;eri_ddH_d1;eri_ddG_d1;eri_ddF_d1;eri_ddD_d1;eri_hhH_d2;eri_ggH_d2;eri_ggG_d2;eri_ffH_d2;eri_ffG_d2;eri_ffF_d2;eri_ddH_d2;eri_ddG_d2;eri_ddF_d2;eri_ddD_d2;eri_kkq_d0;eri_kko_d0;eri_kkn_d0;eri_kkm_d0;eri_kkl_d0;eri_kkk_d0;eri_iiq_d0;eri_iio_d0;eri_iin_d0;eri_iim_d0;eri_iil_d0;eri_iik_d0;eri_iii_d0;eri_hhq_d0;eri_hho_d0;eri_hhn_d0;eri_hhm_d0;eri_hhl_d0;eri_hhk_d0;eri_hhi_d0;eri_hhh_d0;eri_ggq_d0;eri_ggo_d0;eri_ggn_d0;eri_ggm_d0;eri_ggl_d0;eri_ggk_d0;eri_ggi_d0;eri_ggh_d0;eri_ggg_d0;eri_ffq_d0;eri_ffo_d0;eri_ffn_d0;eri_ffm_d0;eri_ffl_d0;eri_ffk_d0;eri_ffi_d0;eri_ffh_d0;eri_ffg_d0;eri_fff_d0;eri_ddq_d0;eri_ddo_d0;eri_ddn_d0;eri_ddm_d0;eri_ddl_d0;eri_ddk_d0;eri_ddi_d0;eri_ddh_d0;eri_ddg_d0;eri_ddf_d0;eri_ddd_d0;eri_kkk_d1;eri_iik_d1;eri_iii_d1;eri_hhk_d1;eri_hhi_d1;eri_hhh_d1;eri_ggk_d1;eri_ggi_d1;eri_ggh_d1;eri_ggg_d1;eri_ffk_d1;eri_ffi_d1;eri_ffh_d1;eri_ffg_d1;eri_fff_d1;eri_ddk_d1;eri_ddi_d1;eri_ddh_d1;eri_ddg_d1;eri_ddf_d1;eri_ddd_d1;eri_hhh_d2;eri_ggh_d2;eri_ggg_d2;eri_ffh_d2;eri_ffg_d2;eri_fff_d2;eri_ddh_d2;eri_ddg_d2;eri_ddf_d2;eri_ddd_d2;eri_QQ_d0;eri_OO_d0;eri_NN_d0;eri_MM_d0;eri_LL_d0;eri_KK_d0;eri_II_d0;eri_HH_d0;eri_GG_d0;eri_FF_d0;eri_DD_d0;eri_KK_d1;eri_II_d1;eri_HH_d1;eri_GG_d1;eri_FF_d1;eri_DD_d1;eri_HH_d2;eri_GG_d2;eri_FF_d2;eri_DD_d2;eri_qq_d0;eri_oo_d0;eri_nn_d0;eri_mm_d0;eri_ll_d0;eri_kk_d0;eri_ii_d0;eri_hh_d0;eri_gg_d0;eri_ff_d0;eri_dd_d0;eri_kk_d1;eri_ii_d1;eri_hh_d1;eri_gg_d1;eri_ff_d1;eri_dd_d1;eri_hh_d2;eri_gg_d2;eri_ff_d2;eri_dd_d2;g12_hhhh_d0;g12_gggg_d0;g12_ffff_d0;g12_dddd_d0;g12_hhhh_d1;g12_gggg_d1;g12_ffff_d1;g12_dddd_d1"; + } diff --git a/libint-2.9.0-datadir.patch b/libint-2.9.0-datadir.patch new file mode 100644 index 0000000..6ea2af6 --- /dev/null +++ b/libint-2.9.0-datadir.patch @@ -0,0 +1,12 @@ +diff -up libint-2.9.0/CMakeLists.txt.datadir libint-2.9.0/CMakeLists.txt +--- libint-2.9.0/CMakeLists.txt.datadir 2024-08-16 18:09:07.000000000 +0000 ++++ libint-2.9.0/CMakeLists.txt 2024-09-03 18:26:42.987384071 +0000 +@@ -377,7 +377,7 @@ if (LIBINT_HAS_CXX_API) + target_compile_definitions( + libint2_cxx + INTERFACE +- $ ++ $ + ) + endif() + # Add library to the list of installed components diff --git a/libint2.spec b/libint2.spec index a59c7e9..f7f73d3 100644 --- a/libint2.spec +++ b/libint2.spec @@ -2,6 +2,10 @@ %ifarch %{arm} %define _lto_cflags %{nil} %endif +# We run out of memory on many builders since the source files are big, drop down to four threads +%define _smp_mflags -j4 +# Disable x86 architectures since builders run out of memory +ExcludeArch: %{ix86} # RPM macro directory %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) @@ -12,16 +16,17 @@ # We use -O2 for the compiler and -O1 for the library (these are given # in configure). The common flags are %global commonflags %(echo %{optflags} | sed "s|-O2||g") -%global optflags %commonflags -O1 +%global optflags %commonflags -O1 -fno-var-tracking-assignments # API version provided. Increment this whenever you change the configure time flags. -%global apiversion 0 +%global apiversion 1 Name: libint2 -Version: 2.6.0 -Release: 12%{?dist} +Version: 2.9.0 +Release: 5%{?dist} Summary: A library for efficient evaluation of electron repulsion integrals -License: GPLv2+ +# Generator itself is GPLv2+, generated library packaged in Fedora is LGPLv3 +License: LGPL-3.0-only URL: https://github.com/evaleev/libint # Compiler sources @@ -34,14 +39,14 @@ Source0: https://github.com/evaleev/libint/archive/v%{version}.tar.gz # generated on the same run, debuginfo will turn up missing from the # RPM (BZ #9619635). For this reason pregenerated sources are used. To # generate the sources, run the generate-sources.sh script. -Source1: libint-%{version}.tgz +Source1: libint-%{version}.tar.xz # The programmers' manual is compiled from the LaTeX source by generate-sources.sh -Source2: progman.pdf -# and the html documentation is extracted from the source code as well -Source3: libint-%{version}-classdoc.tar.bz2 +Source2: progman-%{version}.pdf -# Fix Fortran example -Patch0: libint-2.6.0-fexample.patch +# The source tarball generator does not introduce all info in the CMake config for now, this patches in the missing info +Patch0: libint-2.8.2-fedoraver.patch +# Fix location of data directory in generated CMake config +Patch1: libint-2.9.0-datadir.patch Provides: libint2(api)%{?_isa} = %{apiversion} @@ -50,9 +55,10 @@ BuildRequires: gcc-gfortran BuildRequires: boost-devel BuildRequires: mpfr-devel BuildRequires: python3-devel -BuildRequires: make -# Disabled until 2.7.0 -#BuildRequires: eigen3-devel +BuildRequires: make +BuildRequires: cmake +BuildRequires: eigen3-devel +BuildRequires: pybind11-devel %description LIBINT computes the Coulomb and exchange integrals, which in electronic @@ -65,45 +71,53 @@ computer implementation of such methods by implementing an optimizing compiler to generate automatically highly-specialized code that runs well on super-scalar architectures. -%package doc -Summary: Documentation for libint +%package data +Summary: Shared data for libint2 Requires: libint2 = %{version}-%{release} +BuildArch: noarch + +%description data +This package contains shared data for libint2. + +%package doc +Summary: Documentation for libint2 +Requires: libint2 = %{version}-%{release} +BuildArch: noarch %description doc This package contains a programmer's manual and doxygen documentation for the classes. %package devel -Summary: Development headers and libraries for libint +Summary: Development headers and libraries for libint2 Requires: libint2%{?_isa} = %{version}-%{release} # For dir ownership Requires: cmake +# Dependencies for compiling code +Requires: boost-devel +Requires: eigen3-devel +Requires: gmp-devel +Requires: mpfr-devel %description devel -This package contains development headers and libraries for libint. +This package contains development headers and libraries for libint2. %prep %setup -q -T -b 1 -n libint-%{version} -%patch0 -p1 -b .fexample -# Copy programmers manual and extract the html documentation -cp -p %{SOURCE2} doc -tar jxf %{SOURCE3} +%patch 0 -p1 -b .fedora +# Copy programmers manual +cp -p %{SOURCE2} doc/progman.pdf %build export CXX=g++ - -%configure --enable-shared --disable-static --enable-fortran \ - --with-incdirs="-I%{_includedir}/eigen3" \ - --with-cxx-optflags="%{optflags}" -%make_build +%cmake -DENABLE_FORTRAN=ON -DENABLE_MPFR=ON -DLIBINT2_PYTHON=ON -DLIBINT2_INSTALL_LIBDIR=%{_libdir} -DLIBINT2_INSTALL_DATADIR=%{_datadir}/%{name} -DLIBINT2_INSTALL_CMAKEDIR=%{_libdir}/cmake/%{name} +%cmake_build %install -%make_install +%cmake_install find %{buildroot} -name *.la -delete # Make sure libraries are executable (otherwise they are not stripped) -find %{buildroot} -name *.so.*.* -exec chmod 755 {} \; -# Get rid of the basis set files that ship with libint -find %{buildroot}%{_datadir}/libint -name \*.g94 -delete +find %{buildroot} -name *.so* -exec chmod 755 {} \; # Create macro file mkdir -p %{buildroot}%{macrosdir} @@ -120,10 +134,14 @@ mv %{buildroot}%{_includedir}/libint_f.mod %{buildroot}%{_fmoddir}/ %files %doc LICENSE COPYING -%{_libdir}/libint*.so.* +%{_libdir}/libint2.so.2 +%{_libdir}/libint2.so.%{version} + +%files data +%{_datadir}/libint2/ %files doc -%doc doc/progman.pdf html +%doc doc/progman.pdf %files devel %{macrosdir}/macros.libint2 @@ -131,11 +149,53 @@ mv %{buildroot}%{_includedir}/libint_f.mod %{buildroot}%{_fmoddir}/ %{_includedir}/libint2/ %{_includedir}/libint2.h %{_includedir}/libint2.hpp -%{_libdir}/*.so %{_libdir}/pkgconfig/libint2.pc %{_fmoddir}/libint_f.mod +%{_libdir}/libint2.so %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 2.9.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 17 2025 Fedora Release Engineering - 2.9.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Tue Sep 03 2024 Susi Lehtola 2.9.0-3 +- Fix location of data directory in generated CMake config. + +* Tue Sep 03 2024 Susi Lehtola 2.9.0-2 +- Devel package now pulls in boost, eigen3, gmp, and mpfr development + packages that are needed to build against libint2. + +* Sun Aug 18 2024 Susi Lehtola 2.9.0-1 +- Disable build on i386 architecture where the build runs out of memory. +- Update license tag to LGPL-3.0-only (generated library). +- Update to 2.9.0. + +* Fri Jul 26 2024 Miroslav Suchý - 2.8.2-3 +- convert license to SPDX + +* Thu Jul 18 2024 Fedora Release Engineering - 2.8.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Feb 21 2024 Susi Lehtola - 2.8.2-1 +- Update to 2.8.2. + +* Thu Jan 25 2024 Fedora Release Engineering - 2.6.0-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.6.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 2.6.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 2.6.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 2.6.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Thu Jan 20 2022 Fedora Release Engineering - 2.6.0-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index a91a051..b18a88b 100644 --- a/sources +++ b/sources @@ -1,4 +1,3 @@ -SHA512 (v2.6.0.tar.gz) = 56343c64b0dfb829702f4bb2fe14a04ad063acd7cb8b5a21cd1a45a830944c1ee98c888c9a28d6746b1bc17459aefcfb0aafe6ef310bfe554056212ad19e43ef -SHA512 (libint-2.6.0.tgz) = 35298dee20ba84c9405cdd7f81fef5e0be58e431c427bd73eb2c6292f5946664aac71d28159f7070c5afce0f1d280a851c61f2777468624d7edcd32d5a4fdfe3 -SHA512 (libint-2.6.0-classdoc.tar.bz2) = 6a0959f26b933bb29511ef3c5e521e1fb2456e563eb8e5094237e4b4feaaa8eacf1552f794ee1bb2e38c4f71e5456d940df35672304af9d6c6bac11247b20781 -SHA512 (progman.pdf) = 2562e4cc7e70944adaec3bb1637ce5e7fdbb04c71ae15e29c246d5866dcdc36d313019af6cd8d1d53ccea0685591f2a5676e5f90dd29bd8fd097824ebe7de742 +SHA512 (v2.9.0.tar.gz) = 6cffbd3d78dee4722b8085f4dd93085351cb610b5cb7ac090335adb2c43e87256ca06a658c202473fd763a38f7c0eeb6570b2c6a107e3f41d1258baf6e5b17de +SHA512 (progman-2.9.0.pdf) = 2eb6728e69ac3b395bf39c994f99fd937adf2a0ea7a5664b2e9313d00f4cd4c13a0eabc35c978bd6756938065a870c6bf88544c63bf6cb07c0862438413a8772 +SHA512 (libint-2.9.0.tar.xz) = 5bfeb16c5123f277481922f4894e79f75fe923c90b0a4440b55881b9f270a53b5a91cba569a3b25e2aeaa142688e7454d13608c1f5673f5843b7605fb07bd7b2