From 52c85a963e63466c7b2a52188c5b5a4a1152f54c Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 11 Mar 2024 08:38:17 -0500 Subject: [PATCH 01/19] Make the library modular usable. --- benchmarks/Jamfile | 2 +- benchmarks/opencl/Jamfile | 2 +- build.jam | 32 ++++++++++++++++++++++++++++ examples/tensor/Jamfile | 7 ++++--- test/Jamfile | 44 ++++++++++++++++++++------------------- test/opencl/Jamfile | 2 +- test/tensor/Jamfile | 4 ++-- 7 files changed, 64 insertions(+), 29 deletions(-) create mode 100644 build.jam diff --git a/benchmarks/Jamfile b/benchmarks/Jamfile index ab2f77e82..4aa8ce8bb 100644 --- a/benchmarks/Jamfile +++ b/benchmarks/Jamfile @@ -4,7 +4,7 @@ # Boost Software License, Version 1.0. (See accompanying file # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -project boost/ublas/benchmarks +project : requirements /boost/program_options//boost_program_options ; diff --git a/benchmarks/opencl/Jamfile b/benchmarks/opencl/Jamfile index 282d00711..045c9cefb 100644 --- a/benchmarks/opencl/Jamfile +++ b/benchmarks/opencl/Jamfile @@ -13,7 +13,7 @@ import ../../clblas ; using opencl ; using clblas ; -project boost/ublas/benchmarks/opencl +project : requirements /boost/program_options//boost_program_options gcc:-Wno-ignored-attributes diff --git a/build.jam b/build.jam new file mode 100644 index 000000000..0d7244edd --- /dev/null +++ b/build.jam @@ -0,0 +1,32 @@ +# Copyright René Ferdinand Rivera Morell 2023 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +import project ; + +project /boost/ublas + : common-requirements + /boost/compute//boost_compute + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/interval//boost_interval + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/smart_ptr//boost_smart_ptr + /boost/static_assert//boost_static_assert + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof + include + ; + +explicit + [ alias boost_ublas ] + [ alias all : boost_ublas benchmarks examples/tensor test ] + ; + +call-if : boost-library ublas + ; diff --git a/examples/tensor/Jamfile b/examples/tensor/Jamfile index 101a8a4c9..6781de22c 100644 --- a/examples/tensor/Jamfile +++ b/examples/tensor/Jamfile @@ -6,10 +6,10 @@ # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -import ../../../../config/checks/config : requires ; +import config : requires ; # Project settings -project boost-ublas-tensor-example +project : requirements BOOST_UBLAS_NO_EXCEPTIONS vacpp:"BOOST_UBLAS_NO_ELEMENT_PROXIES" @@ -17,9 +17,10 @@ project boost-ublas-tensor-example clang:"-Wall -pedantic -Wextra -Wno-unknown-pragmas" msvc:"/W4" # == all [ requires cxx17_if_constexpr ] + 20 ; -exe access_tensor : access_tensor.cpp ; +exe access_tensor : access_tensor.cpp /boost/multiprecision//boost_multiprecision ; exe simple_expressions : simple_expressions.cpp ; exe multiply_tensors_product_function : multiply_tensors_product_function.cpp ; exe multiply_tensors_einstein_notation : multiply_tensors_einstein_notation.cpp ; diff --git a/test/Jamfile b/test/Jamfile index f6716e2c6..3a560bc45 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -47,7 +47,7 @@ UBLAS_TESTSET_SPARSE_COO ?= # Project settings -project boost-ublas-test +project : requirements BOOST_UBLAS_NO_EXCEPTIONS vacpp:"BOOST_UBLAS_NO_ELEMENT_PROXIES" @@ -121,6 +121,7 @@ test-suite numeric/uBLAS [ run test4.cpp test42.cpp test43.cpp + /boost/math//boost_math : : : $(UBLAS_TESTSET) ] @@ -165,61 +166,62 @@ test-suite numeric/uBLAS ] [ run triangular_layout.cpp ] - [ run comp_mat_erase.cpp + [ run comp_mat_erase.cpp /boost/test//boost_test : : : msvc:on ] - [ run sparse_view_test.cpp + [ run sparse_view_test.cpp /boost/test//boost_test : : : msvc:on ] - [ run begin_end.cpp + [ run begin_end.cpp /boost/math//boost_math ] - [ run num_columns.cpp + [ run num_columns.cpp /boost/math//boost_math ] - [ run num_rows.cpp + [ run num_rows.cpp /boost/math//boost_math ] - [ run size.cpp + [ run size.cpp /boost/math//boost_math ] - [ run test_coordinate_matrix_sort.cpp + [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math ] - [ run test_coordinate_matrix_sort.cpp + [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math : : : BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT : test_coordinate_matrix_always_do_full_sort : ] - [ run test_complex_norms.cpp + [ run test_complex_norms.cpp /boost/math//boost_math ] - [ run test_scaled_norm.cpp + [ run test_scaled_norm.cpp /boost/math//boost_math : : : BOOST_UBLAS_SCALED_NORM ] - [ run test_assignment.cpp + [ run test_assignment.cpp /boost/timer//boost_timer /boost/math//boost_math : : : BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT + BOOST_TIMER_ENABLE_DEPRECATED ] [ run test_triangular.cpp : : : /boost/timer//boost_timer ] - [ run test_ticket7296.cpp + [ run test_ticket7296.cpp /boost/math//boost_math : : : msvc:/wd4127 # The program checks that test facilities work fine. The warning appears many times. : : ] - [ run test_inplace_solve.cpp + [ run test_inplace_solve.cpp /boost/math//boost_math : : : $(UBLAS_TESTSET) : test_inplace_solve_basic : ] - [ run test_inplace_solve.cpp + [ run test_inplace_solve.cpp /boost/math//boost_math : : : $(UBLAS_TESTSET_SPARSE) @@ -227,30 +229,30 @@ test-suite numeric/uBLAS : test_inplace_solve_sparse : ] - [ run test_inplace_solve.cpp + [ run test_inplace_solve.cpp /boost/math//boost_math : : : USE_MAPPED_VECTOR_OF_MAPPED_VECTOR : test_inplace_solve_mvov : ] - [ run test_coordinate_vector_inplace_merge.cpp + [ run test_coordinate_vector_inplace_merge.cpp /boost/math//boost_math ] - [ run test_coordinate_matrix_inplace_merge.cpp + [ run test_coordinate_matrix_inplace_merge.cpp /boost/math//boost_math ] - [ run test_banded_storage_layout.cpp + [ run test_banded_storage_layout.cpp /boost/math//boost_math : : : : : ] - [ run test_fixed_containers.cpp + [ run test_fixed_containers.cpp /boost/math//boost_math : : : ] - [ run test_matrix_vector.cpp + [ run test_matrix_vector.cpp /boost/math//boost_math ] [ compile minimal_allocator_test.cpp ] ; diff --git a/test/opencl/Jamfile b/test/opencl/Jamfile index cc8679223..9da1870ed 100644 --- a/test/opencl/Jamfile +++ b/test/opencl/Jamfile @@ -13,7 +13,7 @@ import ../../clblas ; using opencl ; using clblas ; -project boost/ublas/test/opencl +project : requirements gcc:-Wno-ignored-attributes clang:-Wno-ignored-attributes diff --git a/test/tensor/Jamfile b/test/tensor/Jamfile index 908e359ea..bcfad63fc 100644 --- a/test/tensor/Jamfile +++ b/test/tensor/Jamfile @@ -11,7 +11,7 @@ # Google and Fraunhofer IOSB, Ettlingen, Germany # -import ../../../../config/checks/config : requires ; +import config : requires ; project boost/ublas/test/tensor : requirements @@ -22,7 +22,7 @@ project boost/ublas/test/tensor alias unit_test_framework : # sources - /boost//unit_test_framework + /boost/test//unit_test_framework ; # make aliases explicit so the libraries will only be built when requested From 8ead8bf2d1e6107de8b7e8d420d6b8e053f54c2b Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 29 Mar 2024 21:15:59 -0500 Subject: [PATCH 02/19] Switch to library requirements instead of source. As source puts extra source in install targets. --- build.jam | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/build.jam b/build.jam index 0d7244edd..0cf6dc092 100644 --- a/build.jam +++ b/build.jam @@ -7,19 +7,19 @@ import project ; project /boost/ublas : common-requirements - /boost/compute//boost_compute - /boost/concept_check//boost_concept_check - /boost/config//boost_config - /boost/core//boost_core - /boost/interval//boost_interval - /boost/iterator//boost_iterator - /boost/mpl//boost_mpl - /boost/range//boost_range - /boost/serialization//boost_serialization - /boost/smart_ptr//boost_smart_ptr - /boost/static_assert//boost_static_assert - /boost/type_traits//boost_type_traits - /boost/typeof//boost_typeof + /boost/compute//boost_compute + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/interval//boost_interval + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/smart_ptr//boost_smart_ptr + /boost/static_assert//boost_static_assert + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof include ; From 0ab4c3329d5f6a06ba8fea15feca84f7add9c079 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 4 May 2024 23:38:11 -0500 Subject: [PATCH 03/19] Add missing import-search for cconfig/predef checks. --- examples/tensor/Jamfile | 3 ++- test/tensor/Jamfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/tensor/Jamfile b/examples/tensor/Jamfile index 6781de22c..6755207db 100644 --- a/examples/tensor/Jamfile +++ b/examples/tensor/Jamfile @@ -6,8 +6,9 @@ # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) +import-search /boost/config/checks ; import config : requires ; - + # Project settings project : requirements diff --git a/test/tensor/Jamfile b/test/tensor/Jamfile index bcfad63fc..e2a4e07db 100644 --- a/test/tensor/Jamfile +++ b/test/tensor/Jamfile @@ -11,6 +11,7 @@ # Google and Fraunhofer IOSB, Ettlingen, Germany # +import-search /boost/config/checks ; import config : requires ; project boost/ublas/test/tensor @@ -93,6 +94,6 @@ test-suite boost-ublas-tensor-test : : test_tensor : - # + # ] ; From 7f026e124c0fa60a345ae2d073672a22ce3710b0 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 5 May 2024 09:00:01 -0500 Subject: [PATCH 04/19] Add requires-b2 check to top-level build file. --- build.jam | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.jam b/build.jam index 0cf6dc092..bdb213571 100644 --- a/build.jam +++ b/build.jam @@ -3,6 +3,8 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) +require-b2 5.1 ; + import project ; project /boost/ublas From 108cdb1c8cc9f987397d89fb86f4b3ea8bf4ff17 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 14 Jun 2024 11:33:56 -0500 Subject: [PATCH 05/19] Bump B2 require to 5.2 --- build.jam | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.jam b/build.jam index bdb213571..22660f7c7 100644 --- a/build.jam +++ b/build.jam @@ -3,9 +3,7 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -require-b2 5.1 ; - -import project ; +require-b2 5.2 ; project /boost/ublas : common-requirements From 21f5fae7d8f841880fd334ad53ae3d136d9b6138 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 20 Jul 2024 22:52:04 -0500 Subject: [PATCH 06/19] Update copyright dates. --- build.jam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.jam b/build.jam index 22660f7c7..060c248ad 100644 --- a/build.jam +++ b/build.jam @@ -1,4 +1,4 @@ -# Copyright René Ferdinand Rivera Morell 2023 +# Copyright René Ferdinand Rivera Morell 2023-2024 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) From 9f1ec2ae0ac25e6f508cbaadafa4f8e671f62b95 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 23 Jul 2024 22:34:23 -0500 Subject: [PATCH 07/19] Move inter-lib dependencies to a project variable and into the build targets. --- build.jam | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/build.jam b/build.jam index 060c248ad..b95e3905f 100644 --- a/build.jam +++ b/build.jam @@ -5,28 +5,31 @@ require-b2 5.2 ; +constant boost_dependencies : + /boost/compute//boost_compute + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/interval//boost_interval + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/smart_ptr//boost_smart_ptr + /boost/static_assert//boost_static_assert + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof ; + project /boost/ublas : common-requirements - /boost/compute//boost_compute - /boost/concept_check//boost_concept_check - /boost/config//boost_config - /boost/core//boost_core - /boost/interval//boost_interval - /boost/iterator//boost_iterator - /boost/mpl//boost_mpl - /boost/range//boost_range - /boost/serialization//boost_serialization - /boost/smart_ptr//boost_smart_ptr - /boost/static_assert//boost_static_assert - /boost/type_traits//boost_type_traits - /boost/typeof//boost_typeof include ; explicit - [ alias boost_ublas ] + [ alias boost_ublas : : : : $(boost_dependencies) ] [ alias all : boost_ublas benchmarks examples/tensor test ] ; call-if : boost-library ublas ; + From 18a0b6029575f61bfcfdc4b80adcdf6ff10256d0 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Thu, 25 Jul 2024 23:29:59 -0500 Subject: [PATCH 08/19] Switch to /boost/test//included target for header only mode of Boost.Test. --- test/Jamfile | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/test/Jamfile b/test/Jamfile index 3a560bc45..295af4f77 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -26,23 +26,23 @@ UBLAS_TESTSET ?= # Sparse matrices: USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX USE_COORDINATE_MATRIX USE_MAPPED_VECTOR_OF_MAPPED_VECTOR USE_GENERALIZED_VECTOR_OF_VECTOR UBLAS_TESTSET_SPARSE = [ modules.peek : UBLAS_TESTSET_SPARSE ] ; -UBLAS_TESTSET_SPARSE ?= +UBLAS_TESTSET_SPARSE ?= USE_DOUBLE USE_STD_COMPLEX # USE_RANGE USE_SLICE # Too complex for regression testing USE_UNBOUNDED_ARRAY USE_MAP_ARRAY USE_STD_MAP - USE_MAPPED_VECTOR USE_COMPRESSED_VECTOR - USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX + USE_MAPPED_VECTOR USE_COMPRESSED_VECTOR + USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX ; # Generalize VofV still failing # USE_GENERALIZED_VECTOR_OF_VECTOR UBLAS_TESTSET_SPARSE_COO = [ modules.peek : UBLAS_TESTSET_SPARSE_COO ] ; -UBLAS_TESTSET_SPARSE_COO ?= +UBLAS_TESTSET_SPARSE_COO ?= USE_DOUBLE USE_STD_COMPLEX USE_UNBOUNDED_ARRAY USE_COORDINATE_VECTOR - USE_COORDINATE_MATRIX + USE_COORDINATE_MATRIX ; @@ -111,11 +111,11 @@ test-suite numeric/uBLAS test33.cpp : : : USE_FLOAT - USE_DOUBLE - USE_STD_COMPLEX + USE_DOUBLE + USE_STD_COMPLEX USE_STD_MAP - USE_MAPPED_VECTOR_OF_MAPPED_VECTOR - : test3_mvov + USE_MAPPED_VECTOR_OF_MAPPED_VECTOR + : test3_mvov : ] [ run test4.cpp @@ -166,11 +166,11 @@ test-suite numeric/uBLAS ] [ run triangular_layout.cpp ] - [ run comp_mat_erase.cpp /boost/test//boost_test + [ run comp_mat_erase.cpp /boost/test//included : : : msvc:on ] - [ run sparse_view_test.cpp /boost/test//boost_test + [ run sparse_view_test.cpp /boost/test//included : : : msvc:on ] @@ -215,23 +215,23 @@ test-suite numeric/uBLAS : ] [ run test_inplace_solve.cpp /boost/math//boost_math - : - : + : + : : $(UBLAS_TESTSET) : test_inplace_solve_basic : ] [ run test_inplace_solve.cpp /boost/math//boost_math - : - : + : + : : $(UBLAS_TESTSET_SPARSE) $(UBLAS_TESTSET_SPARSE_COO) : test_inplace_solve_sparse : ] [ run test_inplace_solve.cpp /boost/math//boost_math - : - : + : + : : USE_MAPPED_VECTOR_OF_MAPPED_VECTOR : test_inplace_solve_mvov : From de19c2ebf312b20750366ffd9046ccc54b7f6541 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Thu, 8 Aug 2024 21:45:19 -0500 Subject: [PATCH 09/19] Change Boost Test build refs to work with both old and modular test lib targets. --- test/tensor/Jamfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tensor/Jamfile b/test/tensor/Jamfile index e2a4e07db..a76251163 100644 --- a/test/tensor/Jamfile +++ b/test/tensor/Jamfile @@ -23,7 +23,7 @@ project boost/ublas/test/tensor alias unit_test_framework : # sources - /boost/test//unit_test_framework + /boost/test//boost_unit_test_framework ; # make aliases explicit so the libraries will only be built when requested From b5094259443f1876a5d4cdc03cd68085692c3578 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 9 Aug 2024 23:57:14 -0500 Subject: [PATCH 10/19] Update build deps. --- benchmarks/Jamfile | 4 +++- examples/tensor/Jamfile | 1 + test/Jamfile | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/benchmarks/Jamfile b/benchmarks/Jamfile index 4aa8ce8bb..0ff838f85 100644 --- a/benchmarks/Jamfile +++ b/benchmarks/Jamfile @@ -5,7 +5,9 @@ # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) project - : requirements /boost/program_options//boost_program_options + : requirements + /boost/ublas//boost_ublas + /boost/program_options//boost_program_options ; exe add : add.cpp ; diff --git a/examples/tensor/Jamfile b/examples/tensor/Jamfile index 6755207db..0211d5416 100644 --- a/examples/tensor/Jamfile +++ b/examples/tensor/Jamfile @@ -12,6 +12,7 @@ import config : requires ; # Project settings project : requirements + /boost/ublas//boost_ublas BOOST_UBLAS_NO_EXCEPTIONS vacpp:"BOOST_UBLAS_NO_ELEMENT_PROXIES" gcc:"-Wall -pedantic -Wextra -Wno-unknown-pragmas" diff --git a/test/Jamfile b/test/Jamfile index 295af4f77..470827677 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -49,6 +49,7 @@ UBLAS_TESTSET_SPARSE_COO ?= # Project settings project : requirements + /boost/ublas//boost_ublas BOOST_UBLAS_NO_EXCEPTIONS vacpp:"BOOST_UBLAS_NO_ELEMENT_PROXIES" gcc:"-Wall -Wno-unknown-pragmas" From 1dbef09acb9b32a0a47167a691af6e25abb4f2ca Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 11 Aug 2024 09:23:25 -0500 Subject: [PATCH 11/19] Change math dep real target math/tr1. --- test/Jamfile | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/test/Jamfile b/test/Jamfile index 470827677..78a6bc132 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -122,7 +122,7 @@ test-suite numeric/uBLAS [ run test4.cpp test42.cpp test43.cpp - /boost/math//boost_math + /boost/math//boost_math_tr1 : : : $(UBLAS_TESTSET) ] @@ -175,30 +175,30 @@ test-suite numeric/uBLAS : : : msvc:on ] - [ run begin_end.cpp /boost/math//boost_math + [ run begin_end.cpp /boost/math//boost_math_tr1 ] - [ run num_columns.cpp /boost/math//boost_math + [ run num_columns.cpp /boost/math//boost_math_tr1 ] - [ run num_rows.cpp /boost/math//boost_math + [ run num_rows.cpp /boost/math//boost_math_tr1 ] - [ run size.cpp /boost/math//boost_math + [ run size.cpp /boost/math//boost_math_tr1 ] - [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math + [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math_tr1 ] - [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math + [ run test_coordinate_matrix_sort.cpp /boost/math//boost_math_tr1 : : : BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT : test_coordinate_matrix_always_do_full_sort : ] - [ run test_complex_norms.cpp /boost/math//boost_math + [ run test_complex_norms.cpp /boost/math//boost_math_tr1 ] - [ run test_scaled_norm.cpp /boost/math//boost_math + [ run test_scaled_norm.cpp /boost/math//boost_math_tr1 : : : BOOST_UBLAS_SCALED_NORM ] - [ run test_assignment.cpp /boost/timer//boost_timer /boost/math//boost_math + [ run test_assignment.cpp /boost/timer//boost_timer /boost/math//boost_math_tr1 : : : BOOST_UBLAS_COO_ALWAYS_DO_FULL_SORT BOOST_TIMER_ENABLE_DEPRECATED @@ -208,21 +208,21 @@ test-suite numeric/uBLAS : : /boost/timer//boost_timer ] - [ run test_ticket7296.cpp /boost/math//boost_math + [ run test_ticket7296.cpp /boost/math//boost_math_tr1 : : : msvc:/wd4127 # The program checks that test facilities work fine. The warning appears many times. : : ] - [ run test_inplace_solve.cpp /boost/math//boost_math + [ run test_inplace_solve.cpp /boost/math//boost_math_tr1 : : : $(UBLAS_TESTSET) : test_inplace_solve_basic : ] - [ run test_inplace_solve.cpp /boost/math//boost_math + [ run test_inplace_solve.cpp /boost/math//boost_math_tr1 : : : $(UBLAS_TESTSET_SPARSE) @@ -230,30 +230,30 @@ test-suite numeric/uBLAS : test_inplace_solve_sparse : ] - [ run test_inplace_solve.cpp /boost/math//boost_math + [ run test_inplace_solve.cpp /boost/math//boost_math_tr1 : : : USE_MAPPED_VECTOR_OF_MAPPED_VECTOR : test_inplace_solve_mvov : ] - [ run test_coordinate_vector_inplace_merge.cpp /boost/math//boost_math + [ run test_coordinate_vector_inplace_merge.cpp /boost/math//boost_math_tr1 ] - [ run test_coordinate_matrix_inplace_merge.cpp /boost/math//boost_math + [ run test_coordinate_matrix_inplace_merge.cpp /boost/math//boost_math_tr1 ] - [ run test_banded_storage_layout.cpp /boost/math//boost_math + [ run test_banded_storage_layout.cpp /boost/math//boost_math_tr1 : : : : : ] - [ run test_fixed_containers.cpp /boost/math//boost_math + [ run test_fixed_containers.cpp /boost/math//boost_math_tr1 : : : ] - [ run test_matrix_vector.cpp /boost/math//boost_math + [ run test_matrix_vector.cpp /boost/math//boost_math_tr1 ] [ compile minimal_allocator_test.cpp ] ; From e6cd1080ff2b2c0cf9f57355597be7b5a28d2350 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 12 Apr 2025 23:35:15 -0500 Subject: [PATCH 12/19] Use macOS latest for GHA. --- .github/workflows/apple.yml | 28 ++++++++++++++-------------- .github/workflows/clangtidy.yml | 22 +++++++++++----------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index 9bd337780..eab7f178e 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -5,45 +5,45 @@ name: "Apple MacOS" -on: +on: push: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' pull_request: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' jobs: build: name: "MacOS 11 clang -std=c++${{matrix.cxxstd}}" - runs-on: macos-11 + runs-on: macos-latest strategy: fail-fast: true matrix: - cxxstd: [2a] + cxxstd: [20,23] steps: - uses: actions/checkout@v2 - + - name: Git Clone Boost.uBlas run: | cd ${GITHUB_WORKSPACE} cd .. - + git clone -b master --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root echo "BOOST_ROOT=${PWD}" >> ${GITHUB_ENV} echo $BOOST_ROOT - + git submodule update --init --depth=1 --jobs 8 tools/build git submodule update --init --depth=1 --jobs 8 libs/config git submodule update --init --depth=1 --jobs 8 tools/boostdep - + mkdir -p libs/numeric/ cp -rp ${GITHUB_WORKSPACE}/. libs/numeric/ublas python tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas - + - name: Bootstrap and Compile Boost.uBlas run: | cd $BOOST_ROOT @@ -51,22 +51,22 @@ jobs: ./b2 -j8 headers echo "using clang : : $(brew --prefix llvm)/bin/clang++ ;" >> ~/user-config.jam; - + - name: Test Benchmarks run: | cd $BOOST_ROOT cd libs/numeric/ublas $BOOST_ROOT/b2 -j8 benchmarks cxxstd=${{matrix.cxxstd}} - + - name: Test Tensor Examples run: | cd $BOOST_ROOT cd libs/numeric/ublas $BOOST_ROOT/b2 -j8 examples/tensor cxxstd=${{matrix.cxxstd}} - + - name: Test Tensor run: | cd $BOOST_ROOT cd libs/numeric/ublas $BOOST_ROOT/b2 -j8 test/tensor cxxstd=${{matrix.cxxstd}} - + diff --git a/.github/workflows/clangtidy.yml b/.github/workflows/clangtidy.yml index 11b1aea41..701d0252d 100644 --- a/.github/workflows/clangtidy.yml +++ b/.github/workflows/clangtidy.yml @@ -5,13 +5,13 @@ name: "Static Analysis" -on: +on: push: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' pull_request: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' jobs: @@ -20,33 +20,33 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - + - name: Install Clang 11 run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tidy-11 - + - name: "Install Boost from Source" run: | cd .. git clone --depth 1 https://github.com/boostorg/boost.git --recursive --shallow-submodules cd boost - ./bootstrap.sh + ./bootstrap.sh ./b2 headers sudo cp -r -L boost /usr/include rm -rf boost - + - name: "Run Clang-Tidy" run: clang-tidy-11 examples/tensor/*.cpp test/tensor/*.cpp -- -Iinclude -std=c++20 > reports.txt - name: "Print Clang-Tidy Report" run: cat reports.txt - + - uses: actions/setup-python@v2 - + - name: "Post review comments" if: github.event.pull_request.head.repo.full_name == github.repository run: | pip3 install 'unidiff~=0.6.0' --force-reinstall pip3 install 'PyGithub~=1.51' --force-reinstall pip3 install 'requests~=2.23' --force-reinstall - python ./.ci/post_review.py --repository ${{ github.repository }} --token ${{ github.token}} --pr ${{ github.event.pull_request.number }} --path reports.txt - + python ./.ci/post_review.py --repository ${{ github.repository }} --token ${{ github.token}} --pr ${{ github.event.pull_request.number }} --path reports.txt + From e9dcb3a85dd086a56e89b3b3aaaa11312c48557e Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 13 Apr 2025 08:12:38 -0500 Subject: [PATCH 13/19] Use Apple clang for macOS GHA testing. --- .github/workflows/apple.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index eab7f178e..824f1d729 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -16,7 +16,7 @@ on: - 'doc/**' jobs: build: - name: "MacOS 11 clang -std=c++${{matrix.cxxstd}}" + name: "MacOS clang -std=c++${{matrix.cxxstd}}" runs-on: macos-latest strategy: fail-fast: true @@ -49,7 +49,7 @@ jobs: cd $BOOST_ROOT ./bootstrap.sh ./b2 -j8 headers - echo "using clang : : $(brew --prefix llvm)/bin/clang++ ;" >> ~/user-config.jam; + echo "using clang ;" >> ~/user-config.jam; - name: Test Benchmarks From 8f65c717aecb16714afbf787a37e8505693da9b7 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Thu, 17 Apr 2025 09:20:09 -0500 Subject: [PATCH 14/19] Move include to target. --- build.jam | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.jam b/build.jam index b95e3905f..e2e3be8f7 100644 --- a/build.jam +++ b/build.jam @@ -21,12 +21,11 @@ constant boost_dependencies : /boost/typeof//boost_typeof ; project /boost/ublas - : common-requirements - include ; explicit - [ alias boost_ublas : : : : $(boost_dependencies) ] + [ alias boost_ublas : : : + : include $(boost_dependencies) ] [ alias all : boost_ublas benchmarks examples/tensor test ] ; From d0528efac7854b9b4c65291a601aecf35b2e24c1 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 8 Jun 2025 11:53:29 -0500 Subject: [PATCH 15/19] Update GHA CI to current realities. --- .github/workflows/apple.yml | 2 +- .github/workflows/clangtidy.yml | 10 +++-- .github/workflows/linux.yml | 76 ++++++++++++++++++++------------- .github/workflows/sanitizer.yml | 68 ++++++++++++++++++----------- .github/workflows/windows.yml | 44 +++++++++---------- 5 files changed, 120 insertions(+), 80 deletions(-) diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index 824f1d729..654a61632 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -19,7 +19,7 @@ jobs: name: "MacOS clang -std=c++${{matrix.cxxstd}}" runs-on: macos-latest strategy: - fail-fast: true + fail-fast: false matrix: cxxstd: [20,23] diff --git a/.github/workflows/clangtidy.yml b/.github/workflows/clangtidy.yml index 701d0252d..669edde29 100644 --- a/.github/workflows/clangtidy.yml +++ b/.github/workflows/clangtidy.yml @@ -17,13 +17,16 @@ on: jobs: check: name: Linux Clang-Tidy - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install Clang 11 run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tidy-11 + - name: Setup + run: sudo apt-get update && sudo apt-get -y install sudo python3 git g++ curl xz-utils + - name: "Install Boost from Source" run: | cd .. @@ -40,7 +43,8 @@ jobs: - name: "Print Clang-Tidy Report" run: cat reports.txt - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v5 + with: { 'python-version': '3' } - name: "Post review comments" if: github.event.pull_request.head.repo.full_name == github.repository diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 20b9c5311..ebdbb78f2 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -5,64 +5,82 @@ name: "Linux" -on: +on: push: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' pull_request: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' jobs: build: - name: Ubuntu 20.04 "cxx=${{matrix.config.cxx}}, std=c++${{matrix.config.cxxstd}}, variant=c++${{matrix.config.variant}}" - runs-on: ubuntu-20.04 + name: Ubuntu "cxx=${{matrix.config.cxx}}, std=c++${{matrix.config.cxxstd}}, variant=c++${{matrix.config.variant}}" + runs-on: ubuntu-latest + container: + image: ${{matrix.container}} + volumes: + - /node20217:/node20217:rw,rshared + - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} strategy: - fail-fast: true + fail-fast: false # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early matrix: - config: - - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: debug, opt: off} - - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off} - - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5} - - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5} - - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: debug, opt: off} - - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp} - + config: + - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } + - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } + - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: ubuntu:20.04 } + - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: ubuntu:20.04 } + - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } + - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp, container: ubuntu:20.04 } + steps: - - uses: actions/checkout@v2 - + - name: Setup container environment + if: matrix.container + run: | + apt-get update + apt-get -y install sudo python3 git g++ curl xz-utils + + - name: Install nodejs20glibc2.17 + if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} + run: | + curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz + tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 + ldd /__e/node20/bin/node + - name: Install g++-10 if: matrix.config.cxx == 'g++-10' - run: sudo apt update && sudo apt-get install -y g++-10 libomp-dev - + run: sudo apt update && sudo apt-get install -y g++-10 libomp-dev + - name: Install Clang 10 if: matrix.config.cxx == 'clang++-10' run: sudo apt-get update && sudo apt-get install -y clang-10 - + - name: Install Clang 11 if: matrix.config.cxx == 'clang++-11' run: sudo apt-get update && sudo apt-get install -y clang-11 - + + - uses: actions/checkout@v4 + - name: Git Clone Boost.uBlas run: | cd ${GITHUB_WORKSPACE} cd .. - + git clone -b master --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root echo "BOOST_ROOT=${PWD}" >> ${GITHUB_ENV} echo $BOOST_ROOT - + git submodule update --init --depth=1 --jobs 8 tools/build git submodule update --init --depth=1 --jobs 8 libs/config git submodule update --init --depth=1 --jobs 8 tools/boostdep - + mkdir -p libs/numeric/ cp -rp ${GITHUB_WORKSPACE}/. libs/numeric/ublas - python tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas + python3 tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas - name: Bootstrap Boost and Compile Boost run: | @@ -70,13 +88,13 @@ jobs: ./bootstrap.sh ./b2 -j8 headers echo "using ${{ matrix.config.name }} : : ${{ matrix.config.cxx }} ;" >> ~/user-config.jam; - + # - name: Test Benchmarks # run: | # cd $BOOST_ROOT # cd libs/numeric/ublas # $BOOST_ROOT/b2 -j 4 benchmarks toolset=clang cxxstd=${{matrix.config.cxxstd}} cxxflags="-O3" - + - name: Test Tensor Examples run: | cd $BOOST_ROOT/libs/numeric/ublas @@ -86,7 +104,7 @@ jobs: else $BOOST_ROOT/b2 -j8 examples/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}" fi - + - name: Test Tensor Unit-Tests run: | cd $BOOST_ROOT/libs/numeric/ublas @@ -95,5 +113,5 @@ jobs: $BOOST_ROOT/b2 -j8 test/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} else $BOOST_ROOT/b2 -j8 test/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}" - fi - + fi + diff --git a/.github/workflows/sanitizer.yml b/.github/workflows/sanitizer.yml index a2edff34b..38973d33b 100644 --- a/.github/workflows/sanitizer.yml +++ b/.github/workflows/sanitizer.yml @@ -5,57 +5,75 @@ name: "Clang Sanitizer" -on: +on: push: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' pull_request: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' jobs: build: name: "${{matrix.config.name}} with ${{matrix.config.description}} sanitizer with std=${{matrix.config.cxx}} and variant=${{matrix.config.variant}}" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest + container: + image: ${{matrix.container}} + volumes: + - /node20217:/node20217:rw,rshared + - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} strategy: fail-fast: false # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early matrix: config: - - { name: clang, description: address and leak, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address } - - { name: clang, description: undefined behavior, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=undefined, ldflags: -fsanitize=undefined } - - { name: clang, description: thread, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=thread, ldflags: -fsanitize=thread } - - { name: gcc, description: address and leak, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address -fopenmp} -# - { name: gcc, description: undefined behavior, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=undefined, ldflags: -fsanitize=undefined -fopenmp} -# - { name: gcc, description: thread, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=thread, ldflags: -fsanitize=thread -fopenmp} - + - { name: clang, description: address and leak, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address , container: ubuntu:20.04 } + - { name: clang, description: undefined behavior, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=undefined, ldflags: -fsanitize=undefined, container: ubuntu:20.04 } + - { name: clang, description: thread, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=thread, ldflags: -fsanitize=thread , container: ubuntu:20.04 } + - { name: gcc, description: address and leak, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address -fopenmp, container: ubuntu:20.04 } +# - { name: gcc, description: undefined behavior, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=undefined, ldflags: -fsanitize=undefined -fopenmp, container: ubuntu:20.04 } +# - { name: gcc, description: thread, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=thread, ldflags: -fsanitize=thread -fopenmp, container: ubuntu:20.04 } + steps: - - uses: actions/checkout@v2 - + - name: Setup container environment + if: matrix.container + run: | + apt-get update + apt-get -y install sudo python3 git g++ curl xz-utils + + - name: Install nodejs20glibc2.17 + if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} + run: | + curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz + tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 + ldd /__e/node20/bin/node + - name: Install Clang 11 run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tools-11 - name: Install GCC 10 run: sudo apt-get update && sudo apt-get install -y g++-10 libomp-dev - + + - uses: actions/checkout@v4 + - name: Git Clone Boost.uBlas run: | cd ${GITHUB_WORKSPACE} cd .. - + git clone -b master --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root echo "BOOST_ROOT=${PWD}" >> ${GITHUB_ENV} echo $BOOST_ROOT - + git submodule update --init --depth=1 --jobs 8 tools/build git submodule update --init --depth=1 --jobs 8 libs/config git submodule update --init --depth=1 --jobs 8 tools/boostdep - + mkdir -p libs/numeric/ cp -rp ${GITHUB_WORKSPACE}/. libs/numeric/ublas - python tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas + python3 tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas - name: Bootstrap Boost and Compile Boost run: | @@ -65,19 +83,19 @@ jobs: echo "using ${{ matrix.config.name }} : : ${{ matrix.config.cxx }} ;" >> ~/user-config.jam; export ASAN_OPTIONS=symbolize=1 export ASAN_OPTIONS=detect_leaks=1 - + - name: Run Tensor Examples with "${{matrix.config.description}}" sanitizer - run: | - cd $BOOST_ROOT/libs/numeric/ublas + run: | + cd $BOOST_ROOT/libs/numeric/ublas ASAN_OPTIONS=detect_leaks=1 ASAN_OPTIONS=symbolize=1 $BOOST_ROOT/b2 -j8 examples/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}" - - - name: Run Tensor Tests with "${{matrix.config.description}}" sanitizer + + - name: Run Tensor Tests with "${{matrix.config.description}}" sanitizer run: | cd $BOOST_ROOT/libs/numeric/ublas ASAN_OPTIONS=detect_leaks=1 ASAN_OPTIONS=symbolize=1 $BOOST_ROOT/b2 -j8 test/tensor toolset=${{matrix.config.name}} cxxstd=${{matrix.config.cxxstd}} variant=${{matrix.config.variant}} optimization=${{matrix.config.opt}} cxxflags="${{matrix.config.cxxflags}}" linkflags="${{matrix.config.ldflags}}" - - + + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3f761707e..eb0ca9998 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -4,13 +4,13 @@ # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) name: "Windows" -on: +on: push: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' pull_request: - paths-ignore: + paths-ignore: - '**.md' - 'doc/**' jobs: @@ -20,21 +20,21 @@ jobs: strategy: fail-fast: true matrix: - config: -# - {os: windows-2016, toolset: msvc, version: 14.16, cxxstd: 11} + config: +# - {os: windows-2016, toolset: msvc, version: 14.16, cxxstd: 11} # - {os: windows-2019, toolset: msvc, version: 14.28, cxxstd: 11} # - {os: windows-2019, toolset: msvc, version: 14.28, cxxstd: 17} - - {os: windows-2019, toolset: msvc, version: 14.29, cxxstd: latest} -# - {os: windows-2022, toolset: msvc, version: 14.30, cxxstd: latest} - +# - {os: windows-2019, toolset: msvc, version: 14.29, cxxstd: latest} + - {os: windows-2022, toolset: msvc, version: 14.30, cxxstd: latest} + steps: - - uses: actions/checkout@v2 - + - uses: actions/checkout@v4 + - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1 with: toolset: ${{matrix.config.version}} - + - name: Setup BOOST_ROOT shell: powershell run: | @@ -45,15 +45,15 @@ jobs: git submodule update --init --depth=1 tools/build git submodule update --init --depth=1 libs/config git submodule update --init --depth=1 tools/boostdep - + xcopy /s /e /q $env:GITHUB_WORKSPACE libs\numeric\ublas - + python tools/boostdep/depinst/depinst.py -g " --depth=1" -I benchmarks numeric/ublas - - + + echo "BOOST_ROOT=$pwd" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "TOOLSET=${{matrix.config.toolset}}-${{matrix.config.version}}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - + - name: Prepare BOOST_ROOT shell: powershell run: | @@ -63,33 +63,33 @@ jobs: import os regex toolset ; local toolset = [ regex.split [ os.environ TOOLSET ] "-" ] ; using $(toolset[1]) : $(toolset[2-]:J="-") : ; - '@ | sc "$env:USERPROFILE/user-config.jam" - + '@ | sc "$env:USERPROFILE/user-config.jam" + - name: Bootstrap BOOST_ROOT shell: cmd run: | cd %BOOST_ROOT% cmd /c bootstrap b2 -j8 headers - + # - name: Test Benchmarks # shell: cmd # run: | # cd %BOOST_ROOT% # cd libs\numeric\ublas # %BOOST_ROOT%\b2 -j 4 benchmarks toolset=%TOOLSET% cxxstd=${{matrix.config.cxxstd}} address-model=64 - + - name: Test Tensor Examples shell: cmd run: | cd %BOOST_ROOT% cd libs\numeric\ublas %BOOST_ROOT%\b2 -j8 examples/tensor toolset=%TOOLSET% cxxstd=${{matrix.config.cxxstd}} address-model=64 - + - name: Test Tensor shell: cmd run: | cd %BOOST_ROOT% cd libs\numeric\ublas %BOOST_ROOT%\b2 -j8 test/tensor toolset=%TOOLSET% cxxstd=${{matrix.config.cxxstd}} address-model=64 - + From a73ba83e532c84a948b4a54f21501c9c9bfc045a Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 8 Jun 2025 12:05:17 -0500 Subject: [PATCH 16/19] Tweak windows CI. --- .github/workflows/windows.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index eb0ca9998..72035b4f6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -25,7 +25,8 @@ jobs: # - {os: windows-2019, toolset: msvc, version: 14.28, cxxstd: 11} # - {os: windows-2019, toolset: msvc, version: 14.28, cxxstd: 17} # - {os: windows-2019, toolset: msvc, version: 14.29, cxxstd: latest} - - {os: windows-2022, toolset: msvc, version: 14.30, cxxstd: latest} +# - {os: windows-2022, toolset: msvc, version: 14.30, cxxstd: latest} + - {os: windows-2022, toolset: msvc, cxxstd: latest, toolsetver: 14.3 } steps: - uses: actions/checkout@v4 @@ -52,7 +53,7 @@ jobs: echo "BOOST_ROOT=$pwd" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "TOOLSET=${{matrix.config.toolset}}-${{matrix.config.version}}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "TOOLSET=${{matrix.config.toolset}}-${{matrix.config.toolsetver}}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Prepare BOOST_ROOT shell: powershell From 1d553401222166a62aa9e680bfee4bd7365084d8 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 8 Jun 2025 12:16:33 -0500 Subject: [PATCH 17/19] Fix various GHA CI error. --- .github/workflows/apple.yml | 2 +- .github/workflows/clangtidy.yml | 4 ++-- .github/workflows/linux.yml | 12 ++++++------ .github/workflows/sanitizer.yml | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/apple.yml b/.github/workflows/apple.yml index 654a61632..0b8950a5f 100644 --- a/.github/workflows/apple.yml +++ b/.github/workflows/apple.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - cxxstd: [20,23] + cxxstd: [20,2b] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/clangtidy.yml b/.github/workflows/clangtidy.yml index 669edde29..fcc6d83a0 100644 --- a/.github/workflows/clangtidy.yml +++ b/.github/workflows/clangtidy.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v4 - name: Install Clang 11 - run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tidy-11 + run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tidy - name: Setup run: sudo apt-get update && sudo apt-get -y install sudo python3 git g++ curl xz-utils @@ -38,7 +38,7 @@ jobs: rm -rf boost - name: "Run Clang-Tidy" - run: clang-tidy-11 examples/tensor/*.cpp test/tensor/*.cpp -- -Iinclude -std=c++20 > reports.txt + run: clang-tidy examples/tensor/*.cpp test/tensor/*.cpp -- -Iinclude -std=c++20 > reports.txt - name: "Print Clang-Tidy Report" run: cat reports.txt diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ebdbb78f2..04049cb9d 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -29,12 +29,12 @@ jobs: # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early matrix: config: - - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } - - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } - - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: ubuntu:20.04 } - - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: ubuntu:20.04 } - - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: debug, opt: off, container: ubuntu:20.04 } - - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp, container: ubuntu:20.04 } + - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: debug, opt: off, container: 'ubuntu:20.04' } + - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off, container: 'ubuntu:20.04' } + - { name: clang, cc: clang-10, cxx: clang++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: 'ubuntu:20.04' } + - { name: clang, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp=libomp5, container: 'ubuntu:20.04' } + - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: debug, opt: off, container: 'ubuntu:20.04' } + - { name: gcc, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp, ldflags: -lgomp, container: 'ubuntu:20.04' } steps: - name: Setup container environment diff --git a/.github/workflows/sanitizer.yml b/.github/workflows/sanitizer.yml index 38973d33b..1245af522 100644 --- a/.github/workflows/sanitizer.yml +++ b/.github/workflows/sanitizer.yml @@ -28,12 +28,12 @@ jobs: # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early matrix: config: - - { name: clang, description: address and leak, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address , container: ubuntu:20.04 } - - { name: clang, description: undefined behavior, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=undefined, ldflags: -fsanitize=undefined, container: ubuntu:20.04 } - - { name: clang, description: thread, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=thread, ldflags: -fsanitize=thread , container: ubuntu:20.04 } - - { name: gcc, description: address and leak, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address -fopenmp, container: ubuntu:20.04 } -# - { name: gcc, description: undefined behavior, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=undefined, ldflags: -fsanitize=undefined -fopenmp, container: ubuntu:20.04 } -# - { name: gcc, description: thread, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=thread, ldflags: -fsanitize=thread -fopenmp, container: ubuntu:20.04 } + - { name: clang, description: address and leak, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address , container: 'ubuntu:20.04' } + - { name: clang, description: undefined behavior, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=undefined, ldflags: -fsanitize=undefined, container: 'ubuntu:20.04' } + - { name: clang, description: thread, cc: clang-11, cxx: clang++-11, cxxstd: 20, variant: debug, opt: off , cxxflags: -fsanitize=thread, ldflags: -fsanitize=thread , container: 'ubuntu:20.04' } + - { name: gcc, description: address and leak, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=address -fno-omit-frame-pointer, ldflags: -fsanitize=address -fopenmp, container: 'ubuntu:20.04' } +# - { name: gcc, description: undefined behavior, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=undefined, ldflags: -fsanitize=undefined -fopenmp, container: 'ubuntu:20.04' } +# - { name: gcc, description: thread, cc: gcc-10, cxx: g++-10, cxxstd: 20, variant: release, opt: speed, cxxflags: -fopenmp -fsanitize=thread, ldflags: -fsanitize=thread -fopenmp, container: 'ubuntu:20.04' } steps: - name: Setup container environment From 609d5b7f7a1d0493476bb081b865110a90213b43 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 8 Jun 2025 12:27:09 -0500 Subject: [PATCH 18/19] Fix CI refs for containers. --- .github/workflows/linux.yml | 8 ++++---- .github/workflows/sanitizer.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 04049cb9d..44555cf55 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -20,10 +20,10 @@ jobs: name: Ubuntu "cxx=${{matrix.config.cxx}}, std=c++${{matrix.config.cxxstd}}, variant=c++${{matrix.config.variant}}" runs-on: ubuntu-latest container: - image: ${{matrix.container}} + image: ${{matrix.config.container}} volumes: - /node20217:/node20217:rw,rshared - - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} + - ${{ startsWith(matrix.config.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} strategy: fail-fast: false # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early @@ -38,13 +38,13 @@ jobs: steps: - name: Setup container environment - if: matrix.container + if: matrix.config.container run: | apt-get update apt-get -y install sudo python3 git g++ curl xz-utils - name: Install nodejs20glibc2.17 - if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} + if: ${{ startsWith( matrix.config.container, 'ubuntu:1' ) }} run: | curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 diff --git a/.github/workflows/sanitizer.yml b/.github/workflows/sanitizer.yml index 1245af522..02177d1d0 100644 --- a/.github/workflows/sanitizer.yml +++ b/.github/workflows/sanitizer.yml @@ -19,10 +19,10 @@ jobs: name: "${{matrix.config.name}} with ${{matrix.config.description}} sanitizer with std=${{matrix.config.cxx}} and variant=${{matrix.config.variant}}" runs-on: ubuntu-latest container: - image: ${{matrix.container}} + image: ${{matrix.config.container}} volumes: - /node20217:/node20217:rw,rshared - - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} + - ${{ startsWith(matrix.config.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} strategy: fail-fast: false # If any compiler fails to compile, continue CI for next compiler in matrix instead of failing early @@ -37,13 +37,13 @@ jobs: steps: - name: Setup container environment - if: matrix.container + if: matrix.config.container run: | apt-get update apt-get -y install sudo python3 git g++ curl xz-utils - name: Install nodejs20glibc2.17 - if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} + if: ${{ startsWith( matrix.config.container, 'ubuntu:1' ) }} run: | curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 From 983285912594b8ef856ac19b5c70574c37f4201a Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 8 Jun 2025 12:29:17 -0500 Subject: [PATCH 19/19] No clang-11 on latest Ubuntu. --- .github/workflows/clangtidy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clangtidy.yml b/.github/workflows/clangtidy.yml index fcc6d83a0..1deae8115 100644 --- a/.github/workflows/clangtidy.yml +++ b/.github/workflows/clangtidy.yml @@ -21,8 +21,8 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Clang 11 - run: sudo apt-get update && sudo apt-get install -y clang-11 clang-tidy + - name: Install Clang + run: sudo apt-get update && sudo apt-get install -y clang clang-tidy - name: Setup run: sudo apt-get update && sudo apt-get -y install sudo python3 git g++ curl xz-utils