diff --git a/.gitignore b/.gitignore index 281e473..230f55f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,18 @@ /alglib-3.11.0.cpp.gpl.tgz /alglib-3.12.0.cpp.gpl.tgz /alglib-3.13.0.cpp.gpl.tgz +/alglib-3.14.0.cpp.gpl.tgz +/alglib-3.15.0.cpp.gpl.tgz +/alglib-3.16.0.cpp.gpl.tgz +/alglib-3.17.0.cpp.gpl.tgz +/alglib-3.18.0.cpp.gpl.tgz +/alglib-3.19.0.cpp.gpl.tgz +/alglib-3.20.0.cpp.gpl.tgz +/alglib-4.00.0.cpp.gpl.tgz +/alglib-4.01.0.cpp.gpl.tgz +/alglib-4.02.0.cpp.gpl.tgz +/alglib-4.03.0.cpp.gpl.tgz +/alglib-4.04.0.cpp.gpl.tgz +/alglib-4.05.0.cpp.gpl.tgz +/alglib-4.06.0.cpp.gpl.tgz +/alglib-4.07.0.cpp.gpl.tgz diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c8a871..250a57d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,24 +1,43 @@ -# Set the minimum required version of cmake for a project. -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.5) set(ALGLIB_VERSION "" CACHE STRING "The package version") +project(alglib + VERSION ${ALGLIB_VERSION} + LANGUAGES CXX +) + +include(GNUInstallDirs) + file(GLOB_RECURSE HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.h) file(GLOB_RECURSE SRC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.cpp) add_library(alglib SHARED ${SRC}) -set_target_properties(alglib PROPERTIES SUFFIX "-${ALGLIB_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}") +set_target_properties(alglib PROPERTIES + SOVERSION ${PROJECT_VERSION} + VERSION ${PROJECT_VERSION} +) +target_include_directories(alglib PUBLIC + $ +) -add_executable(test_c tests/test_c.cpp) -add_executable(test_i tests/test_i.cpp) -# add_executable(test_x tests/test_x.cpp) -set_target_properties(test_c PROPERTIES COMPILE_FLAGS "-DAE_USE_ALLOC_COUNTER -DAE_DEBUG4POSIX") -set_target_properties(test_i PROPERTIES COMPILE_FLAGS "-DAE_USE_ALLOC_COUNTER -DAE_DEBUG4POSIX") -# set_target_properties(test_x PROPERTIES COMPILE_FLAGS "-DAE_USE_ALLOC_COUNTER -DAE_DEBUG4POSIX") -include_directories(src/) -target_link_libraries(test_c alglib) -target_link_libraries(test_i alglib) -# target_link_libraries(test_x alglib) +install(TARGETS alglib) +install(FILES ${HDR} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alglib) -install(TARGETS alglib LIBRARY DESTINATION lib${LIB_SUFFIX}) -install(FILES ${HDR} DESTINATION include/alglib) +enable_testing() + +foreach(test IN ITEMS + test_c + test_i + # test_x +) + add_executable(${test} tests/${test}.cpp) + target_compile_definitions(${test} PRIVATE + AE_USE_ALLOC_COUNTER + AE_DEBUG4POSIX + ) + target_link_libraries(${test} PRIVATE alglib) + add_test(NAME ${test} + COMMAND ${test} + ) +endforeach() diff --git a/alglib.spec b/alglib.spec index e6b737d..3a73cc4 100644 --- a/alglib.spec +++ b/alglib.spec @@ -1,21 +1,17 @@ Name: alglib -Version: 3.13.0 -Release: 3%{?dist} +Version: 4.07.0 +Release: 2%{?dist} Summary: A numerical analysis and data processing library -License: GPLv2+ +License: GPL-2.0-or-later URL: http://www.alglib.net/ Source0: http://www.alglib.net/translator/re/%{name}-%{version}.cpp.gpl.tgz Source1: CMakeLists.txt # Extracted from manual.cpp.html Source2: bsd.txt -# Make test output more verbose -Patch0: alglib_verbose-tests.patch - BuildRequires: cmake BuildRequires: gcc-c++ -BuildRequires: make %description ALGLIB is a cross-platform numerical analysis and data processing library. @@ -39,7 +35,7 @@ developing applications that use %{name}. %package doc Summary: API documentation for %{name} -License: BSD +License: ALGLIB-Documentation BuildArch: noarch %description doc @@ -47,56 +43,31 @@ The %{name}-doc package contains the %{name} API documentation. %prep -%autosetup -p1 -n cpp +%autosetup -p1 -n %{name}-cpp cp %{SOURCE1} . cp %{SOURCE2} . # Fix permissions and line endings -chmod 644 gpl2.txt -chmod 644 manual.cpp.html +find -type f -exec chmod 0644 {} \; sed -i 's|\r||g' manual.cpp.html %build -mkdir build -( -cd build -# disable FMA support to get it pass all tests -%ifarch aarch64 %{power64} s390 s390x -export CXXFLAGS="$RPM_OPT_FLAGS -ffp-contract=off" -export CFLAGS="$RPM_OPT_FLAGS -ffp-contract=off" -%endif -%cmake -DALGLIB_VERSION=%{version} .. -%make_build -) +%cmake -DALGLIB_VERSION=%{version} +%cmake_build %install -%make_install -C build -ln -s libalglib-%{version}.so %{buildroot}%{_libdir}/libalglib.so +%cmake_install %check -pushd build -# FIXME Temporarily ignore test failures on test_c due to GCC7 test failure on i686, see -# http://bugs.alglib.net/view.php?id=689 -%ifarch %{ix86} -LD_LIBRARY_PATH=$PWD ./test_c || true -%else -LD_LIBRARY_PATH=$PWD ./test_c || false -%endif -LD_LIBRARY_PATH=$PWD ./test_i || false -popd - - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig +%ctest %files %license gpl2.txt -%{_libdir}/libalglib-%{version}.so +%{_libdir}/libalglib.so.4.7.0 %files devel %{_includedir}/%{name}/ @@ -108,6 +79,112 @@ popd %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 4.07.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Mon Dec 29 2025 Sandro Mani - 4.07.0-1 +- Update to 4.07.0 + +* Thu Oct 09 2025 Sandro Mani - 4.06.0-1 +- Update to 4.06.0 + +* Wed Jul 23 2025 Fedora Release Engineering - 4.05.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 16 2025 Sandro Mani - 4.05.0-2 +- Increase minimum cmake version, adapt library version + +* Mon Jun 09 2025 Sandro Mani - 4.05.0-1 +- Update to 4.05.0 + +* Fri May 30 2025 Cristian Le - 4.04.0-3 +- Allow to build with CMake 4.0 +- Use more modern CMake patterns + +* Thu Jan 16 2025 Fedora Release Engineering - 4.04.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sun Dec 22 2024 Sandro Mani - 4.04.0-1 +- Update to 4.04.0 + +* Sun Sep 29 2024 Sandro Mani - 4.03.0-1 +- Update to 4.03.0 + +* Wed Aug 28 2024 Miroslav Suchý - 4.02.0-3 +- convert license to SPDX + +* Wed Jul 17 2024 Fedora Release Engineering - 4.02.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jun 04 2024 Sandro Mani - 4.02.0-1 +- Update to 4.02.0 + +* Mon Jan 22 2024 Fedora Release Engineering - 4.01.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 4.01.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 01 2024 Sandro Mani - 4.01.0-1 +- Update to 4.01.0 + +* Wed Jul 19 2023 Fedora Release Engineering - 4.00.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue May 23 2023 Sandro Mani - 4.0.0-1 +- Update to 4.0.0 + +* Wed Jan 18 2023 Fedora Release Engineering - 3.20.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Dec 21 2022 Sandro Mani - 3.20.0-1 +- Update to 3.20.0 + +* Wed Jul 20 2022 Fedora Release Engineering - 3.19.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Sandro Mani - 3.19.0-1 +- Update to 3.19.0 + +* Wed Jan 19 2022 Fedora Release Engineering - 3.18.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Oct 26 2021 Sandro Mani - 3.18.0-1 +- Update to 3.18.0 + +* Wed Jul 21 2021 Fedora Release Engineering - 3.17.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 3.17.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 29 2020 Sandro Mani - 3.17.0-1 +- Update to 3.17.0 + +* Mon Jul 27 2020 Fedora Release Engineering - 3.16.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 3.16.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Dec 20 2019 Sandro Mani - 3.16.0-1 +- Update to 3.16.0 + +* Wed Jul 24 2019 Fedora Release Engineering - 3.15.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 23 2019 Sandro Mani - 3.15.0-1 +- Update to 3.15.0 + +* Thu Jan 31 2019 Fedora Release Engineering - 3.14.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jul 12 2018 Fedora Release Engineering - 3.14.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Jul 01 2018 Sandro Mani - 3.14.0-1 +- Update to 3.14.0 + * Sun Feb 18 2018 Sandro Mani - 3.13.0-3 - Add missing BR: gcc-c++, make diff --git a/alglib_verbose-tests.patch b/alglib_verbose-tests.patch deleted file mode 100644 index 563efea..0000000 --- a/alglib_verbose-tests.patch +++ /dev/null @@ -1,155 +0,0 @@ -diff -rupN cpp/tests/test_c.cpp cpp-new/tests/test_c.cpp ---- cpp/tests/test_c.cpp 2017-05-11 20:31:18.000000000 +0200 -+++ cpp-new/tests/test_c.cpp 2017-05-12 12:43:37.818224960 +0200 -@@ -3555,8 +3555,8 @@ ae_bool testhqrnd(ae_bool silent, ae_sta - /* - *Discrete/Continuous tests - */ -- discreteerr = hqrnddiscretetest(ae_true, _state); -- continuouserr = hqrndcontinuoustest(ae_true, _state); -+ discreteerr = hqrnddiscretetest(ae_false, _state); -+ continuouserr = hqrndcontinuoustest(ae_false, _state); - - /* - * Final report -@@ -4226,8 +4226,8 @@ ae_bool testsparse(ae_bool silent, ae_st - linearserrors = linearfunctionsstest(_state); - linearmmerrors = linearfunctionsmmtest(_state); - linearsmmerrors = linearfunctionssmmtest(_state); -- copyerrors = copyfunctest(ae_true, _state)||testsparseunit_testconvertsm(_state); -- basiccopyerrors = basiccopyfunctest(ae_true, _state); -+ copyerrors = copyfunctest(ae_false, _state)||testsparseunit_testconvertsm(_state); -+ basiccopyerrors = basiccopyfunctest(ae_false, _state); - enumerateerrors = testsparseunit_enumeratetest(_state); - rewriteexistingerr = testsparseunit_rewriteexistingtest(_state); - testsparseunit_testgetrow(&getrowerrors, _state); -@@ -30805,14 +30805,14 @@ ae_bool testlinlsqr(ae_bool silent, ae_s - ae_bool result; - - -- svdtesterrors = testlinlsqrunit_svdtest(ae_true, _state); -- mwcranksvderr = testlinlsqrunit_mwcranksvdtest(ae_true, _state); -- mwicranksvderr = testlinlsqrunit_mwicranksvdtest(ae_true, _state); -- bidiagonalerr = testlinlsqrunit_bidiagonaltest(ae_true, _state); -- zeromatrixerr = testlinlsqrunit_zeromatrixtest(ae_true, _state); -- reportcorrectnesserr = testlinlsqrunit_reportcorrectnesstest(ae_true, _state); -- stoppingcriteriaerr = testlinlsqrunit_stoppingcriteriatest(ae_true, _state); -- analytictesterrors = testlinlsqrunit_analytictest(ae_true, _state); -+ svdtesterrors = testlinlsqrunit_svdtest(ae_false, _state); -+ mwcranksvderr = testlinlsqrunit_mwcranksvdtest(ae_false, _state); -+ mwicranksvderr = testlinlsqrunit_mwicranksvdtest(ae_false, _state); -+ bidiagonalerr = testlinlsqrunit_bidiagonaltest(ae_false, _state); -+ zeromatrixerr = testlinlsqrunit_zeromatrixtest(ae_false, _state); -+ reportcorrectnesserr = testlinlsqrunit_reportcorrectnesstest(ae_false, _state); -+ stoppingcriteriaerr = testlinlsqrunit_stoppingcriteriatest(ae_false, _state); -+ analytictesterrors = testlinlsqrunit_analytictest(ae_false, _state); - prectesterrors = testlinlsqrunit_preconditionertest(_state); - - /* -@@ -68155,9 +68155,9 @@ ae_bool testfilters(ae_bool silent, ae_s - ae_bool result; - - -- smaerrors = testsma(ae_true, _state); -- emaerrors = testema(ae_true, _state); -- lrmaerrors = testlrma(ae_true, _state); -+ smaerrors = testsma(ae_false, _state); -+ emaerrors = testema(ae_false, _state); -+ lrmaerrors = testlrma(ae_false, _state); - - /* - * Final report -@@ -84229,7 +84229,7 @@ static ae_bool testspline3dunit_basictes - * Prepare a model and check that functions (Spline3DBuildTrilinear, - * Spline3DCalc,Spline3DCalcV) work correctly and - */ -- testspline3dunit_buildrndgrid(ae_true, ae_true, &n, &m, &l, &d, &x, &y, &z, &vf, _state); -+ testspline3dunit_buildrndgrid(ae_false, ae_true, &n, &m, &l, &d, &x, &y, &z, &vf, _state); - rvectorsetlengthatleast(&sf, n*m*l, _state); - - /* -@@ -84333,7 +84333,7 @@ static ae_bool testspline3dunit_testunpa - * NOTE: for this test we need ordered grid, i.e. grid - * with nodes in ascending order - */ -- testspline3dunit_buildrndgrid(ae_true, ae_false, &n, &m, &l, &d, &x, &y, &z, &vf, _state); -+ testspline3dunit_buildrndgrid(ae_false, ae_false, &n, &m, &l, &d, &x, &y, &z, &vf, _state); - sz = n*m*l; - rvectorsetlengthatleast(&sf, sz, _state); - spline3dbuildtrilinearv(&x, n, &y, m, &z, l, &vf, d, &c, _state); -@@ -84484,7 +84484,7 @@ static ae_bool testspline3dunit_testlint - passcount = 15; - for(pass=1; pass<=passcount; pass++) - { -- testspline3dunit_buildrndgrid(ae_true, ae_false, &n, &m, &l, &d, &x, &y, &z, &f, _state); -+ testspline3dunit_buildrndgrid(ae_false, ae_false, &n, &m, &l, &d, &x, &y, &z, &f, _state); - spline3dbuildtrilinearv(&x, n, &y, m, &z, l, &f, d, &c, _state); - for(xjob=0; xjob<=1; xjob++) - { -@@ -91642,8 +91642,8 @@ ae_bool testspline2d(ae_bool silent, ae_ - /* - * Test for vector-function - */ -- vferrors = testspline2dunit_testspline2dvf(ae_true, _state); -- -+ vferrors = testspline2dunit_testspline2dvf(ae_false, _state); -+ - /* - * Report - */ -@@ -92515,7 +92515,7 @@ ae_bool testrbf(ae_bool silent, ae_state - basicrbferrors = testrbfunit_basicrbftest(_state); - irregularrbferrors = testrbfunit_irregularrbftest(_state); - linearitymodelrbferr = testrbfunit_linearitymodelrbftest(_state); -- sqrdegmatrixrbferr = sqrdegmatrixrbftest(ae_true, _state); -+ sqrdegmatrixrbferr = sqrdegmatrixrbftest(ae_false, _state); - multilayerrbf1derrors = ae_false; - multilayerrbferrors = testrbfunit_basicmultilayerrbftest(_state); - sererrors = testrbfunit_serializationtest(_state); -@@ -101261,14 +101261,14 @@ ae_bool testlincg(ae_bool silent, ae_sta - ae_bool result; - - -- basictestxerrors = testlincgunit_basictestx(ae_true, _state); -- basictestiterserr = testlincgunit_basictestiters(ae_true, _state); -- complexreserrors = testlincgunit_complexres(ae_true, _state); -- complexerrors = testlincgunit_complextest(ae_true, _state); -- rcorrectness = testlincgunit_testrcorrectness(ae_true, _state); -- krylovsubspaceerr = testlincgunit_krylovsubspacetest(ae_true, _state); -- sparseerrors = testlincgunit_sparsetest(ae_true, _state); -- preconderrors = testlincgunit_precondtest(ae_true, _state); -+ basictestxerrors = testlincgunit_basictestx(ae_false, _state); -+ basictestiterserr = testlincgunit_basictestiters(ae_false, _state); -+ complexreserrors = testlincgunit_complexres(ae_false, _state); -+ complexerrors = testlincgunit_complextest(ae_false, _state); -+ rcorrectness = testlincgunit_testrcorrectness(ae_false, _state); -+ krylovsubspaceerr = testlincgunit_krylovsubspacetest(ae_false, _state); -+ sparseerrors = testlincgunit_sparsetest(ae_false, _state); -+ preconderrors = testlincgunit_precondtest(ae_false, _state); - - /* - * report -@@ -105960,9 +105960,9 @@ ae_bool call_unittest( - ae_state_set_break_jump(&_alglib_env_state, &_break_jump); - ae_frame_make(&_alglib_env_state, &_frame_block); - if( use_smp ) -- result = smp_testfunc(ae_true, &_alglib_env_state); -+ result = smp_testfunc(ae_false, &_alglib_env_state); - else -- result = seq_testfunc(ae_true, &_alglib_env_state); -+ result = seq_testfunc(ae_false, &_alglib_env_state); - ae_state_clear(&_alglib_env_state); - if( !result ) - *psticky = 1; -@@ -105977,9 +105977,9 @@ ae_bool call_unittest( - ae_state_init(&_alglib_env_state); - ae_frame_make(&_alglib_env_state, &_frame_block); - if( use_smp ) -- result = smp_testfunc(ae_true, &_alglib_env_state); -+ result = smp_testfunc(ae_false, &_alglib_env_state); - else -- result = seq_testfunc(ae_true, &_alglib_env_state); -+ result = seq_testfunc(ae_false, &_alglib_env_state); - ae_state_clear(&_alglib_env_state); - if( !result ) - *psticky = 1; diff --git a/sources b/sources index c0d3954..0594e7e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (alglib-3.13.0.cpp.gpl.tgz) = b0e261b31778a4448b5d8eccb1682e353033293141cf87467e010d953fd4e8528d8e0098133f1289eaa7c798c778e888cbda1b7aff4e96c1e3643595b4687f16 +SHA512 (alglib-4.07.0.cpp.gpl.tgz) = abc0a5aecec019eb4fcb5b3a5a95e88ed1154a52f7348f944dee4ebc8079cddfc00de30b45c6a846a201d4064e55dbcad2afe09df5e74d51120f83277704d733