build_ascent.sh fails with GCC 13 while building camp
FreddieWitherden opened this issue · 10 comments
With the current develop branch of Ascent the build_ascent.sh
script fails with GCC 13. The offending package is:
/home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/include/camp/resource/host.hpp: In instantiation of ‘T* camp::resources::v1::Host::allocate(size_t, camp::resources::v1::MemoryAccess) [with T = char; size_t = long unsigned int]’:
/home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/include/camp/resource/host.hpp:61:33: required from here
/home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/include/camp/resource/host.hpp:57:27: error: ‘malloc’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation
57 | return (T *)malloc(sizeof(T) * n);
| ~~~~~~^~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/cstdlib:79,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/ext/string_conversions.h:43,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/basic_string.h:4109,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/string:54,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/locale_classes.h:40,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/ios_base.h:41,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/ios:44,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/istream:40,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/sstream:40,
from /home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/include/camp/tuple.hpp:20,
from /home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/include/camp/camp.hpp:24,
from /home/freddie/Programming/ascent/scripts/build_ascent/camp-2022.10.1/test/resource.cpp:18:
/usr/include/stdlib.h:672:14: note: ‘void* malloc(size_t)’ declared here, later in the translation unit
672 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
which indicates aproblem with camp
. If possible the version of camp
should be bumped; otherwise perhaps we can simply disable building of tests for camp?
Thanks for the report, I checked and the newest camp release is using std::malloc
and #include<cstdlib>
and should avoid this problem.
Our PR #1245 (and associated branch task/2024_01_blt_update) have updates to use newer camp, umpire,etc.
Any chance you can try it out?
Trying the new branch it gets a bit further. Now breaks in mfem:
In file included from /home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/kdtree.hpp:15,
from /home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/kdtree.cpp:12:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:317:12: error: ‘uint8_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’?
317 | std::uint8_t dim;
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:320:25: error: expected ‘)’ before ‘dd’
320 | CompN(std::uint8_t dd):dim(dd) {}
| ~ ^~~
| )
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:356:27: error: ‘std::uint8_t’ has not been declared
356 | std::uint8_t cdim)
| ^~~~~~~
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘bool mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::CompN::operator()(const mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::PointND&, const mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::PointND&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:325:23: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
325 | return p1.xx[dim]<p2.xx[dim];
| ^~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘bool mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::CompN::operator()(const mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::NodeND&, const mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::NodeND&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:331:27: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
331 | return n1.pt.xx[dim]<n2.pt.xx[dim];
| ^~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘void mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::SortInPlace(typename std::vector<NodeND>::iterator, typename std::vector<NodeND>::iterator, size_t)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:368:12: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
368 | std::uint8_t cdim=(std::uint8_t)(level%ndim);
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:372:54: error: ‘cdim’ was not declared in this scope; did you mean ‘ndim’?
372 | std::nth_element(itb, itb+siz/2, ite, CompN(cdim));
| ^~~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘void mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::PSearch(typename std::vector<NodeND>::iterator, typename std::vector<NodeND>::iterator, size_t, PointS&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:394:12: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
394 | std::uint8_t dim=(std::uint8_t) (level%ndim);
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:401:24: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
401 | if ((bc.sp.xx[dim]-bc.dist)>mtb->pt.xx[dim]) // look on the right only
| ^~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘void mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::NNS(PointND&, const int&, typename std::vector<NodeND>::iterator, typename std::vector<NodeND>::iterator, size_t, std::vector<std::tuple<Tfloat, Tindex> >&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:473:12: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
473 | std::uint8_t dim=(std::uint8_t) (level%ndim);
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:489:21: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
489 | if ((pt.xx[dim]-R)>mtb->pt.xx[dim]) // look to the right only
| ^~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘void mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::FindNeighborPoints(PointND&, Tfloat, typename std::vector<NodeND>::iterator, typename std::vector<NodeND>::iterator, size_t, std::vector<Tindex>&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:525:12: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
525 | std::uint8_t dim=(std::uint8_t) (level%ndim);
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:532:21: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
532 | if ((pt.xx[dim]-R)>mtb->pt.xx[dim]) // look to the right only
| ^~~
| ndim
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp: In member function ‘void mfem::KDTree<Tindex, Tfloat, ndim, Tnorm>::FindNeighborPoints(PointND&, Tfloat, typename std::vector<NodeND>::iterator, typename std::vector<NodeND>::iterator, size_t, std::vector<Tindex>&, std::vector<Tfloat>&)’:
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:574:12: error: ‘uint8_t’ is not a member of ‘std’; did you mean ‘wint_t’?
574 | std::uint8_t dim=(std::uint8_t) (level%ndim);
| ^~~~~~~
| wint_t
/home/freddie/Programming/ascent/scripts/build_ascent/mfem-4.6/fem/../general/kdtree.hpp:581:21: error: ‘dim’ was not declared in this scope; did you mean ‘ndim’?
581 | if ((pt.xx[dim]-R)>mtb->pt.xx[dim]) // look to the right only
| ^~~
| ndim
A one line fix to include cstdint in the header resolves it. It then breaks at:
**** Configuring Ascent
loading initial cache file /home/freddie/Programming/ascent/scripts/build_ascent/ascent-config.cmake
CMake Warning (dev) at CMakeLists.txt:14 (project):
cmake_minimum_required() should be called prior to this top-level project()
call. Please see the cmake-commands(7) manual for usage documentation of
both commands.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at CMakeLists.txt:86 (cmake_policy):
The OLD behavior for policy CMP0104 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
-- BLT Version: 0.5.2
-- CMake Version: 3.28.3
-- CMake Build Type: Release
-- CMake Executable: /usr/bin/cmake
CMake Deprecation Warning at blt/SetupBLT.cmake:87 (cmake_policy):
The OLD behavior for policy CMP0076 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
cmake/SetupBLT.cmake:40 (include)
CMakeLists.txt:119 (include)
-- Setting CMAKE_CXX_EXTENSIONS to OFF
-- Standard C++14 selected
-- Found Git: /usr/bin/git (found version "2.44.0")
-- Git Support is ON
-- Git Executable: /usr/bin/git
-- Git Version: 2.44.0
-- MPI Support is ON
-- FindMPI Enabled (ENABLE_FIND_MPI == ON)
-- Found MPI_C: /usr/lib64/libmpi.so (found version "3.1")
-- Found MPI_CXX: /usr/lib64/libmpi_cxx.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- BLT MPI Compile Flags:
-- BLT MPI Include Paths: /usr/include
-- BLT MPI Libraries: /usr/lib64/libmpi.so;/usr/lib64/libmpi_cxx.so
-- BLT MPI Link Flags: SHELL:-Wl,-rpath -Wl,/usr/lib64 -Wl,-rpath -Wl,/usr/lib64 -Wl,--enable-new-dtags
-- MPI Executable: /usr/bin/mpiexec
-- MPI Num Proc Flag: -n
-- MPI Command Append:
-- OpenMP Support is OFF
-- CUDA Support is OFF
-- HIP Support is OFF
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.8") found components: doxygen dot
-- Sphinx support is ON
-- Found Sphinx: /usr/bin/sphinx-build
-- Valgrind support is ON
-- Found Valgrind: /usr/bin/valgrind
-- AStyle support is ON
-- Found AStyle: /usr/bin/astyle
-- ClangFormat support is ON
-- Found ClangFormat: /usr/lib/llvm/18/bin/clang-format
-- Uncrustify support is ON
-- Failed to locate Uncrustify executable (missing: UNCRUSTIFY_EXECUTABLE)
-- Yapf support is ON
-- Failed to locate Yapf executable (missing: YAPF_EXECUTABLE)
-- CMakeFormat support is ON
-- Failed to locate CMakeFormat executable (missing: CMAKEFORMAT_EXECUTABLE)
-- Cppcheck support is ON
-- Found Cppcheck: /usr/bin/cppcheck
-- ClangQuery support is ON
-- Found ClangQuery: /usr/lib/llvm/18/bin/clang-query
-- ClangTidy support is ON
-- Found ClangTidy: /usr/lib/llvm/18/bin/clang-tidy
-- C Compiler family is GNU
-- Adding optional BLT definitions and compiler flags
-- Fortran support disabled.
-- CMAKE_C_FLAGS flags are:
-- CMAKE_CXX_FLAGS flags are:
-- CMAKE_EXE_LINKER_FLAGS flags are:
-- Google Test Support is ON
-- Google Mock Support is OFF
CMake Deprecation Warning at blt/thirdparty_builtin/googletest-master-2020-01-07/googletest/CMakeLists.txt:56 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
CMake Warning (dev) at blt/thirdparty_builtin/googletest-master-2020-01-07/googletest/cmake/internal_utils.cmake:243 (find_package):
Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
are removed. Run "cmake --help-policy CMP0148" for policy details. Use
the cmake_policy command to set the policy and suppress this warning.
Call Stack (most recent call first):
blt/thirdparty_builtin/googletest-master-2020-01-07/googletest/CMakeLists.txt:91 (include)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Found PythonInterp: /usr/bin/python (found version "3.11.8")
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Using MPI CMake imported target: MPI::MPI_CXX
-- CMake build tool name: /usr/bin/gmake
-- Building shared libraries (BUILD_SHARED_LIBS == ON)
-- Building without coverage flags (ENABLE_COVERAGE == OFF)
-- git executable: /usr/bin/git
-- git SHA1: 08b8c0cc2825a0f9be70df41cfcd4a1a70eb2497
-- git SHA1-abbrev: 08b8c
-- git tag: unknown
-- Looking for Conduit using CONDUIT_DIR = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1
-- Conduit was built with Zlib Support
-- Looking for Zlib at: /home/freddie/Programming/ascent/scripts/build_ascent/install/zlib-1.3/
-- Found ZLIB: /home/freddie/Programming/ascent/scripts/build_ascent/install/zlib-1.3/lib/libz.so (found version "1.3")
-- Conduit was built with HDF5 Support
-- Looking for HDF5 at: /home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2
-- Found HDF5: hdf5-shared (found version "1.14.1")
-- HDF5_DIR_REAL=/home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2
-- Checking that found HDF5_INCLUDE_DIRS are in HDF5_DIR
-- HDF5_INCLUDE_DIRS=/home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2/include
-- /home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2/include includes HDF5_DIR (/home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2)
-- /home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2/include includes HDF5_REAL_DIR ()
-- HDF5 is parallel: OFF
-- Found Conduit: /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1 (found version 0.9.0)
-- CONDUIT_VERSION = 0.9.0
-- CONDUIT_INSTALL_PREFIX = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1
-- CONDUIT_IMPORT_ROOT = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1
-- CONDUIT_USE_CXX14 = TRUE
-- CONDUIT_USE_FMT = TRUE
-- CONDUIT_INCLUDE_DIRS = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1/include/conduit
-- CONDUIT_FORTRAN_ENABLED = FALSE
-- CONDUIT_PYTHON_ENABLED =
-- CONDUIT_PYTHON_EXECUTABLE =
-- CONDUIT_PYTHON_MODULE_DIR = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1/python-modules/
-- Conduit Relay features:
-- CONDUIT_RELAY_WEBSERVER_ENABLED = TRUE
-- CONDUIT_RELAY_HDF5_ENABLED = TRUE
-- CONDUIT_HDF5_DIR = /home/freddie/Programming/ascent/scripts/build_ascent/install/hdf5-1.14.1-2
-- CONDUIT_RELAY_ADIOS_ENABLED = FALSE
-- CONDUIT_ADIOS_DIR =
-- CONDUIT_RELAY_SILO_ENABLED = FALSE
-- CONDUIT_SILO_DIR =
-- CONDUIT_RELAY_MPI_ENABLED = TRUE
-- Conduit imported targets: conduit::conduit conduit::conduit_mpi
-- FOUND conduit HDF5 support
-- CONDUIT_RELAY_WEBSERVER_ENABLED = TRUE
-- FOUND Conduit at /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1
-- CONDUIT_INCLUDE_DIRS = /home/freddie/Programming/ascent/scripts/build_ascent/install/conduit-v0.9.1/include/conduit
-- Looking for Camp in: /home/freddie/Programming/ascent/scripts/build_ascent/install/camp-v2024.02.0
-- OpenMP Support is
-- CUDA Support is
-- HIP Support is
-- Found Camp in: /home/freddie/Programming/ascent/scripts/build_ascent/install/camp-v2024.02.0
-- Looking for Umpire in: /home/freddie/Programming/ascent/scripts/build_ascent/install/umpire-2024.02.0
CMake Error at cmake/thirdparty/SetupUmpire.cmake:21 (find_package):
Could not find a package configuration file provided by "umpire" with any
of the following names:
umpireConfig.cmake
umpire-config.cmake
Add the installation prefix of "umpire" to CMAKE_PREFIX_PATH or set
"umpire_DIR" to a directory containing one of the above files. If "umpire"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
cmake/Setup3rdParty.cmake:61 (include)
CMakeLists.txt:139 (include)
Going through:
https://github.com/Alpine-DAV/ascent/blob/develop/src/cmake/thirdparty/SetupUmpire.cmake#L17
it should add ${UMPIRE_DIR}/lib64/cmake/umpire
to the search path. Now if we ls ~/Programming/ascent/scripts/build_ascent/install/umpire-2024.02.0/lib64/cmake/umpire
we see:
BLTInstallableMacros.cmake thirdparty umpire-targets.cmake
BLTSetupTargets.cmake umpire-config.cmake umpire-targets-release.cmake
BLTThirdPartyConfigFlags.cmake umpire-config-version.cmake
but I do not know why I can not find the file.
Yes, that is strange the lib vs lib64 logic is there.
Thanks for trying the new branch -- a patch for old umpire should be simple (we need it to include <stdlib.h> in host.h) -- would you like me to test that out and get a branch?
@FreddieWitherden for the umpire issue.
build_ascent.sh (if you ask it to fully build ascent) will try to build ascent-develop (not the branched you have checked out), which doens't have the lib
vs lib64
change merged.
However, you can use the generated ascent-config.cmake
to configure your checkout and build.
cmake -C scripts/build_ascent/ascent-config.cmake -B build -S src/ -DCMAKE_INSTALL_PREFIX=install
That did it! I was wondering why the CMake error appeared to be at odds with the code itself. Do you think it is worth changing the default to use the checked-out version of Ascent if it is available rather than compiling a fresh checkout from scratch?
@FreddieWitherden thanks for confirming.
I do think it we should improve build_ascent build with an option for the the checked out version. (I'll admit this has confused me more than once :-) )
@FreddieWitherden #1339 updates build_ascent.sh
to use the current checkout if it exists instead of cloning ascent developer