From ff30601f3690f5b6a286fc03f759dc75585f7934 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Tue, 4 Jun 2024 16:09:24 +0200 Subject: [PATCH 01/27] Add version details to some third-party libraries --- Installation/CMakeLists.txt | 8 ++++++++ TDS_3/test/TDS_3/CMakeLists.txt | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 98d27538371c..9b630ea8f8f1 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -480,6 +480,14 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() +find_package(TBB QUIET) +if(TBB_FOUND) + message(STATUS "Using TBB version ${TBB_VERSION}") +endif() +find_package(Eigen3 QUIET) +if(Eigen3_FOUND) + message(STATUS "Using Eigen3 version ${EIGEN3_VERSION}") +endif() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- diff --git a/TDS_3/test/TDS_3/CMakeLists.txt b/TDS_3/test/TDS_3/CMakeLists.txt index a80cd824ea39..1f407fd84a5e 100644 --- a/TDS_3/test/TDS_3/CMakeLists.txt +++ b/TDS_3/test/TDS_3/CMakeLists.txt @@ -12,6 +12,6 @@ create_single_source_cgal_program("test_triangulation_tds_3.cpp") create_single_source_cgal_program("test_io_tds3.cpp") if(TARGET CGAL::TBB_support) - message(STATUS "Found TBB") + message(STATUS "Found TBB ${TBB_VERSION}") target_link_libraries(test_triangulation_tds_3 PUBLIC CGAL::TBB_support) endif() From 46f4171ec0db5d9fc727b1a80e5febd07f5ff131 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Wed, 12 Jun 2024 11:02:01 +0200 Subject: [PATCH 02/27] display third party libraries in summary --- Installation/CMakeLists.txt | 4 +-- .../test_handling/create_testresult_page | 26 +++++++++++++++---- Maintenance/test_handling/to_zipped_format | 6 ++++- TDS_3/test/TDS_3/CMakeLists.txt | 2 +- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 9b630ea8f8f1..c45306233a86 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -482,11 +482,11 @@ endif() find_package(TBB QUIET) if(TBB_FOUND) - message(STATUS "Using TBB version ${TBB_VERSION}") + message(STATUS "Third-parties libraries TBB ${TBB_VERSION}") endif() find_package(Eigen3 QUIET) if(Eigen3_FOUND) - message(STATUS "Using Eigen3 version ${EIGEN3_VERSION}") + message(STATUS "Third-parties libraries Eigen3 ${EIGEN3_VERSION}") endif() message("== Generate version files (DONE) ==\n") diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index ca62a5928286..d023b5c6996a 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -752,10 +752,22 @@ sub create_summary_page { my @letters = ('r', 'n', 'w', 'o'); my $letters_options = join("\n", map { "" } @letters); my $package_options = join("\n", map { "" } sort keys %test_directories); + my $third_party_libraries = ""; my @search_index; my ($platform_num, $platform) = (0, ""); foreach $platform (@platforms_to_do) { + if (open (PLATFORM_INFO, "results_${platform}.info")) { + my $line = ""; + while () { + $line = $_; + if ($line =~ /^TPL:/) { + $third_party_libraries = $line; + } + print "$line\n"; + } + close PLATFORM_INFO; + } foreach my $letter (@letters) { foreach my $test_directory (sort keys %test_directories) { my $resulttext = $testresults[$platform_num]->{$test_directory}; @@ -767,6 +779,7 @@ sub create_summary_page { content => $warnings_and_errors, release => $release_name, letters => $letter, + third_party_libraries => $third_party_libraries, }; } } @@ -791,11 +804,11 @@ sub create_summary_page { "https://www.w3.org/TR/html4/strict.dtd"> - - Summary - - - - - - - - - -
-

Summary Results of ${release_name}

- - - -
-
+ + + Summary + + + + + + + + + + +
+

Summary Results of ${release_name}

+ + + +
+
+ + +
+
+
+
+
+ EOF my $summary_page_path = "$testresult_dir/summary".substr($release_name,4).".html"; diff --git a/Maintenance/test_handling/testresult.css b/Maintenance/test_handling/testresult.css index f95a62452f92..94a1c213a850 100644 --- a/Maintenance/test_handling/testresult.css +++ b/Maintenance/test_handling/testresult.css @@ -89,4 +89,30 @@ TABLE.result TD > a.package_name { grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 20px; - } \ No newline at end of file +} + +.toggle-button { + text-decoration: underline; + border: none; + color: #0000EE; + cursor: pointer; +} + +.summary-content{ + overflow: auto; + max-height: 600px; +} + +.directory_container{ + display: flex; + align-items: center; +} + +.platform-container { + display: flex; + align-items: center; +} + +.platform-link { + margin-right: 10px; +} \ No newline at end of file From d8451ecfed86fcc2a3d0debebbd48babeb6230eb Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Wed, 10 Jul 2024 16:27:16 +0200 Subject: [PATCH 04/27] Update third-party library names and versions in CMakeLists.txt --- Installation/CMakeLists.txt | 55 ++++++++++++++++++++-- Maintenance/test_handling/to_zipped_format | 2 +- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index c45306233a86..744b24e7de24 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -482,14 +482,63 @@ endif() find_package(TBB QUIET) if(TBB_FOUND) - message(STATUS "Third-parties libraries TBB ${TBB_VERSION}") + message(STATUS "Third-party library TBB ${TBB_VERSION}") endif() find_package(Eigen3 QUIET) if(Eigen3_FOUND) - message(STATUS "Third-parties libraries Eigen3 ${EIGEN3_VERSION}") + message(STATUS "Third-party library Eigen3 ${EIGEN3_VERSION}") +endif() + +find_package(GMP QUIET) +if(GMP_FOUND) + message(STATUS "Third-party library GMP ${GMP_VERSION}") +endif() + +find_package(MPFR QUIET) +if(MPFR_FOUND) + message(STATUS "Third-party library MPFR ${MPFR_VERSION}") +endif() + +find_package(OpenGR QUIET) +if(OpenGR_FOUND) + message(STATUS "Third-party library OpenGR found") +endif() + +find_package(libpointmatcher QUIET) +if(libpointmatcher_FOUND) + message(STATUS "Third-party library libpointmatcher found") +endif() + +find_package(LEDA QUIET) +if(LEDA_FOUND) + message(STATUS "Third-party library LEDA found") endif() -message("== Generate version files (DONE) ==\n") +find_package(MPFI QUIET) +if(MPFI_FOUND) + message(STATUS "Third-party library MPFI found") +endif() + +find_package(NTL QUIET) +if(NTL_FOUND) + message(STATUS "Third-party library NTL found") +endif() + +find_package(OpenCV QUIET) +if(OpenCV_FOUND) + message(STATUS "Third-party library OpenCV ${OpenCV_VERSION}") +endif() + +find_package(METIS QUIET) +if(METIS_FOUND) + message(STATUS "Third-party library METIS found") +endif() + +find_package(ZLIB QUIET) +if(ZLIB_FOUND) + message(STATUS "Third-party library zlib ${ZLIB_VERSION_STRING}") +endif() +message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- # # -= External libraries =- diff --git a/Maintenance/test_handling/to_zipped_format b/Maintenance/test_handling/to_zipped_format index e04106ade2b1..b46fe121837c 100755 --- a/Maintenance/test_handling/to_zipped_format +++ b/Maintenance/test_handling/to_zipped_format @@ -132,7 +132,7 @@ sub reformat_results($) # print PLATFORM_NEW_RESULTS $_; # last; # } - if (/^-- Third-parties libraries ([\w\.]+ [\w\.\_\-]*)/) { + if (/^-- Third-party library ([\w\.]+ [\w\.\_\-]*)/) { $TPL = "$TPL $1,"; } NEXT: if(! ($_= )) { From fc9a08e93e8126ab13fab9ed6a6e29761178fd5b Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Thu, 11 Jul 2024 16:18:37 +0200 Subject: [PATCH 05/27] Update library check to use a function and loop --- Installation/CMakeLists.txt | 99 ++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 56 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 744b24e7de24..ae5b5ba58bce 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -479,65 +479,52 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() endif() +set(LIBRARIES_TO_CHECK + Boost GMP MPFR + #VTK + Qt6 + Eigen3 OpenGR libpointmatcher LEDA MPFI + NTL TBB OpenCV METIS ZLIB + Ceres GLPK SCIP OSQP +) -find_package(TBB QUIET) -if(TBB_FOUND) - message(STATUS "Third-party library TBB ${TBB_VERSION}") -endif() -find_package(Eigen3 QUIET) -if(Eigen3_FOUND) - message(STATUS "Third-party library Eigen3 ${EIGEN3_VERSION}") -endif() - -find_package(GMP QUIET) -if(GMP_FOUND) - message(STATUS "Third-party library GMP ${GMP_VERSION}") -endif() - -find_package(MPFR QUIET) -if(MPFR_FOUND) - message(STATUS "Third-party library MPFR ${MPFR_VERSION}") -endif() - -find_package(OpenGR QUIET) -if(OpenGR_FOUND) - message(STATUS "Third-party library OpenGR found") -endif() - -find_package(libpointmatcher QUIET) -if(libpointmatcher_FOUND) - message(STATUS "Third-party library libpointmatcher found") -endif() - -find_package(LEDA QUIET) -if(LEDA_FOUND) - message(STATUS "Third-party library LEDA found") -endif() - -find_package(MPFI QUIET) -if(MPFI_FOUND) - message(STATUS "Third-party library MPFI found") -endif() - -find_package(NTL QUIET) -if(NTL_FOUND) - message(STATUS "Third-party library NTL found") -endif() - -find_package(OpenCV QUIET) -if(OpenCV_FOUND) - message(STATUS "Third-party library OpenCV ${OpenCV_VERSION}") -endif() +function(check_library lib) + set(CMAKE_FIND_PACKAGE_QUIET TRUE) + find_package(${lib} QUIET) + set(CMAKE_FIND_PACKAGE_QUIET FALSE) + if(${lib}_FOUND) + set(version_var "") + if(${lib} STREQUAL "Eigen3") + set(version_var ${EIGEN3_VERSION}) + elseif(${lib} STREQUAL "GMP") + set(version_var ${GMP_VERSION}) + elseif(${lib} STREQUAL "MPFR") + set(version_var ${MPFR_VERSION}) + elseif(${lib} STREQUAL "METIS") + set(version_var ${METIS_VERSION}) + elseif(DEFINED ${lib}_VERSION) + set(version_var ${${lib}_VERSION}) + elseif(DEFINED ${lib}_VERSION_STRING) + set(version_var ${${lib}_VERSION_STRING}) + endif() -find_package(METIS QUIET) -if(METIS_FOUND) - message(STATUS "Third-party library METIS found") -endif() + if(version_var) + message(STATUS "Third-party library ${lib} ${version_var}") + else() + message(STATUS "Third-party library ${lib} found") + endif() + else() + message(STATUS "Third-party library ${lib} not found") + endif() +endfunction() -find_package(ZLIB QUIET) -if(ZLIB_FOUND) - message(STATUS "Third-party library zlib ${ZLIB_VERSION_STRING}") -endif() +foreach(lib IN LISTS LIBRARIES_TO_CHECK) + check_library(${lib}) +endforeach() +#find_package(VTK REQUIRED) +#if(VTK_FOUND) +# message(STATUS "Third-party library VTK ${VTK_VERSION}") +#endif() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- # From e5a32d79ea1595482ce9564ff97ea7bffed51dcb Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 12 Jul 2024 11:40:39 +0200 Subject: [PATCH 06/27] Fix issue with VTK/Qt5/Qt6 --- Installation/CMakeLists.txt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index ae5b5ba58bce..a2fabd96f78b 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -481,14 +481,14 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() set(LIBRARIES_TO_CHECK Boost GMP MPFR - #VTK + VTK Qt6 Eigen3 OpenGR libpointmatcher LEDA MPFI NTL TBB OpenCV METIS ZLIB Ceres GLPK SCIP OSQP ) - function(check_library lib) + set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) set(CMAKE_FIND_PACKAGE_QUIET TRUE) find_package(${lib} QUIET) set(CMAKE_FIND_PACKAGE_QUIET FALSE) @@ -521,10 +521,6 @@ endfunction() foreach(lib IN LISTS LIBRARIES_TO_CHECK) check_library(${lib}) endforeach() -#find_package(VTK REQUIRED) -#if(VTK_FOUND) -# message(STATUS "Third-party library VTK ${VTK_VERSION}") -#endif() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- # From 261629356370d3735756501e81c609a355e458d7 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 12 Jul 2024 11:59:07 +0200 Subject: [PATCH 07/27] Rename lib to cgal_3rdparty_lib Because FindVTK redefines `lib` to something else! --- Installation/CMakeLists.txt | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index a2fabd96f78b..0cf557baa9bb 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -487,39 +487,39 @@ set(LIBRARIES_TO_CHECK NTL TBB OpenCV METIS ZLIB Ceres GLPK SCIP OSQP ) -function(check_library lib) +function(check_library cgal_3rdparty_lib) set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) set(CMAKE_FIND_PACKAGE_QUIET TRUE) - find_package(${lib} QUIET) + find_package(${cgal_3rdparty_lib} QUIET) set(CMAKE_FIND_PACKAGE_QUIET FALSE) - if(${lib}_FOUND) + if(${cgal_3rdparty_lib}_FOUND) set(version_var "") - if(${lib} STREQUAL "Eigen3") + if(${cgal_3rdparty_lib} STREQUAL "Eigen3") set(version_var ${EIGEN3_VERSION}) - elseif(${lib} STREQUAL "GMP") + elseif(${cgal_3rdparty_lib} STREQUAL "GMP") set(version_var ${GMP_VERSION}) - elseif(${lib} STREQUAL "MPFR") + elseif(${cgal_3rdparty_lib} STREQUAL "MPFR") set(version_var ${MPFR_VERSION}) - elseif(${lib} STREQUAL "METIS") + elseif(${cgal_3rdparty_lib} STREQUAL "METIS") set(version_var ${METIS_VERSION}) - elseif(DEFINED ${lib}_VERSION) - set(version_var ${${lib}_VERSION}) - elseif(DEFINED ${lib}_VERSION_STRING) - set(version_var ${${lib}_VERSION_STRING}) + elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) + set(version_var ${${cgal_3rdparty_lib}_VERSION}) + elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) + set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) endif() if(version_var) - message(STATUS "Third-party library ${lib} ${version_var}") + message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") else() - message(STATUS "Third-party library ${lib} found") + message(STATUS "Third-party library ${cgal_3rdparty_lib} found") endif() else() - message(STATUS "Third-party library ${lib} not found") + message(STATUS "Third-party library ${cgal_3rdparty_lib} not found") endif() endfunction() -foreach(lib IN LISTS LIBRARIES_TO_CHECK) - check_library(${lib}) +foreach(cgal_3rdparty_lib IN LISTS LIBRARIES_TO_CHECK) + check_library(${cgal_3rdparty_lib}) endforeach() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- From e3fd9ed25f08c4c75a0b10fa4a83acb0bef79282 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Fri, 12 Jul 2024 16:30:55 +0200 Subject: [PATCH 08/27] Update library version checking logic for MPFR and METIS --- Installation/CMakeLists.txt | 43 +++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 0cf557baa9bb..efd9b012625b 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -487,6 +487,7 @@ set(LIBRARIES_TO_CHECK NTL TBB OpenCV METIS ZLIB Ceres GLPK SCIP OSQP ) + function(check_library cgal_3rdparty_lib) set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) set(CMAKE_FIND_PACKAGE_QUIET TRUE) @@ -498,10 +499,44 @@ function(check_library cgal_3rdparty_lib) set(version_var ${EIGEN3_VERSION}) elseif(${cgal_3rdparty_lib} STREQUAL "GMP") set(version_var ${GMP_VERSION}) - elseif(${cgal_3rdparty_lib} STREQUAL "MPFR") - set(version_var ${MPFR_VERSION}) - elseif(${cgal_3rdparty_lib} STREQUAL "METIS") - set(version_var ${METIS_VERSION}) + elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") + set(header_name "") + set(version_macros "") + if(${cgal_3rdparty_lib} STREQUAL "MPFR") + set(header_name "mpfr.h") + set(version_macros "MPFR_VERSION_MAJOR;MPFR_VERSION_MINOR;MPFR_VERSION_PATCHLEVEL") + elseif(${cgal_3rdparty_lib} STREQUAL "METIS") + set(header_name "metis.h") + set(version_macros "METIS_VER_MAJOR;METIS_VER_MINOR;METIS_VER_SUBMINOR") + endif() + + find_path(INCLUDE_DIR + NAMES ${header_name} + PATHS ${${cgal_3rdparty_lib}_INCLUDE_DIRS} + PATH_SUFFIXES ${cgal_3rdparty_lib} + ) + + if(INCLUDE_DIR) + set(HEADER_PATH "${INCLUDE_DIR}/${header_name}") + + if(EXISTS ${HEADER_PATH}) + file(READ ${HEADER_PATH} HEADER_CONTENT) + + list(GET version_macros 0 major_macro) + list(GET version_macros 1 minor_macro) + list(GET version_macros 2 patchlevel_macro) + + string(REGEX MATCH "#define[ \t]+${major_macro}[ \t]+([0-9]+)" _major_match ${HEADER_CONTENT}) + string(REGEX MATCH "#define[ \t]+${minor_macro}[ \t]+([0-9]+)" _minor_match ${HEADER_CONTENT}) + string(REGEX MATCH "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)" _patchlevel_match ${HEADER_CONTENT}) + + string(REGEX REPLACE ".*#define[ \t]+${major_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR ${_major_match}) + string(REGEX REPLACE ".*#define[ \t]+${minor_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MINOR ${_minor_match}) + string(REGEX REPLACE ".*#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+).*" "\\1" VERSION_PATCHLEVEL ${_patchlevel_match}) + + set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}") + endif() + endif() elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) set(version_var ${${cgal_3rdparty_lib}_VERSION}) elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) From 00cc6ce69445cf12409333fa8378ca035be4b06f Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Tue, 16 Jul 2024 16:00:46 +0200 Subject: [PATCH 09/27] Update GMP and GLPK version checks in CMakeLists.txt --- Installation/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index efd9b012625b..31753bc1133e 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -480,9 +480,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() set(LIBRARIES_TO_CHECK - Boost GMP MPFR - VTK - Qt6 + Boost GMP MPFR VTK Qt6 Eigen3 OpenGR libpointmatcher LEDA MPFI NTL TBB OpenCV METIS ZLIB Ceres GLPK SCIP OSQP @@ -498,7 +496,57 @@ function(check_library cgal_3rdparty_lib) if(${cgal_3rdparty_lib} STREQUAL "Eigen3") set(version_var ${EIGEN3_VERSION}) elseif(${cgal_3rdparty_lib} STREQUAL "GMP") - set(version_var ${GMP_VERSION}) + set(GMP_HEADER_PATH "${GMP_INCLUDE_DIR}/gmp.h") + file(READ "${GMP_HEADER_PATH}" GMP_HEADER_CONTENT) + string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") + set(GMP_VERSION_MAJOR "") + set(GMP_VERSION_MINOR "") + set(GMP_VERSION_PATCH "") + foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) + string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") + set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") + if(EXISTS "${GMP_ARCH_HEADER_PATH}") + file(READ "${GMP_ARCH_HEADER_PATH}" GMP_ARCH_HEADER_CONTENT) + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION[ \t]+[0-9]+" GMP_VERSION_MAJOR_LINE "${GMP_ARCH_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+[0-9]+" GMP_VERSION_MINOR_LINE "${GMP_ARCH_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+[0-9]+" GMP_VERSION_PATCH_LINE "${GMP_ARCH_HEADER_CONTENT}") + if(GMP_VERSION_MAJOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MAJOR "${GMP_VERSION_MAJOR_LINE}") + endif() + if(GMP_VERSION_MINOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MINOR "${GMP_VERSION_MINOR_LINE}") + endif() + if(GMP_VERSION_PATCH_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_PATCH "${GMP_VERSION_PATCH_LINE}") + endif() + if(GMP_VERSION_MAJOR AND GMP_VERSION_MINOR AND GMP_VERSION_PATCH) + set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}") + break() + endif() + endif() + endforeach() + if(GMP_VERSION) + set(version_var ${GMP_VERSION}) + endif() + elseif(${cgal_3rdparty_lib} STREQUAL "GLPK") + set(GLPK_HEADER_PATH "${GLPK_INCLUDE_DIR}/glpk.h") + if(EXISTS "${GLPK_HEADER_PATH}") + file(READ "${GLPK_HEADER_PATH}" GLPK_HEADER_CONTENT) + string(REGEX MATCH "#define[ \t]+GLP_MAJOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MAJOR_LINE "${GLPK_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+GLP_MINOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MINOR_LINE "${GLPK_HEADER_CONTENT}") + set(GLPK_VERSION_MAJOR "") + set(GLPK_VERSION_MINOR "") + if(GLPK_VERSION_MAJOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MAJOR "${GLPK_VERSION_MAJOR_LINE}") + endif() + if(GLPK_VERSION_MINOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MINOR "${GLPK_VERSION_MINOR_LINE}") + endif() + if(NOT GLPK_VERSION_MAJOR STREQUAL "" AND NOT GLPK_VERSION_MINOR STREQUAL "") + set(GLPK_VERSION "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}") + set(version_var ${GLPK_VERSION}) + endif() + endif() elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") set(header_name "") set(version_macros "") From 26bab26adf0827d917458aa424bfa727a8432aec Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Thu, 18 Jul 2024 10:19:03 +0200 Subject: [PATCH 10/27] Improve regex pattern for third-party library detection --- Maintenance/test_handling/to_zipped_format | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maintenance/test_handling/to_zipped_format b/Maintenance/test_handling/to_zipped_format index b46fe121837c..6327afb83932 100755 --- a/Maintenance/test_handling/to_zipped_format +++ b/Maintenance/test_handling/to_zipped_format @@ -132,7 +132,7 @@ sub reformat_results($) # print PLATFORM_NEW_RESULTS $_; # last; # } - if (/^-- Third-party library ([\w\.]+ [\w\.\_\-]*)/) { + if (/^-- Third-party library (.+)$/) { $TPL = "$TPL $1,"; } NEXT: if(! ($_= )) { From 565d5413b0c8f4f258ea417dffd09ff9c767dc57 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Mon, 5 Aug 2024 15:51:05 +0200 Subject: [PATCH 11/27] Restructure third party libraries in a table format --- Installation/CMakeLists.txt | 3 +- Maintenance/test_handling/Summary_Script.js | 21 ++++++++++++-- Maintenance/test_handling/testresult.css | 32 +++++++++++++++++++++ TDS_3/test/TDS_3/CMakeLists.txt | 2 +- 4 files changed, 53 insertions(+), 5 deletions(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 31753bc1133e..3fcf60bf4d41 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -482,8 +482,7 @@ endif() set(LIBRARIES_TO_CHECK Boost GMP MPFR VTK Qt6 Eigen3 OpenGR libpointmatcher LEDA MPFI - NTL TBB OpenCV METIS ZLIB - Ceres GLPK SCIP OSQP + TBB OpenCV METIS ZLIB GLPK SCIP ) function(check_library cgal_3rdparty_lib) diff --git a/Maintenance/test_handling/Summary_Script.js b/Maintenance/test_handling/Summary_Script.js index 67d49d752159..a16f4861f60d 100644 --- a/Maintenance/test_handling/Summary_Script.js +++ b/Maintenance/test_handling/Summary_Script.js @@ -167,12 +167,29 @@ function packageContainer(platforms) { } } - function platformContainer(platforms) { platforms.forEach(platform => { const $container = $('
', { class: 'platform ' + platform.name }).appendTo($platformContainer); $container.html("

Results of " + platform.name + "

"); - $('

', { class: 'tplinfo', html: platform.third_party_libraries }).appendTo($container); + + // Parse third_party_libraries and structure them in a table format + const tplString = platform.third_party_libraries.replace("TPL: ", "").trim(); + const tplArray = tplString.split(",").map(tpl => tpl.trim()).filter(tpl => tpl.length > 0); + + const $tplTable = $('', { class: 'tpl-table' }).appendTo($container); + const $thead = $('').appendTo($tplTable); + const $tbody = $('').appendTo($tplTable); + + $('').append('').appendTo($thead); + + let $row = $('').appendTo($tbody); + tplArray.forEach((tpl, index) => { + if (index > 0 && index % 5 === 0) { + $row = $('').appendTo($tbody); + } + $('
Third Party Libraries
').text(tpl).appendTo($row); + }); + const letters = ['n', 'w', 'o', 'r']; letters.forEach(letter => { const $letterContainer = $('
', { class: 'letter_container ' + letter }).appendTo($container); diff --git a/Maintenance/test_handling/testresult.css b/Maintenance/test_handling/testresult.css index 94a1c213a850..faece0618c68 100644 --- a/Maintenance/test_handling/testresult.css +++ b/Maintenance/test_handling/testresult.css @@ -115,4 +115,36 @@ TABLE.result TD > a.package_name { .platform-link { margin-right: 10px; +} + +/* Summary Page */ + +.tpl-table { + width: auto; + border-collapse: collapse; + margin-top: 10px; + table-layout: fixed; +} + +.tpl-table th, .tpl-table td { + border: 1px solid #e0e0e0; /* Couleur légèrement différente */ + padding: 4px 8px; + text-align: left; + white-space: nowrap; +} + +.tpl-table tr:nth-child(even) { + background-color: #fafafa; +} + +.tpl-table tr:hover { + background-color: #f5f5f5; +} + +.tpl-table th { + padding-top: 8px; + padding-bottom: 8px; + background-color: #f7f7f7; + color: #333; + font-weight: normal; } \ No newline at end of file diff --git a/TDS_3/test/TDS_3/CMakeLists.txt b/TDS_3/test/TDS_3/CMakeLists.txt index f35a84763a5b..a80cd824ea39 100644 --- a/TDS_3/test/TDS_3/CMakeLists.txt +++ b/TDS_3/test/TDS_3/CMakeLists.txt @@ -12,6 +12,6 @@ create_single_source_cgal_program("test_triangulation_tds_3.cpp") create_single_source_cgal_program("test_io_tds3.cpp") if(TARGET CGAL::TBB_support) - message(STATUS "Third-parties libraries TBB ${TBB_VERSION}") + message(STATUS "Found TBB") target_link_libraries(test_triangulation_tds_3 PUBLIC CGAL::TBB_support) endif() From 3c56db979de6e9f0dcd33f1bc842232f16ea0b03 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Mon, 5 Aug 2024 15:59:53 +0200 Subject: [PATCH 12/27] Improve third party libraries display toggle functionality --- Maintenance/test_handling/Summary_Script.js | 14 ++++++---- Maintenance/test_handling/testresult.css | 29 +++++++++++++++------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Maintenance/test_handling/Summary_Script.js b/Maintenance/test_handling/Summary_Script.js index a16f4861f60d..4c28e55f1092 100644 --- a/Maintenance/test_handling/Summary_Script.js +++ b/Maintenance/test_handling/Summary_Script.js @@ -170,13 +170,17 @@ function packageContainer(platforms) { function platformContainer(platforms) { platforms.forEach(platform => { const $container = $('
', { class: 'platform ' + platform.name }).appendTo($platformContainer); - $container.html("

Results of " + platform.name + "

"); - - // Parse third_party_libraries and structure them in a table format + $container.html(`

Results of ${platform.name}

`); const tplString = platform.third_party_libraries.replace("TPL: ", "").trim(); const tplArray = tplString.split(",").map(tpl => tpl.trim()).filter(tpl => tpl.length > 0); - - const $tplTable = $('', { class: 'tpl-table' }).appendTo($container); + const $toggleButton = $('
', { class: 'tpl-table', css: { display: 'none' } }).appendTo($container); const $thead = $('').appendTo($tplTable); const $tbody = $('').appendTo($tplTable); diff --git a/Maintenance/test_handling/testresult.css b/Maintenance/test_handling/testresult.css index faece0618c68..718cdfe21cb5 100644 --- a/Maintenance/test_handling/testresult.css +++ b/Maintenance/test_handling/testresult.css @@ -124,27 +124,40 @@ TABLE.result TD > a.package_name { border-collapse: collapse; margin-top: 10px; table-layout: fixed; + border: 1px solid #ccc; } .tpl-table th, .tpl-table td { - border: 1px solid #e0e0e0; /* Couleur légèrement différente */ - padding: 4px 8px; + border: 1px solid #ddd; + padding: 6px 12px; text-align: left; white-space: nowrap; } .tpl-table tr:nth-child(even) { - background-color: #fafafa; -} - -.tpl-table tr:hover { - background-color: #f5f5f5; + background-color: #a6a6a6; } .tpl-table th { padding-top: 8px; padding-bottom: 8px; - background-color: #f7f7f7; + background-color: #a6a6a6; color: #333; font-weight: normal; +} + +.tpl-toggle-button { + display: inline-block; + margin-bottom: 10px; + padding: 6px 12px; + font-size: 14px; + color: #333; + background-color: #f0f0f0; + border: 1px solid #ccc; + cursor: pointer; + text-align: center; +} + +.tpl-toggle-button:hover { + background-color: #e0e0e0; } \ No newline at end of file From 49cb591951e3c56c27974c80a5956c99aa185701 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 21 Aug 2024 16:28:23 +0200 Subject: [PATCH 13/27] move the code to a CMake module --- Installation/CMakeLists.txt | 123 +---------------- .../display-third-party-libs-versions.cmake | 124 ++++++++++++++++++ 2 files changed, 125 insertions(+), 122 deletions(-) create mode 100644 Installation/cmake/modules/display-third-party-libs-versions.cmake diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 3fcf60bf4d41..2b93d7d1206c 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -479,130 +479,9 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() endif() -set(LIBRARIES_TO_CHECK - Boost GMP MPFR VTK Qt6 - Eigen3 OpenGR libpointmatcher LEDA MPFI - TBB OpenCV METIS ZLIB GLPK SCIP -) - -function(check_library cgal_3rdparty_lib) - set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) - set(CMAKE_FIND_PACKAGE_QUIET TRUE) - find_package(${cgal_3rdparty_lib} QUIET) - set(CMAKE_FIND_PACKAGE_QUIET FALSE) - if(${cgal_3rdparty_lib}_FOUND) - set(version_var "") - if(${cgal_3rdparty_lib} STREQUAL "Eigen3") - set(version_var ${EIGEN3_VERSION}) - elseif(${cgal_3rdparty_lib} STREQUAL "GMP") - set(GMP_HEADER_PATH "${GMP_INCLUDE_DIR}/gmp.h") - file(READ "${GMP_HEADER_PATH}" GMP_HEADER_CONTENT) - string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") - set(GMP_VERSION_MAJOR "") - set(GMP_VERSION_MINOR "") - set(GMP_VERSION_PATCH "") - foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) - string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") - set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") - if(EXISTS "${GMP_ARCH_HEADER_PATH}") - file(READ "${GMP_ARCH_HEADER_PATH}" GMP_ARCH_HEADER_CONTENT) - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION[ \t]+[0-9]+" GMP_VERSION_MAJOR_LINE "${GMP_ARCH_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+[0-9]+" GMP_VERSION_MINOR_LINE "${GMP_ARCH_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+[0-9]+" GMP_VERSION_PATCH_LINE "${GMP_ARCH_HEADER_CONTENT}") - if(GMP_VERSION_MAJOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MAJOR "${GMP_VERSION_MAJOR_LINE}") - endif() - if(GMP_VERSION_MINOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MINOR "${GMP_VERSION_MINOR_LINE}") - endif() - if(GMP_VERSION_PATCH_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_PATCH "${GMP_VERSION_PATCH_LINE}") - endif() - if(GMP_VERSION_MAJOR AND GMP_VERSION_MINOR AND GMP_VERSION_PATCH) - set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}") - break() - endif() - endif() - endforeach() - if(GMP_VERSION) - set(version_var ${GMP_VERSION}) - endif() - elseif(${cgal_3rdparty_lib} STREQUAL "GLPK") - set(GLPK_HEADER_PATH "${GLPK_INCLUDE_DIR}/glpk.h") - if(EXISTS "${GLPK_HEADER_PATH}") - file(READ "${GLPK_HEADER_PATH}" GLPK_HEADER_CONTENT) - string(REGEX MATCH "#define[ \t]+GLP_MAJOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MAJOR_LINE "${GLPK_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+GLP_MINOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MINOR_LINE "${GLPK_HEADER_CONTENT}") - set(GLPK_VERSION_MAJOR "") - set(GLPK_VERSION_MINOR "") - if(GLPK_VERSION_MAJOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MAJOR "${GLPK_VERSION_MAJOR_LINE}") - endif() - if(GLPK_VERSION_MINOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MINOR "${GLPK_VERSION_MINOR_LINE}") - endif() - if(NOT GLPK_VERSION_MAJOR STREQUAL "" AND NOT GLPK_VERSION_MINOR STREQUAL "") - set(GLPK_VERSION "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}") - set(version_var ${GLPK_VERSION}) - endif() - endif() - elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") - set(header_name "") - set(version_macros "") - if(${cgal_3rdparty_lib} STREQUAL "MPFR") - set(header_name "mpfr.h") - set(version_macros "MPFR_VERSION_MAJOR;MPFR_VERSION_MINOR;MPFR_VERSION_PATCHLEVEL") - elseif(${cgal_3rdparty_lib} STREQUAL "METIS") - set(header_name "metis.h") - set(version_macros "METIS_VER_MAJOR;METIS_VER_MINOR;METIS_VER_SUBMINOR") - endif() - - find_path(INCLUDE_DIR - NAMES ${header_name} - PATHS ${${cgal_3rdparty_lib}_INCLUDE_DIRS} - PATH_SUFFIXES ${cgal_3rdparty_lib} - ) - if(INCLUDE_DIR) - set(HEADER_PATH "${INCLUDE_DIR}/${header_name}") +include(display-third-party-libs-versions) - if(EXISTS ${HEADER_PATH}) - file(READ ${HEADER_PATH} HEADER_CONTENT) - - list(GET version_macros 0 major_macro) - list(GET version_macros 1 minor_macro) - list(GET version_macros 2 patchlevel_macro) - - string(REGEX MATCH "#define[ \t]+${major_macro}[ \t]+([0-9]+)" _major_match ${HEADER_CONTENT}) - string(REGEX MATCH "#define[ \t]+${minor_macro}[ \t]+([0-9]+)" _minor_match ${HEADER_CONTENT}) - string(REGEX MATCH "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)" _patchlevel_match ${HEADER_CONTENT}) - - string(REGEX REPLACE ".*#define[ \t]+${major_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR ${_major_match}) - string(REGEX REPLACE ".*#define[ \t]+${minor_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MINOR ${_minor_match}) - string(REGEX REPLACE ".*#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+).*" "\\1" VERSION_PATCHLEVEL ${_patchlevel_match}) - - set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}") - endif() - endif() - elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) - set(version_var ${${cgal_3rdparty_lib}_VERSION}) - elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) - set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) - endif() - - if(version_var) - message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") - else() - message(STATUS "Third-party library ${cgal_3rdparty_lib} found") - endif() - else() - message(STATUS "Third-party library ${cgal_3rdparty_lib} not found") - endif() -endfunction() - -foreach(cgal_3rdparty_lib IN LISTS LIBRARIES_TO_CHECK) - check_library(${cgal_3rdparty_lib}) -endforeach() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- # diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake new file mode 100644 index 000000000000..8e52b3792c67 --- /dev/null +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -0,0 +1,124 @@ +set(LIBRARIES_TO_CHECK + Boost GMP MPFR VTK Qt6 + Eigen3 OpenGR libpointmatcher LEDA MPFI + TBB OpenCV METIS ZLIB GLPK SCIP +) + +function(check_library cgal_3rdparty_lib) + set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) + set(CMAKE_FIND_PACKAGE_QUIET TRUE) + find_package(${cgal_3rdparty_lib} QUIET) + set(CMAKE_FIND_PACKAGE_QUIET FALSE) + if(${cgal_3rdparty_lib}_FOUND) + set(version_var "") + if(${cgal_3rdparty_lib} STREQUAL "Eigen3") + set(version_var ${EIGEN3_VERSION}) + elseif(${cgal_3rdparty_lib} STREQUAL "GMP") + set(GMP_HEADER_PATH "${GMP_INCLUDE_DIR}/gmp.h") + file(READ "${GMP_HEADER_PATH}" GMP_HEADER_CONTENT) + string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") + set(GMP_VERSION_MAJOR "") + set(GMP_VERSION_MINOR "") + set(GMP_VERSION_PATCH "") + foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) + string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") + set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") + if(EXISTS "${GMP_ARCH_HEADER_PATH}") + file(READ "${GMP_ARCH_HEADER_PATH}" GMP_ARCH_HEADER_CONTENT) + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION[ \t]+[0-9]+" GMP_VERSION_MAJOR_LINE "${GMP_ARCH_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+[0-9]+" GMP_VERSION_MINOR_LINE "${GMP_ARCH_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+[0-9]+" GMP_VERSION_PATCH_LINE "${GMP_ARCH_HEADER_CONTENT}") + if(GMP_VERSION_MAJOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MAJOR "${GMP_VERSION_MAJOR_LINE}") + endif() + if(GMP_VERSION_MINOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MINOR "${GMP_VERSION_MINOR_LINE}") + endif() + if(GMP_VERSION_PATCH_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_PATCH "${GMP_VERSION_PATCH_LINE}") + endif() + if(GMP_VERSION_MAJOR AND GMP_VERSION_MINOR AND GMP_VERSION_PATCH) + set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}") + break() + endif() + endif() + endforeach() + if(GMP_VERSION) + set(version_var ${GMP_VERSION}) + endif() + elseif(${cgal_3rdparty_lib} STREQUAL "GLPK") + set(GLPK_HEADER_PATH "${GLPK_INCLUDE_DIR}/glpk.h") + if(EXISTS "${GLPK_HEADER_PATH}") + file(READ "${GLPK_HEADER_PATH}" GLPK_HEADER_CONTENT) + string(REGEX MATCH "#define[ \t]+GLP_MAJOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MAJOR_LINE "${GLPK_HEADER_CONTENT}") + string(REGEX MATCH "#define[ \t]+GLP_MINOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MINOR_LINE "${GLPK_HEADER_CONTENT}") + set(GLPK_VERSION_MAJOR "") + set(GLPK_VERSION_MINOR "") + if(GLPK_VERSION_MAJOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MAJOR "${GLPK_VERSION_MAJOR_LINE}") + endif() + if(GLPK_VERSION_MINOR_LINE) + string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MINOR "${GLPK_VERSION_MINOR_LINE}") + endif() + if(NOT GLPK_VERSION_MAJOR STREQUAL "" AND NOT GLPK_VERSION_MINOR STREQUAL "") + set(GLPK_VERSION "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}") + set(version_var ${GLPK_VERSION}) + endif() + endif() + elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") + set(header_name "") + set(version_macros "") + if(${cgal_3rdparty_lib} STREQUAL "MPFR") + set(header_name "mpfr.h") + set(version_macros "MPFR_VERSION_MAJOR;MPFR_VERSION_MINOR;MPFR_VERSION_PATCHLEVEL") + elseif(${cgal_3rdparty_lib} STREQUAL "METIS") + set(header_name "metis.h") + set(version_macros "METIS_VER_MAJOR;METIS_VER_MINOR;METIS_VER_SUBMINOR") + endif() + + find_path(INCLUDE_DIR + NAMES ${header_name} + PATHS ${${cgal_3rdparty_lib}_INCLUDE_DIRS} + PATH_SUFFIXES ${cgal_3rdparty_lib} + ) + + if(INCLUDE_DIR) + set(HEADER_PATH "${INCLUDE_DIR}/${header_name}") + + if(EXISTS ${HEADER_PATH}) + file(READ ${HEADER_PATH} HEADER_CONTENT) + + list(GET version_macros 0 major_macro) + list(GET version_macros 1 minor_macro) + list(GET version_macros 2 patchlevel_macro) + + string(REGEX MATCH "#define[ \t]+${major_macro}[ \t]+([0-9]+)" _major_match ${HEADER_CONTENT}) + string(REGEX MATCH "#define[ \t]+${minor_macro}[ \t]+([0-9]+)" _minor_match ${HEADER_CONTENT}) + string(REGEX MATCH "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)" _patchlevel_match ${HEADER_CONTENT}) + + string(REGEX REPLACE ".*#define[ \t]+${major_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR ${_major_match}) + string(REGEX REPLACE ".*#define[ \t]+${minor_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MINOR ${_minor_match}) + string(REGEX REPLACE ".*#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+).*" "\\1" VERSION_PATCHLEVEL ${_patchlevel_match}) + + set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}") + endif() + endif() + elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) + set(version_var ${${cgal_3rdparty_lib}_VERSION}) + elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) + set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) + endif() + + if(version_var) + message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") + else() + message(STATUS "Third-party library ${cgal_3rdparty_lib} found") + endif() + else() + message(STATUS "Third-party library ${cgal_3rdparty_lib} not found") + endif() +endfunction() + +foreach(cgal_3rdparty_lib IN LISTS LIBRARIES_TO_CHECK) + check_library(${cgal_3rdparty_lib}) +endforeach() From 2fad60090a94209960df4f4096a6878dc2460a8f Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Thu, 22 Aug 2024 09:13:09 +0200 Subject: [PATCH 14/27] Add sed command to extract third-party library info --- Scripts/developer_scripts/run_testsuite_with_ctest | 1 + 1 file changed, 1 insertion(+) diff --git a/Scripts/developer_scripts/run_testsuite_with_ctest b/Scripts/developer_scripts/run_testsuite_with_ctest index 1785c96e63b4..2ed82f533357 100644 --- a/Scripts/developer_scripts/run_testsuite_with_ctest +++ b/Scripts/developer_scripts/run_testsuite_with_ctest @@ -372,6 +372,7 @@ run_test_on_platform() grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log"|sort -u >> $RESULT_FILE #Use sed to get the content of DEBUG or RELEASE CXX FLAGS so that Multiconfiguration platforms do provide their CXXXFLAGS to the testsuite page (that greps USING CXXFLAGS to get info) sed -i -E 's/(^-- USING )(DEBUG|RELEASE) (CXXFLAGS)/\1\3/' $RESULT_FILE + sed -n '/^-- Third-party library /p' "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE echo "------------" >> "$RESULT_FILE" #if git branch, create empty scm file for python script if [ -n "${SCRIPTS_DIR}" ]; then From ae10e2e7d43f276c25a1ee852e715ec45f457c17 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Thu, 22 Aug 2024 10:48:40 +0200 Subject: [PATCH 15/27] Refactor library version extraction logic --- .../display-third-party-libs-versions.cmake | 142 ++++++------------ 1 file changed, 50 insertions(+), 92 deletions(-) diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake index 8e52b3792c67..682c3cf64c4f 100644 --- a/Installation/cmake/modules/display-third-party-libs-versions.cmake +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -4,109 +4,67 @@ set(LIBRARIES_TO_CHECK TBB OpenCV METIS ZLIB GLPK SCIP ) +function(get_library_version header_path major_macro minor_macro patchlevel_macro version_var) + if(EXISTS ${header_path}) + file(READ ${header_path} HEADER_CONTENT) + if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${major_macro}[ \t]+([0-9]+)") + set(VERSION_MAJOR ${CMAKE_MATCH_1}) + endif() + if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${minor_macro}[ \t]+([0-9]+)") + set(VERSION_MINOR ${CMAKE_MATCH_1}) + endif() + if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)") + set(VERSION_PATCHLEVEL ${CMAKE_MATCH_1}) + else() + set(VERSION_PATCHLEVEL "") + endif() + if(VERSION_PATCHLEVEL) + set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}" PARENT_SCOPE) + elseif(VERSION_MAJOR AND VERSION_MINOR) + set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}" PARENT_SCOPE) + endif() + endif() +endfunction() + function(check_library cgal_3rdparty_lib) set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) set(CMAKE_FIND_PACKAGE_QUIET TRUE) + string(TOUPPER ${cgal_3rdparty_lib} cgal_3rdparty_lib_upper) find_package(${cgal_3rdparty_lib} QUIET) set(CMAKE_FIND_PACKAGE_QUIET FALSE) if(${cgal_3rdparty_lib}_FOUND) set(version_var "") - if(${cgal_3rdparty_lib} STREQUAL "Eigen3") - set(version_var ${EIGEN3_VERSION}) + if(DEFINED ${cgal_3rdparty_lib}_VERSION) + set(version_var ${${cgal_3rdparty_lib}_VERSION}) + elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) + set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) + elseif(DEFINED ${cgal_3rdparty_lib_upper}_VERSION) + set(version_var ${${cgal_3rdparty_lib_upper}_VERSION}) + elseif(DEFINED ${cgal_3rdparty_lib_upper}_VERSION_STRING) + set(version_var ${${cgal_3rdparty_lib_upper}_VERSION_STRING}) elseif(${cgal_3rdparty_lib} STREQUAL "GMP") - set(GMP_HEADER_PATH "${GMP_INCLUDE_DIR}/gmp.h") - file(READ "${GMP_HEADER_PATH}" GMP_HEADER_CONTENT) - string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") - set(GMP_VERSION_MAJOR "") - set(GMP_VERSION_MINOR "") - set(GMP_VERSION_PATCH "") - foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) - string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") - set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") - if(EXISTS "${GMP_ARCH_HEADER_PATH}") - file(READ "${GMP_ARCH_HEADER_PATH}" GMP_ARCH_HEADER_CONTENT) - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION[ \t]+[0-9]+" GMP_VERSION_MAJOR_LINE "${GMP_ARCH_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_MINOR[ \t]+[0-9]+" GMP_VERSION_MINOR_LINE "${GMP_ARCH_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+__GNU_MP_VERSION_PATCHLEVEL[ \t]+[0-9]+" GMP_VERSION_PATCH_LINE "${GMP_ARCH_HEADER_CONTENT}") - if(GMP_VERSION_MAJOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MAJOR "${GMP_VERSION_MAJOR_LINE}") - endif() - if(GMP_VERSION_MINOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_MINOR "${GMP_VERSION_MINOR_LINE}") - endif() - if(GMP_VERSION_PATCH_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GMP_VERSION_PATCH "${GMP_VERSION_PATCH_LINE}") - endif() - if(GMP_VERSION_MAJOR AND GMP_VERSION_MINOR AND GMP_VERSION_PATCH) - set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}") - break() + set(version_var "") + get_library_version("${GMP_INCLUDE_DIR}/gmp.h" "__GNU_MP_VERSION" "__GNU_MP_VERSION_MINOR" "__GNU_MP_VERSION_PATCHLEVEL" version_var) + if(NOT version_var) + file(READ "${GMP_INCLUDE_DIR}/gmp.h" GMP_HEADER_CONTENT) + string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}") + foreach(INCLUDED_HEADER ${INCLUDED_HEADERS}) + string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}") + set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}") + if(EXISTS ${GMP_ARCH_HEADER_PATH}) + get_library_version("${GMP_ARCH_HEADER_PATH}" "__GNU_MP_VERSION" "__GNU_MP_VERSION_MINOR" "__GNU_MP_VERSION_PATCHLEVEL" version_var) + if(version_var) + break() + endif() endif() - endif() - endforeach() - if(GMP_VERSION) - set(version_var ${GMP_VERSION}) + endforeach() endif() elseif(${cgal_3rdparty_lib} STREQUAL "GLPK") - set(GLPK_HEADER_PATH "${GLPK_INCLUDE_DIR}/glpk.h") - if(EXISTS "${GLPK_HEADER_PATH}") - file(READ "${GLPK_HEADER_PATH}" GLPK_HEADER_CONTENT) - string(REGEX MATCH "#define[ \t]+GLP_MAJOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MAJOR_LINE "${GLPK_HEADER_CONTENT}") - string(REGEX MATCH "#define[ \t]+GLP_MINOR_VERSION[ \t]+[0-9]+" GLPK_VERSION_MINOR_LINE "${GLPK_HEADER_CONTENT}") - set(GLPK_VERSION_MAJOR "") - set(GLPK_VERSION_MINOR "") - if(GLPK_VERSION_MAJOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MAJOR "${GLPK_VERSION_MAJOR_LINE}") - endif() - if(GLPK_VERSION_MINOR_LINE) - string(REGEX REPLACE ".*[ \t]+([0-9]+).*" "\\1" GLPK_VERSION_MINOR "${GLPK_VERSION_MINOR_LINE}") - endif() - if(NOT GLPK_VERSION_MAJOR STREQUAL "" AND NOT GLPK_VERSION_MINOR STREQUAL "") - set(GLPK_VERSION "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}") - set(version_var ${GLPK_VERSION}) - endif() - endif() - elseif(${cgal_3rdparty_lib} STREQUAL "MPFR" OR ${cgal_3rdparty_lib} STREQUAL "METIS") - set(header_name "") - set(version_macros "") - if(${cgal_3rdparty_lib} STREQUAL "MPFR") - set(header_name "mpfr.h") - set(version_macros "MPFR_VERSION_MAJOR;MPFR_VERSION_MINOR;MPFR_VERSION_PATCHLEVEL") - elseif(${cgal_3rdparty_lib} STREQUAL "METIS") - set(header_name "metis.h") - set(version_macros "METIS_VER_MAJOR;METIS_VER_MINOR;METIS_VER_SUBMINOR") - endif() - - find_path(INCLUDE_DIR - NAMES ${header_name} - PATHS ${${cgal_3rdparty_lib}_INCLUDE_DIRS} - PATH_SUFFIXES ${cgal_3rdparty_lib} - ) - - if(INCLUDE_DIR) - set(HEADER_PATH "${INCLUDE_DIR}/${header_name}") - - if(EXISTS ${HEADER_PATH}) - file(READ ${HEADER_PATH} HEADER_CONTENT) - - list(GET version_macros 0 major_macro) - list(GET version_macros 1 minor_macro) - list(GET version_macros 2 patchlevel_macro) - - string(REGEX MATCH "#define[ \t]+${major_macro}[ \t]+([0-9]+)" _major_match ${HEADER_CONTENT}) - string(REGEX MATCH "#define[ \t]+${minor_macro}[ \t]+([0-9]+)" _minor_match ${HEADER_CONTENT}) - string(REGEX MATCH "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)" _patchlevel_match ${HEADER_CONTENT}) - - string(REGEX REPLACE ".*#define[ \t]+${major_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR ${_major_match}) - string(REGEX REPLACE ".*#define[ \t]+${minor_macro}[ \t]+([0-9]+).*" "\\1" VERSION_MINOR ${_minor_match}) - string(REGEX REPLACE ".*#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+).*" "\\1" VERSION_PATCHLEVEL ${_patchlevel_match}) - - set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}") - endif() - endif() - elseif(DEFINED ${cgal_3rdparty_lib}_VERSION) - set(version_var ${${cgal_3rdparty_lib}_VERSION}) - elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING) - set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING}) + get_library_version("${GLPK_INCLUDE_DIR}/glpk.h" "GLP_MAJOR_VERSION" "GLP_MINOR_VERSION" "" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "MPFR") + get_library_version("${MPFR_INCLUDE_DIR}/mpfr.h" "MPFR_VERSION_MAJOR" "MPFR_VERSION_MINOR" "MPFR_VERSION_PATCHLEVEL" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "METIS") + get_library_version("${METIS_INCLUDE_DIR}/metis.h" "METIS_VER_MAJOR" "METIS_VER_MINOR" "METIS_VER_SUBMINOR" version_var) endif() if(version_var) From 44053f5c7b5dfd07dd7404fb05dde558d6e2a556 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Fri, 23 Aug 2024 09:31:34 +0200 Subject: [PATCH 16/27] Update library versions and add new third-party libraries --- .../display-third-party-libs-versions.cmake | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake index 682c3cf64c4f..f9d6b05b5e8f 100644 --- a/Installation/cmake/modules/display-third-party-libs-versions.cmake +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -1,7 +1,9 @@ set(LIBRARIES_TO_CHECK - Boost GMP MPFR VTK Qt6 - Eigen3 OpenGR libpointmatcher LEDA MPFI - TBB OpenCV METIS ZLIB GLPK SCIP + Eigen3 Qt6 TBB OpenMesh Boost + GMP Threads SuiteSparse MPFI METIS + VTK SCIP OSQP LASLIB GLPK + ITT Ceres MPFR libpointmatcher ITK + OpenGR OpenCV ZLIB ) function(get_library_version header_path major_macro minor_macro patchlevel_macro version_var) @@ -20,7 +22,7 @@ function(get_library_version header_path major_macro minor_macro patchlevel_macr endif() if(VERSION_PATCHLEVEL) set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}" PARENT_SCOPE) - elseif(VERSION_MAJOR AND VERSION_MINOR) + elseif(VERSION_MAJOR GREATER_EQUAL 0 OR VERSION_MINOR GREATER_EQUAL 0) set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}" PARENT_SCOPE) endif() endif() @@ -65,8 +67,11 @@ function(check_library cgal_3rdparty_lib) get_library_version("${MPFR_INCLUDE_DIR}/mpfr.h" "MPFR_VERSION_MAJOR" "MPFR_VERSION_MINOR" "MPFR_VERSION_PATCHLEVEL" version_var) elseif(${cgal_3rdparty_lib} STREQUAL "METIS") get_library_version("${METIS_INCLUDE_DIR}/metis.h" "METIS_VER_MAJOR" "METIS_VER_MINOR" "METIS_VER_SUBMINOR" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "SuiteSparse") + get_library_version("${SuiteSparse_Config_INCLUDE_DIR}/SuiteSparse_config.h" "SUITESPARSE_MAIN_VERSION" "SUITESPARSE_SUB_VERSION" "SUITESPARSE_SUBSUB_VERSION" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "LASLIB") + get_library_version("${LASLIB_INCLUDE_DIR}/lasdefinitions.hpp" "LAS_TOOLS_VERSION" "" "" version_var) endif() - if(version_var) message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") else() From 2a1e5ee9e703a2f6432d53ab79e6b239bc49983e Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 23 Aug 2024 16:42:03 +0200 Subject: [PATCH 17/27] only display the 3rd-party versions with CGAL_TEST_SUITE @SaillantNicolas I have pushed this commit directly. --- Installation/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 2b93d7d1206c..210d11f6915e 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -480,7 +480,9 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() -include(display-third-party-libs-versions) +if(CGAL_TEST_SUITE) + include(display-third-party-libs-versions) +endif() message("== Generate version files (DONE) ==\n") #-------------------------------------------------------------------------------------------------- From 8ef79af9e244abe0937cd45c5e10584c9350d4b2 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Mon, 26 Aug 2024 09:49:27 +0200 Subject: [PATCH 18/27] Add ITT library version --- .../cmake/modules/display-third-party-libs-versions.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake index f9d6b05b5e8f..b9550dbaa4fc 100644 --- a/Installation/cmake/modules/display-third-party-libs-versions.cmake +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -71,6 +71,8 @@ function(check_library cgal_3rdparty_lib) get_library_version("${SuiteSparse_Config_INCLUDE_DIR}/SuiteSparse_config.h" "SUITESPARSE_MAIN_VERSION" "SUITESPARSE_SUB_VERSION" "SUITESPARSE_SUBSUB_VERSION" version_var) elseif(${cgal_3rdparty_lib} STREQUAL "LASLIB") get_library_version("${LASLIB_INCLUDE_DIR}/lasdefinitions.hpp" "LAS_TOOLS_VERSION" "" "" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "ITT") + get_library_version("${ITT_INCLUDE_DIR}/ittnotify.h" "ITT_MAJOR" "ITT_MINOR" "" version_var) endif() if(version_var) message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") From b76177cdf51c7e4e468f18fd3c28f49af4f0626f Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Mon, 2 Sep 2024 09:03:45 +0200 Subject: [PATCH 19/27] Add version check for OpenMesh library --- .../cmake/modules/display-third-party-libs-versions.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake index b9550dbaa4fc..de66bcd446cf 100644 --- a/Installation/cmake/modules/display-third-party-libs-versions.cmake +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -73,6 +73,12 @@ function(check_library cgal_3rdparty_lib) get_library_version("${LASLIB_INCLUDE_DIR}/lasdefinitions.hpp" "LAS_TOOLS_VERSION" "" "" version_var) elseif(${cgal_3rdparty_lib} STREQUAL "ITT") get_library_version("${ITT_INCLUDE_DIR}/ittnotify.h" "ITT_MAJOR" "ITT_MINOR" "" version_var) + elseif(${cgal_3rdparty_lib} STREQUAL "OpenMesh") + set(CONFIG_FILE_PATH "${OpenMesh_DIR}/OpenMeshConfig-release.cmake") + file(READ ${CONFIG_FILE_PATH} FILE_CONTENT) + if("${FILE_CONTENT}" MATCHES "IMPORTED_LOCATION_RELEASE[ \t]+\".*\\.so\\.([0-9]+\\.[0-9]+)\"") + set(version_var "${CMAKE_MATCH_1}") + endif() endif() if(version_var) message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}") From 78af7b96f0faf5b23fc77f2446b8b82c867ef0c8 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Fri, 13 Sep 2024 10:11:18 +0200 Subject: [PATCH 20/27] Update OpenMesh version extraction logic in CMake script --- .../display-third-party-libs-versions.cmake | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake index de66bcd446cf..fa344cc04d6f 100644 --- a/Installation/cmake/modules/display-third-party-libs-versions.cmake +++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake @@ -74,10 +74,19 @@ function(check_library cgal_3rdparty_lib) elseif(${cgal_3rdparty_lib} STREQUAL "ITT") get_library_version("${ITT_INCLUDE_DIR}/ittnotify.h" "ITT_MAJOR" "ITT_MINOR" "" version_var) elseif(${cgal_3rdparty_lib} STREQUAL "OpenMesh") - set(CONFIG_FILE_PATH "${OpenMesh_DIR}/OpenMeshConfig-release.cmake") - file(READ ${CONFIG_FILE_PATH} FILE_CONTENT) - if("${FILE_CONTENT}" MATCHES "IMPORTED_LOCATION_RELEASE[ \t]+\".*\\.so\\.([0-9]+\\.[0-9]+)\"") - set(version_var "${CMAKE_MATCH_1}") + if (TARGET OpenMeshCore) + get_target_property(OpenMesh_INCLUDE_DIRS OpenMeshCore INTERFACE_INCLUDE_DIRECTORIES) + set(CONFIG_FILE_PATH "${OpenMesh_INCLUDE_DIRS}/OpenMesh/Core/System/config.h") + if(EXISTS ${CONFIG_FILE_PATH}) + file(READ ${CONFIG_FILE_PATH} CONFIG_CONTENT) + if("${CONFIG_CONTENT}" MATCHES "#define[ \t]+OM_VERSION[ \t]+(0x[0-9A-F]+)") + set(VERSION_HEX ${CMAKE_MATCH_1}) + math(EXPR VERSION_MAJOR "(${VERSION_HEX} & 0xF0000) >> 16") + math(EXPR VERSION_MINOR "(${VERSION_HEX} & 0x0FF00) >> 8") + math(EXPR VERSION_PATCH "(${VERSION_HEX} & 0x000FF)") + set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") + endif() + endif() endif() endif() if(version_var) From f7a42a87549758ec56cb58eb8f8c91bc844efb44 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Wed, 18 Sep 2024 15:57:37 +0200 Subject: [PATCH 21/27] Add modal popup for TPL version display across platforms --- Maintenance/test_handling/Summary_Script.js | 52 +++++++++++---- .../test_handling/create_testresult_page | 34 +++++++++- Maintenance/test_handling/testresult.css | 63 +++++++++++++++++-- 3 files changed, 131 insertions(+), 18 deletions(-) diff --git a/Maintenance/test_handling/Summary_Script.js b/Maintenance/test_handling/Summary_Script.js index 4c28e55f1092..9b637be6d697 100644 --- a/Maintenance/test_handling/Summary_Script.js +++ b/Maintenance/test_handling/Summary_Script.js @@ -171,8 +171,7 @@ function platformContainer(platforms) { platforms.forEach(platform => { const $container = $('
', { class: 'platform ' + platform.name }).appendTo($platformContainer); $container.html(`

Results of ${platform.name}

`); - const tplString = platform.third_party_libraries.replace("TPL: ", "").trim(); - const tplArray = tplString.split(",").map(tpl => tpl.trim()).filter(tpl => tpl.length > 0); + const tplArray = platform.tpl; const $toggleButton = $('
', { class: 'tpl-table', css: { display: 'none' } }).appendTo($container); const $thead = $('').appendTo($tplTable); const $tbody = $('').appendTo($tplTable); - - $('').append('').appendTo($thead); - - let $row = $('').appendTo($tbody); - tplArray.forEach((tpl, index) => { - if (index > 0 && index % 5 === 0) { - $row = $('').appendTo($tbody); - } - $('').append('').appendTo($thead); + tplArray.forEach(tpl => { + $('').append( + $('
Third Party Libraries
').text(tpl).appendTo($row); + $('
LibraryVersionStatus
').html(`${tpl.name}`), + $('').text(tpl.version || 'N/A'), + $('').text(tpl.status) + ).appendTo($tbody); + }); + $('.tpl-link').click(function(event) { + event.preventDefault(); + const tplName = $(this).data('tpl'); + showVersionsForTPL(tplName); }); const letters = ['n', 'w', 'o', 'r']; @@ -244,6 +246,34 @@ function closeAll() { $('.toggle-button').text('Show More'); } +function showVersionsForTPL(tplName) { + const $modal = $('#tplModal'); + const $modalTitle = $('#tplModalTitle'); + const $modalBody = $('#tplModalBody'); + $modalTitle.text(`Versions of ${tplName} across platforms`); + $modalBody.empty(); + let tplFound = false; + window.data.platforms.forEach(platform => { + const matchingTPL = platform.tpl.find(tpl => tpl.name === tplName); + if (matchingTPL) { + tplFound = true; + $modalBody.append(`

Platform: ${platform.name} | Version: ${matchingTPL.version || 'N/A'} | Status: ${matchingTPL.status}

`); + } + }); + if (!tplFound) { + $modalBody.append('

No versions of this TPL found across platforms.

'); + } + $modal.show(); + $('.close').click(function() { + $modal.hide(); + }); + $(window).click(function(event) { + if (event.target == $modal[0]) { + $modal.hide(); + } + }); +} + function main() { const url = searchURLs["current"]; $.getJSON(url, data => { diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index 5c2db003f028..dee712a8af69 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -754,19 +754,40 @@ sub create_summary_page { my ($platform_num, $platform) = (0, ""); foreach $platform (@platforms_to_do) { my $third_party_libraries = ""; - if (open (PLATFORM_INFO, "results_${platform}.info")) { + my @tpl_list = (); + if (open(PLATFORM_INFO, "results_${platform}.info")) { my $line = ""; while () { $line = $_; if ($line =~ /^TPL:/) { $third_party_libraries = $line; + if ($third_party_libraries =~ /^TPL:\s*(.*)/) { + my $tpl_data = $1; + my @tpls = split /,\s*/, $tpl_data; + foreach my $tpl (@tpls) { + if ($tpl =~ /(.+)\s+not found/i) { + push @tpl_list, { + name => $1, + version => undef, + status => "not found" + }; + } + elsif ($tpl =~ /(.+)\s+(\S+)/) { + push @tpl_list, { + name => $1, + version => $2, + status => "found" + }; + } + } + } } } close PLATFORM_INFO; } my $platform_info = { name => $platform, - third_party_libraries => $third_party_libraries, + tpl => \@tpl_list, test_directories => [], }; foreach my $letter (@letters) { @@ -791,7 +812,7 @@ sub create_summary_page { platforms => \@platforms_data, }; my $json = JSON->new->allow_nonref; - my $json_text = $json->pretty->encode($final_data); + my $json_text = $json->encode($final_data); open my $fh, '>', "$testresult_dir/$release_name/search_index.json" or die "Could not open file: $!"; print $fh $json_text; close $fh; @@ -818,6 +839,13 @@ sub create_summary_page { + ', { class: 'tpl-table', css: { display: 'none' } }).appendTo($container); const $thead = $('').appendTo($tplTable); const $tbody = $('').appendTo($tplTable); - $('').append('').appendTo($thead); + const $headerRow = $(''); + $('').append( $(' + + + + + `); } }); if (!tplFound) { - $modalBody.append('

No versions of this TPL found across platforms.

'); + $modalBody.append(''); } $modal.show(); $('.close').click(function() { @@ -272,6 +285,28 @@ function showVersionsForTPL(tplName) { $modal.hide(); } }); + const $thead = $modalTable.find('thead'); + initializeTableSorting($thead, $modalBody); + $thead.find('.sortable').first().click(); +} + +function initializeTableSorting($thead, $tbody) { + let sortOrder = 1; + $thead.find('.sortable').click(function() { + const columnIndex = $(this).data('sort'); + const rows = $tbody.find('tr').get(); + rows.sort((a, b) => { + const keyA = $(a).children('td').eq(columnIndex).text().toUpperCase(); + const keyB = $(b).children('td').eq(columnIndex).text().toUpperCase(); + if (keyA < keyB) return -1 * sortOrder; + if (keyA > keyB) return 1 * sortOrder; + return 0; + }); + $.each(rows, (_index, row) => { + $tbody.append(row); + }); + sortOrder *= -1; + }); } function main() { diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index dee712a8af69..93751be0aae2 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -843,7 +843,16 @@ sub create_summary_page {
LibraryVersionStatus
', { class: 'sortable', 'data-sort': 0, text: 'Library' }).appendTo($headerRow); + $('', { class: 'sortable', 'data-sort': 1, text: 'Version' }).appendTo($headerRow); + $('', { class: 'sortable', 'data-sort': 2, text: 'Status' }).appendTo($headerRow); + $headerRow.appendTo($thead); tplArray.forEach(tpl => { $('
').html(`${tpl.name}`), @@ -190,6 +194,8 @@ function platformContainer(platforms) { $('').text(tpl.status) ).appendTo($tbody); }); + initializeTableSorting($thead, $tbody); + $thead.find('.sortable').first().click(); $('.tpl-link').click(function(event) { event.preventDefault(); const tplName = $(this).data('tpl'); @@ -249,19 +255,26 @@ function closeAll() { function showVersionsForTPL(tplName) { const $modal = $('#tplModal'); const $modalTitle = $('#tplModalTitle'); - const $modalBody = $('#tplModalBody'); - $modalTitle.text(`Versions of ${tplName} across platforms`); + const $modalTable = $modal.find('table'); + const $modalBody = $modalTable.find('tbody'); $modalBody.empty(); + $modalTitle.text(`Versions of ${tplName} across platforms`); let tplFound = false; window.data.platforms.forEach(platform => { const matchingTPL = platform.tpl.find(tpl => tpl.name === tplName); if (matchingTPL) { tplFound = true; - $modalBody.append(`

Platform: ${platform.name} | Version: ${matchingTPL.version || 'N/A'} | Status: ${matchingTPL.status}

`); + $modalBody.append(` +
No versions of this TPL found across platforms.
+ + + + + + + + +
PlatformVersionStatus
diff --git a/Maintenance/test_handling/testresult.css b/Maintenance/test_handling/testresult.css index e4ebd6a74350..7eb5096eba89 100644 --- a/Maintenance/test_handling/testresult.css +++ b/Maintenance/test_handling/testresult.css @@ -170,6 +170,11 @@ TABLE.result TD > a.package_name { color: #1A0DAB; } +.sortable{ + cursor: pointer; + text-decoration: underline; +} + /* TPL Modal */ .modal { display: none; @@ -215,4 +220,26 @@ TABLE.result TD > a.package_name { margin: 10px 0; font-size: 14px; color: #555; +} + +.modaltable{ + border-collapse: collapse; + cellspacing: 0; +} + +.modalHeader{ + text-align: center; + width: auto; +} + +.modalBody { + text-align: center; +} + +.modal-table-row { + border-bottom: 2px ridge #000; +} + +.modal-table-row td { + padding: 7px; } \ No newline at end of file From c64394274bcc9b33b888918dc09a22ce8279c5ec Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Mon, 23 Sep 2024 15:22:48 +0200 Subject: [PATCH 23/27] Add logic to copy Summary_Script.js to test result dir --- Maintenance/test_handling/create_testresult_page | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index 4cca82479b4e..63e7a74101eb 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -17,6 +17,7 @@ use Cwd; use strict; use Date::Format; use JSON; +use File::Copy; my $server_url="https://cgal.geometryfactory.com/"; my $cgal_members="${server_url}CGAL/Members/"; @@ -752,7 +753,9 @@ sub create_summary_page { my @letters = ('r', 'n', 'w', 'o'); my $letters_options = join("\n", map { "" } @letters); my $package_options = join("\n", map { "" } sort keys %test_directories); - + my $summary_script_src = "$testresult_dir/../Summary_Script.js"; + my $summary_script_dest = "$testresult_dir/$release_name/Summary_Script.js"; + my $summary_page_path = "$testresult_dir/summary".substr($release_name,4).".html"; my @platforms_data; my ($platform_num, $platform) = (0, ""); foreach $platform (@platforms_to_do) { @@ -887,10 +890,13 @@ sub create_summary_page {
- + EOF - - my $summary_page_path = "$testresult_dir/summary".substr($release_name,4).".html"; + if (-e $summary_script_src) { + copy($summary_script_src, $summary_script_dest) or die "Copy failed: $!"; + } else { + die "Source file $summary_script_src does not exist."; + } open(my $out, '>', $summary_page_path) or die "Could not open file '$summary_page_path' $!"; print $out $Summary_output; From 7e8443fb17554c21c997a50d282959c746c6560d Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 25 Sep 2024 08:18:01 +0200 Subject: [PATCH 24/27] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index aea33b8c03ec..ff33e80a3b13 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -18,7 +18,9 @@ CONTAINER_HOST=unix:///run/podman/podman.sock 5,15,25,35,45,55 * * * * cd $HOME/CGAL/collect_and_public_testresults; ./treat_result_collection || echo ERROR # Create internal release -0 21 * * * python3 /home/lrineau/CGAL/branches/local-master.git/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py +#0 21 * * * python3 /home/lrineau/CGAL/branches/local-master.git/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py +0 21 * * * python3 /home/lrineau/CGAL/cgal-testsuite-cgal-gf.git/bin/create_internal_release_of_the_day.py + 30 16 * * * echo ESSAI; false ## Older stuff From de1872f46c173ed7c7b7199a08793729c17da448 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 25 Sep 2024 13:10:57 +0200 Subject: [PATCH 25/27] fix the error ``` Source file /home/lrineau/CGAL/collect_and_public_testresults/TESTRESULTS/../Summary_Script.js does not exist. at ./create_testresult_page line 898. ``` .. and another fix about `/usr/sbin/restorecon`. --- Scripts/developer_scripts/create_new_release | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/create_new_release b/Scripts/developer_scripts/create_new_release index 2b0e0f2ff2b6..bb88cc894ede 100755 --- a/Scripts/developer_scripts/create_new_release +++ b/Scripts/developer_scripts/create_new_release @@ -136,7 +136,7 @@ HTML_DIR="/u/agrion/geometrica/CGAL/Members/Releases" URL="http://cgal.inria.fr/CGAL/Members/Releases" -PATH=$PATH:/usr/local/bin:/usr/bin/gnu +PATH=$PATH:/usr/local/bin:/usr/sbin # Working dir TMPDIR="`pwd`" From 58cf16de67d5d7e259ed90d064f19b43711994e2 Mon Sep 17 00:00:00 2001 From: Nicolas Saillant Date: Wed, 25 Sep 2024 16:21:06 +0200 Subject: [PATCH 26/27] Use jQuery TableSorter for sorting tables --- Maintenance/test_handling/Summary_Script.js | 44 +++++---------- .../test_handling/create_testresult_page | 11 ++-- Maintenance/test_handling/testresult.css | 56 +++++++++++++------ 3 files changed, 58 insertions(+), 53 deletions(-) diff --git a/Maintenance/test_handling/Summary_Script.js b/Maintenance/test_handling/Summary_Script.js index dfac558e195d..90a87da08e5c 100644 --- a/Maintenance/test_handling/Summary_Script.js +++ b/Maintenance/test_handling/Summary_Script.js @@ -179,23 +179,25 @@ function platformContainer(platforms) { $tplTable.toggle(); } }).appendTo($container); - const $tplTable = $('', { class: 'tpl-table', css: { display: 'none' } }).appendTo($container); + const $tplTable = $('
', { + class: 'tablesorter', + css: { + display: 'none', + maxWidth: '300px' + } + }).appendTo($container); const $thead = $('').appendTo($tplTable); const $tbody = $('').appendTo($tplTable); const $headerRow = $(''); - $('').append( $(' - `); } @@ -276,6 +277,7 @@ function showVersionsForTPL(tplName) { if (!tplFound) { $modalBody.append(''); } + $modalTable.trigger("update"); $modal.show(); $('.close').click(function() { $modal.hide(); @@ -285,28 +287,6 @@ function showVersionsForTPL(tplName) { $modal.hide(); } }); - const $thead = $modalTable.find('thead'); - initializeTableSorting($thead, $modalBody); - $thead.find('.sortable').first().click(); -} - -function initializeTableSorting($thead, $tbody) { - let sortOrder = 1; - $thead.find('.sortable').click(function() { - const columnIndex = $(this).data('sort'); - const rows = $tbody.find('tr').get(); - rows.sort((a, b) => { - const keyA = $(a).children('td').eq(columnIndex).text().toUpperCase(); - const keyB = $(b).children('td').eq(columnIndex).text().toUpperCase(); - if (keyA < keyB) return -1 * sortOrder; - if (keyA > keyB) return 1 * sortOrder; - return 0; - }); - $.each(rows, (_index, row) => { - $tbody.append(row); - }); - sortOrder *= -1; - }); } function main() { @@ -319,7 +299,9 @@ function main() { platformContainer(data.platforms); packageContainer(data.platforms); $packageContainer.hide(); - + $(document).ready(function() { + $("table.tablesorter").tablesorter(); + }); const urlParams = new URLSearchParams(window.location.search); const platform = urlParams.get('platform'); if (platform) { diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index 63e7a74101eb..cbdf6f1c03fb 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -838,6 +838,7 @@ sub create_summary_page { Summary + + EOF if (-e $summary_script_src) { copy($summary_script_src, $summary_script_dest) or die "Copy failed: $!"; diff --git a/Maintenance/test_handling/testresult.css b/Maintenance/test_handling/testresult.css index 7eb5096eba89..0345403739eb 100644 --- a/Maintenance/test_handling/testresult.css +++ b/Maintenance/test_handling/testresult.css @@ -170,11 +170,6 @@ TABLE.result TD > a.package_name { color: #1A0DAB; } -.sortable{ - cursor: pointer; - text-decoration: underline; -} - /* TPL Modal */ .modal { display: none; @@ -222,24 +217,51 @@ TABLE.result TD > a.package_name { color: #555; } -.modaltable{ +table.tablesorter { + width: 100%; + margin: 20px 0; border-collapse: collapse; - cellspacing: 0; + background-color: #f0f0f0; + color: #333; + font-family: Arial, sans-serif; } -.modalHeader{ - text-align: center; - width: auto; +table.tablesorter thead th { + background-color: #d9d9d9; + color: #333; + font-weight: bold; + padding: 10px; + border: 1px solid #ccc; + text-align: left; + cursor: pointer; } -.modalBody { - text-align: center; +table.tablesorter thead th.tablesorter-headerAsc { + background-repeat: no-repeat; + background-position: right center; + padding-right: 20px; +} + +table.tablesorter thead th.tablesorter-headerDesc { + background-repeat: no-repeat; + background-position: right center; + padding-right: 20px; +} + +table.tablesorter tbody tr:nth-child(odd) { + background-color: #e6e6e6; } -.modal-table-row { - border-bottom: 2px ridge #000; +table.tablesorter tbody tr:nth-child(even) { + background-color: #f0f0f0; +} + +table.tablesorter tbody td { + padding: 8px; + border: 1px solid #ccc; + text-align: left; } -.modal-table-row td { - padding: 7px; -} \ No newline at end of file +table.tablesorter tbody tr:hover { + background-color: #d1d1d1 +} From 885c906910051491c04ee502d90b304714ed758b Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 25 Sep 2024 17:13:04 +0200 Subject: [PATCH 27/27] fix the error ``` Source file /home/lrineau/CGAL/collect_and_public_testresults/TESTRESULTS/../Summary_Script.js does not exist. at ./create_testresult_page line 898. ``` --- Maintenance/test_handling/create_testresult_page | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Maintenance/test_handling/create_testresult_page b/Maintenance/test_handling/create_testresult_page index cbdf6f1c03fb..a1805aa9ec99 100755 --- a/Maintenance/test_handling/create_testresult_page +++ b/Maintenance/test_handling/create_testresult_page @@ -18,6 +18,7 @@ use strict; use Date::Format; use JSON; use File::Copy; +use FindBin; my $server_url="https://cgal.geometryfactory.com/"; my $cgal_members="${server_url}CGAL/Members/"; @@ -753,7 +754,7 @@ sub create_summary_page { my @letters = ('r', 'n', 'w', 'o'); my $letters_options = join("\n", map { "" } @letters); my $package_options = join("\n", map { "" } sort keys %test_directories); - my $summary_script_src = "$testresult_dir/../Summary_Script.js"; + my $summary_script_src = $FindBin::RealBin . "/Summary_Script.js"; my $summary_script_dest = "$testresult_dir/$release_name/Summary_Script.js"; my $summary_page_path = "$testresult_dir/summary".substr($release_name,4).".html"; my @platforms_data;
', { class: 'sortable', 'data-sort': 0, text: 'Library' }).appendTo($headerRow); - $('', { class: 'sortable', 'data-sort': 1, text: 'Version' }).appendTo($headerRow); - $('', { class: 'sortable', 'data-sort': 2, text: 'Status' }).appendTo($headerRow); + $('', { text: 'Library' }).appendTo($headerRow); + $('', { text: 'Version' }).appendTo($headerRow); $headerRow.appendTo($thead); tplArray.forEach(tpl => { $('
').html(`${tpl.name}`), $('').text(tpl.version || 'N/A'), - $('').text(tpl.status) ).appendTo($tbody); }); - initializeTableSorting($thead, $tbody); - $thead.find('.sortable').first().click(); $('.tpl-link').click(function(event) { event.preventDefault(); const tplName = $(this).data('tpl'); @@ -268,7 +270,6 @@ function showVersionsForTPL(tplName) {
No versions of this TPL found across platforms.