`other.test_cmake_cxx_import_std` fails on CMake 3.30–4.0.2 due to missing `CMAKE_EXPERIMENTAL_CXX_IMPORT_STD` UUIDs
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 85/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- cmake, cpp
- Lĩnh vực
- build-system, testing
Hướng nghiên cứu
Đọc test/cmake/cxx_import_std/CMakeLists.txt và so sánh các nhánh phiên bản CMake trong tệp với các khoảng phiên bản trong issue. Cập nhật lựa chọn UUID thử nghiệm cho CMake 3.30–3.31 và 4.0.0–4.0.2, sau đó chạy other.test_cmake_cxx_import_std trong test/test_other.py với các phiên bản CMake đó. Hoàn tất khi bài kiểm thử cấu hình và biên dịch thành công trên các phiên bản bị ảnh hưởng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I found this when testing on a VM with a newer version of CMake than what we are currently testing:
Description
cmake/Modules/Platform/Emscripten.cmake supports CMAKE_CXX_MODULE_STD on CMake >= 3.30 (added in #27065), and other.test_cmake_cxx_import_std in test/test_other.py runs whenever CMake >= (3, 30) is detected.
However, test/cmake/cxx_import_std/CMakeLists.txt only sets CMAKE_EXPERIMENTAL_CXX_IMPORT_STD for CMake >= 4.3.0 and 4.0.3..4.2.x:
cmake_minimum_required(VERSION 3.30)
set(CMAKE_CXX_MODULE_STD ON)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.3.0)
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 451f2fe2-a8a2-47c3-bc32-94786d8fc91b)
else()
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD d0edc3af-4c50-42ea-a356-e2862fe7a444)
endif()
Because CircleCI's Linux Docker image (emscripten/emscripten-ci:jammy.v2) has CMake 3.22.1 and test_cmake_cxx_import_std is not marked @crossplatform, the test is currently skipped on CircleCI. On environments with CMake 3.30–3.31 (such as Ubuntu 24.04 / GitHub Actions ubuntu-latest with CMake 3.31.6) or CMake 4.0.0–4.0.2, CMake rejects the UUID and disables import std:
CMake Warning (dev) at /usr/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake:248 (message):
CMAKE_EXPERIMENTAL_CXX_IMPORT_STD is set to incorrect value
"d0edc3af-4c50-42ea-a356-e2862fe7a444". See `Help/dev/experimental.rst`
for CMake's C++ `import std` support.
...
CMake Error in CMakeLists.txt:
The "CXX_MODULE_STD" property on the target "cxx_import_std23" requires
that the "__cmake_cxx23" target exist, but it was not provided by the
toolchain.
...
test/cmake/cxx_import_std/main.cpp:1:8: fatal error: module 'std' not found
1 | import std;
| ~~~~~~~^~~
Proposed Fix
Update test/cmake/cxx_import_std/CMakeLists.txt to include the experimental gate UUIDs for CMake 3.30.0–3.31.x (0e5b6991-d74f-4b3d-a41c-cf096e0b2508) and CMake 4.0.0–4.0.2 (a9e1cf81-9932-4810-974b-6eccaf14e457):
if(CMAKE_VERSION VERSION_GREATER_EQUAL 4.3.0)
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 451f2fe2-a8a2-47c3-bc32-94786d8fc91b)
elseif(CMAKE_VERSION VERSION_GREATER_EQUAL 4.0.3)
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD d0edc3af-4c50-42ea-a356-e2862fe7a444)
elseif(CMAKE_VERSION VERSION_GREATER_EQUAL 4.0.0)
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD a9e1cf81-9932-4810-974b-6eccaf14e457)
else()
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD 0e5b6991-d74f-4b3d-a41c-cf096e0b2508)
endif()
- Ngôn ngữ chính
- C++
- Star
- 27.8k
- Fork
- 3.6k
- Merge trung bình
- 1 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 181
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của emscripten-core/emscripten
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
emscripten-core/emscripten#27994 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
LEGACY_GL_EMULATION: generated fixed-function fragment shaders use mediump — fp16 overflow where mediump is half precisionCó thể đã có người làm @TheTomBritton đã nhận 14 ngày trước. Đang mởDesktop OpenGL emulation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
emscripten-core/emscripten#27948 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
emscripten-core/emscripten#27906 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
run_python, run_python_compiler could readlink -fCó thể đã có người làm @kapouer đã nhận 129 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
emscripten-core/emscripten#27211 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
emscripten_fetch_unpack_response_headers returns header values with leading and trailing whitespaceĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
emscripten-core/emscripten#27114 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của emscripten-core/emscripten
Issue tương tự
-
libc++ test-suite
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
llvm/llvm-project#239851 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug :bug:
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
comp-documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
ClickHouse/ClickHouse#129829 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
EchoTools/nevr-runtime#2263 ·
Maintainer thường phản hồi trong vòng 1 ngày