How to build ceres master with user's eigen?
envgap__ceres-solver__ceres-solver-539
01 / FAILURE SIGNATURE
Captured in a clean container
Could not find a configuration file for package "Eigen3" that is compatible
02 / ENVIRONMENT RECIPE
- Base commit
a60136b7aa2c1ab97558a74b271eee16ca1365c4- Manifest
CMakeLists.txt- Reproduce
cmake --build build --target helloworld -j2 && ./build/bin/helloworld- Run under trace
./build/bin/helloworld
Reference environment fix used for admission
--- /dev/null +++ b/setup.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail +git clone --depth 1 --branch 3.3.7 https://gitlab.com/libeigen/eigen.git /tmp/envgap-eigen-fixed +test "$(git -C /tmp/envgap-eigen-fixed rev-parse HEAD)" = 21ae2afd4edaa1b69782c67a54182d34efe43f9c +cmake -S /tmp/envgap-eigen-fixed -B /tmp/envgap-eigen-fixed/build -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTING=OFF +cmake --install /tmp/envgap-eigen-fixed/build
03 / ORIGINAL ISSUE TEXT
ceres-solver/ceres-solver #539 · read the original issue
Hi, My OS is ubuntu16.04, with `sudo apt install libeigen3-dev` installed is 3.2.92, which can be see by ` pkg-config --modversion eigen3`, but the ceres master need eigen >=3.3. I download eigen 3.3.7 into`/home/jxl/third_softwares/eigen_3_3_7`. With cmake gui, set `Eigen3_DIR = /home/jxl/third_softwares/eigen_3_3_7/`, configure failed. Set by command line also failed!
>
jxl@dell:~/third_softwares/ceres-solver/build_dir$ cmake .. -DLAPACK=ON -DSUITESPARSE=ON -DCXSPARSE=ON -DEIGENSPARSE=ON -DGFLAGS=ON -DMINIGLOG=OFF -DSCHUR_SPECIALIZATIONS=ON -DCERES_THREADING_MODEL=CXX11_THREADS -DCXX11=ON -DBUILD_SHARED_LIBS=OFF -DEXPORT_BUILD_DIR=OFF -DBUILD_DOCUMENTATION=OFF -DLIB_SUFFIX=64 -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=OFF -DEigen3_DIR=/home/jxl/third_softwares/eigen_3_3_7/
The output is:
>
-- Detected Ceres version: 2.0.0 from /home/jxl/third_softwares/ceres-solver/include/ceres/version.h
-- Detected available Ceres threading models: [CXX11_THREADS, OPENMP, NO_THREADS]
-- Building with C++11
CMake Error at CMakeLists.txt:243 (find_package):
Could not find a configuration file for package "Eigen3" that is compatible
with requested version "3.3".
The following configuration files were considered but not accepted:
/usr/lib/cmake/eigen3/Eigen3Config.cmake, version: unknown
-- Configuring incomplete, errors occurred!
See also "/home/jxl/third_softwares/ceres-solver/build_dir/CMakeFiles/CMakeOutput.log".
So how to build ceres master with user's eigen? or how to upgrade `/usr/include/eigen3` into 3.3?
Thanks very much, appreciate for your help a lot !
04 / LABELS
Labels checked by running the task · assistant reviewed
underspecificationLabel rules and the text that matched
[
{
"category": "underspecification",
"rule": "signature.missing_system_requirement",
"source": "failure_signature",
"excerpt": "Could not find a configuration file for package \"Eigen3\" that is compatible"
},
{
"category": "underspecification",
"rule": "diff.adds_external_environment_requirement",
"source": "manifest_diff:setup.sh",
"excerpt": "cmake --install /tmp/envgap-eigen-fixed/build"
}
]Historical install-only results are not EnvGap validation.
The original dependency context uses upstream Eigen3.3-beta1, which declares version3.2.92 matching the reported Ubuntu package. Both dependency releases predate the issue; exact Git SHAs are asserted.
The upstream3.2.92 installation supplies Eigen3Config.cmake with unknown version, reproducing the reported rejection of that config by Ceres find_package(Eigen3 3.3).
Optional SuiteSparse/CXSparse/LAPACK and tests are disabled to isolate Eigen discovery; the unchanged upstream helloworld solver executes with Eigen.
Auxiliary Eigen Git tag resolutions are retained in build logs; registry date enforcement does not cover Git downloads.
Preparation uses current registries. Historical package availability is not enforced here; execution metadata records this limitation separately from the oracle's date-bounding policy.