From c869062ebee7406aeb5b9f57126d7ca1898a2a62 Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Thu, 20 Nov 2025 13:41:51 +0800 Subject: [PATCH] 4.2.0 --- backport-CVE-2025-9301.patch | 63 ------------------- cmake-3.31.6-sw.patch => cmake-4.2.0-sw.patch | 30 ++++----- cmake-3.31.10.tar.gz => cmake-4.2.0.tar.gz | 4 +- cmake-findruby.patch | 27 +++++--- cmake.spec | 45 ++++++++----- cmake.yaml | 6 +- macros.cmake.in | 24 ++----- 7 files changed, 74 insertions(+), 125 deletions(-) delete mode 100644 backport-CVE-2025-9301.patch rename cmake-3.31.6-sw.patch => cmake-4.2.0-sw.patch (78%) rename cmake-3.31.10.tar.gz => cmake-4.2.0.tar.gz (32%) diff --git a/backport-CVE-2025-9301.patch b/backport-CVE-2025-9301.patch deleted file mode 100644 index b238500..0000000 --- a/backport-CVE-2025-9301.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 37e27f71bc356d880c908040cd0cb68fa2c371b8 Mon Sep 17 00:00:00 2001 -From: Tyler Yankee -Date: Wed, 13 Aug 2025 15:22:28 -0400 -Subject: [PATCH] foreach: Explicitly skip replay without iterations - -As written, foreach loops with a trailing `IN` (i.e., no loop -variable(s) given) lead to an assertion error. Handle this case by -exiting early when we know the loop won't execute anything. - -Fixes: #27135 ---- - Source/cmForEachCommand.cxx | 3 +++ - Tests/RunCMake/foreach/RunCMakeTest.cmake | 1 + - Tests/RunCMake/foreach/TrailingIn-result.txt | 1 + - Tests/RunCMake/foreach/TrailingIn.cmake | 5 +++++ - 4 files changed, 10 insertions(+) - create mode 100644 Tests/RunCMake/foreach/TrailingIn-result.txt - create mode 100644 Tests/RunCMake/foreach/TrailingIn.cmake - -diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx -index 96867e26587..8b741183885 100644 ---- a/Source/cmForEachCommand.cxx -+++ b/Source/cmForEachCommand.cxx -@@ -100,6 +100,9 @@ bool cmForEachFunctionBlocker::ArgumentsMatch(cmListFileFunction const& lff, - bool cmForEachFunctionBlocker::Replay( - std::vector functions, cmExecutionStatus& inStatus) - { -+ if (this->Args.size() == this->IterationVarsCount) { -+ return true; -+ } - return this->ZipLists ? this->ReplayZipLists(functions, inStatus) - : this->ReplayItems(functions, inStatus); - } -diff --git a/Tests/RunCMake/foreach/RunCMakeTest.cmake b/Tests/RunCMake/foreach/RunCMakeTest.cmake -index 15ca477043f..acfc742ea6f 100644 ---- a/Tests/RunCMake/foreach/RunCMakeTest.cmake -+++ b/Tests/RunCMake/foreach/RunCMakeTest.cmake -@@ -22,3 +22,4 @@ run_cmake(foreach-RANGE-invalid-test) - run_cmake(foreach-RANGE-out-of-range-test) - run_cmake(foreach-var-scope-CMP0124-OLD) - run_cmake(foreach-var-scope-CMP0124-NEW) -+run_cmake(TrailingIn) -diff --git a/Tests/RunCMake/foreach/TrailingIn-result.txt b/Tests/RunCMake/foreach/TrailingIn-result.txt -new file mode 100644 -index 00000000000..573541ac970 ---- /dev/null -+++ b/Tests/RunCMake/foreach/TrailingIn-result.txt -@@ -0,0 +1 @@ -+0 -diff --git a/Tests/RunCMake/foreach/TrailingIn.cmake b/Tests/RunCMake/foreach/TrailingIn.cmake -new file mode 100644 -index 00000000000..e2b5b2f21f7 ---- /dev/null -+++ b/Tests/RunCMake/foreach/TrailingIn.cmake -@@ -0,0 +1,5 @@ -+foreach(v IN) -+endforeach() -+ -+foreach(v1 v2 IN) -+endforeach() --- -GitLab - diff --git a/cmake-3.31.6-sw.patch b/cmake-4.2.0-sw.patch similarity index 78% rename from cmake-3.31.6-sw.patch rename to cmake-4.2.0-sw.patch index db31419..3f0acd5 100644 --- a/cmake-3.31.6-sw.patch +++ b/cmake-4.2.0-sw.patch @@ -1,6 +1,6 @@ -From 9b5ad2b0b4498b143c1fbc7b525ddef2faa90f05 Mon Sep 17 00:00:00 2001 +From 0ff9eed48f25abc45ac8a7374cb568f005067142 Mon Sep 17 00:00:00 2001 From: Funda Wang -Date: Thu, 20 Mar 2025 19:22:25 +0800 +Date: Fri, 17 Oct 2025 12:21:15 +0800 Subject: [PATCH] Fix build with sw_64 --- @@ -8,13 +8,13 @@ Subject: [PATCH] Fix build with sw_64 Utilities/KWIML/include/kwiml/abi.h | 4 ++++ Utilities/cmlibrhash/librhash/byte_order.h | 2 +- Utilities/cmlibuv/src/win/util.c | 4 ++++ - 4 files changed, 12 insertions(+), 1 deletions(-) + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Modules/FindJNI.cmake b/Modules/FindJNI.cmake -index 82e3d88..02ae823 100644 +index ff865a0..536fcb3 100644 --- a/Modules/FindJNI.cmake +++ b/Modules/FindJNI.cmake -@@ -150,6 +150,8 @@ macro(java_append_library_directories _var) +@@ -246,6 +246,8 @@ macro(java_append_library_directories _var) set(_java_libarch "i386") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") set(_java_libarch "arm64" "aarch64") @@ -23,7 +23,7 @@ index 82e3d88..02ae823 100644 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha") set(_java_libarch "alpha") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") -@@ -512,6 +514,7 @@ find_path(JAVA_INCLUDE_PATH2 NAMES jni_md.h jniport.h +@@ -608,6 +610,7 @@ find_path(JAVA_INCLUDE_PATH2 NAMES jni_md.h jniport.h ${JAVA_INCLUDE_PATH}/solaris ${JAVA_INCLUDE_PATH}/hp-ux ${JAVA_INCLUDE_PATH}/alpha @@ -32,7 +32,7 @@ index 82e3d88..02ae823 100644 DOC "jni_md.h jniport.h include directory" ) diff --git a/Utilities/KWIML/include/kwiml/abi.h b/Utilities/KWIML/include/kwiml/abi.h -index cefe9ce..906b7c8 100644 +index 9b23580..cb866f6 100644 --- a/Utilities/KWIML/include/kwiml/abi.h +++ b/Utilities/KWIML/include/kwiml/abi.h @@ -363,6 +363,10 @@ suppression macro KWIML_ABI_NO_VERIFY was defined. @@ -47,18 +47,18 @@ index cefe9ce..906b7c8 100644 #elif defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) # define KWIML_ABI_ENDIAN_ID KWIML_ABI_ENDIAN_ID_LITTLE diff --git a/Utilities/cmlibrhash/librhash/byte_order.h b/Utilities/cmlibrhash/librhash/byte_order.h -index 73863e0..67e9343 100644 +index 6e6549e..8d3ee50 100644 --- a/Utilities/cmlibrhash/librhash/byte_order.h +++ b/Utilities/cmlibrhash/librhash/byte_order.h -@@ -75,7 +75,7 @@ extern "C" { - /* try detecting endianness by CPU */ - #ifdef RHASH_BYTE_ORDER +@@ -77,7 +77,7 @@ extern "C" { #elif defined(CPU_IA32) || defined(CPU_X64) || defined(__ia64) || defined(__ia64__) || \ -- defined(__alpha__) || defined(_M_ALPHA) || defined(vax) || defined(MIPSEL) || \ -+ defined(__alpha__) || defined(_M_ALPHA) || defined(__sw_64__) || defined(_M_SW_64) || defined(vax) || defined(MIPSEL) || \ + defined(__alpha__) || defined(_M_ALPHA) || defined(vax) || defined(MIPSEL) || \ defined(_ARM_) || defined(__arm__) || defined(_M_ARM64) || defined(_M_ARM64EC) || \ - defined(__loongarch64) +- defined(__loongarch64) || defined(__sw_64) ++ defined(__loongarch64) || defined(__sw_64) || defined(_M_SW_64) # define RHASH_BYTE_ORDER RHASH_BYTE_ORDER_LE + #elif defined(__sparc) || defined(__sparc__) || defined(sparc) || \ + defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_POWER) || \ diff --git a/Utilities/cmlibuv/src/win/util.c b/Utilities/cmlibuv/src/win/util.c index 9943205..7cb1670 100644 --- a/Utilities/cmlibuv/src/win/util.c @@ -75,5 +75,5 @@ index 9943205..7cb1670 100644 case PROCESSOR_ARCHITECTURE_ALPHA64: uv__strscpy(buffer->machine, "alpha", sizeof(buffer->machine)); -- -2.43.5 +2.47.3 diff --git a/cmake-3.31.10.tar.gz b/cmake-4.2.0.tar.gz similarity index 32% rename from cmake-3.31.10.tar.gz rename to cmake-4.2.0.tar.gz index 1d2cef8..ef87148 100644 --- a/cmake-3.31.10.tar.gz +++ b/cmake-4.2.0.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf06fadfd6d41fa8e1ade5099e54976d1d844fd1487ab99942341f91b13d3e29 -size 11715172 +oid sha256:4104e94657d247c811cb29985405a360b78130b5d51e7f6daceb2447830bd579 +size 12339099 diff --git a/cmake-findruby.patch b/cmake-findruby.patch index 8a06752..c644db4 100644 --- a/cmake-findruby.patch +++ b/cmake-findruby.patch @@ -1,22 +1,31 @@ -Index: cmake-3.31.4/Modules/FindRuby.cmake +Index: cmake-4.2.0/Modules/FindRuby.cmake =================================================================== ---- cmake-3.31.4.orig/Modules/FindRuby.cmake -+++ cmake-3.31.4/Modules/FindRuby.cmake -@@ -307,14 +307,9 @@ if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_ +--- cmake-4.2.0/Modules/FindRuby.cmake ++++ cmake-4.2.0/Modules/FindRuby.cmake +@@ -309,14 +309,9 @@ if (Ruby_EXECUTABLE AND NOT Ruby_EXECUTABLE STREQUAL "${_Ruby_EXECUTABLE_LAST_QU _RUBY_CONFIG_VAR("sitearchdir" Ruby_SITEARCH_DIR) _RUBY_CONFIG_VAR("sitelibdir" Ruby_SITELIB_DIR) - # vendor_ruby available ? - execute_process(COMMAND ${Ruby_EXECUTABLE} -r vendor-specific -e "print 'true'" -- OUTPUT_VARIABLE Ruby_HAS_VENDOR_RUBY ERROR_QUIET) +- OUTPUT_VARIABLE Ruby_HAS_VENDOR_RUBY ERROR_QUIET) - -- if(Ruby_HAS_VENDOR_RUBY) +- if (Ruby_HAS_VENDOR_RUBY) - _RUBY_CONFIG_VAR("vendorlibdir" Ruby_VENDORLIB_DIR) - _RUBY_CONFIG_VAR("vendorarchdir" Ruby_VENDORARCH_DIR) -- endif() -+ # vendor_ruby +- endif () ++# vendor_ruby + _RUBY_CONFIG_VAR("vendorlibdir" Ruby_VENDORLIB_DIR) + _RUBY_CONFIG_VAR("vendorarchdir" Ruby_VENDORARCH_DIR) # save the results in the cache so we don't have to run ruby the next time again - set(Ruby_VERSION_MAJOR ${Ruby_VERSION_MAJOR} CACHE PATH "The Ruby major version" FORCE) + set(_Ruby_EXECUTABLE_LAST_QUERIED "${Ruby_EXECUTABLE}" CACHE INTERNAL "The ruby executable last queried for version and path info") +@@ -330,7 +325,7 @@ if (Ruby_EXECUTABLE AND NOT Ruby_EXECUTABLE STREQUAL "${_Ruby_EXECUTABLE_LAST_QU + set(Ruby_RUBY_LIB_DIR ${Ruby_RUBY_LIB_DIR} CACHE PATH "The Ruby ruby-lib dir" FORCE) + set(Ruby_SITEARCH_DIR ${Ruby_SITEARCH_DIR} CACHE PATH "The Ruby site arch dir" FORCE) + set(Ruby_SITELIB_DIR ${Ruby_SITELIB_DIR} CACHE PATH "The Ruby site lib dir" FORCE) +- set(Ruby_HAS_VENDOR_RUBY ${Ruby_HAS_VENDOR_RUBY} CACHE BOOL "Vendor Ruby is available" FORCE) ++ set(Ruby_HAS_VENDOR_RUBY $ CACHE BOOL "Vendor Ruby is available" FORCE) + set(Ruby_VENDORARCH_DIR ${Ruby_VENDORARCH_DIR} CACHE PATH "The Ruby vendor arch dir" FORCE) + set(Ruby_VENDORLIB_DIR ${Ruby_VENDORLIB_DIR} CACHE PATH "The Ruby vendor lib dir" FORCE) + diff --git a/cmake.spec b/cmake.spec index 1b2f3fa..bfcdae1 100644 --- a/cmake.spec +++ b/cmake.spec @@ -16,7 +16,7 @@ %{!?_pkgdocdir:%global _pkgdocdir %{_docdir}/cmake-%{version}} Name: cmake -Version: 3.31.10 +Version: 4.2.0 Release: 1 Summary: Cross-platform make system License: BSD-3-Clause AND MIT-open-group AND Zlib @@ -28,11 +28,10 @@ Source3: cmake.attr Source4: cmake.prov Source5: cmake.req Patch0: cmake-findruby.patch -Patch1: cmake-3.31.6-sw.patch -# https://gitlab.kitware.com/cmake/cmake/-/commit/37e27f71bc356d880c908040cd0cb68fa2c371b8 -Patch6001: backport-CVE-2025-9301.patch +Patch1: cmake-4.2.0-sw.patch BuildRequires: coreutils findutils gcc-c++ gcc-gfortran sed +BuildRequires: make %if %{with cmake_gui} BuildRequires: pkgconfig(Qt6Widgets) desktop-file-utils @@ -59,7 +58,10 @@ BuildRequires: libuv-devel xz-devel zlib-devel cmake-rpm-macros Requires: cmake-data = %{version}-%{release} cmake-rpm-macros = %{version}-%{release} Requires: cmake-filesystem = %{version}-%{release} -Provides: cmake%{version_major} = %{version}-%{release} bundled(md5-deutsch) bundled(kwsys) bundled(cppdap) +Provides: bundled(md5-deutsch) bundled(kwsys) bundled(cppdap) + +Requires: (make or ninja-build) +Requires: ninja-build %description CMake is used to control the software compilation process using simple @@ -153,10 +155,8 @@ popd install -d %{buildroot}%{_pkgdocdir} %make_install -C %{_vpath_builddir} CMAKE_DOC_DIR=%{buildroot}%{_pkgdocdir} find %{buildroot}%{_datadir}/cmake/Modules -type f | xargs chmod -x -for f in ccmake cmake cpack ctest; -do - ln -s $f %{buildroot}%{_bindir}/${f}%{version_major}; -done + +rm -f %{buildroot}%{_datadir}/cmake/Templates/Windows/Windows_TemporaryKey.pfx %if %{with emacs} install -d %{buildroot}%{_emacs_sitelispdir}/cmake @@ -169,7 +169,6 @@ rm -f %{buildroot}%{_emacs_sitelispdir} %endif install -p -m0644 -D %{S:2} %{buildroot}%{_rpmmacrodir}/macros.%{name} -sed -i -e "s|@@CMAKE_VERSION@@|%{version}|" -e "s|@@CMAKE_MAJOR_VERSION@@|%{version_major}|" %{buildroot}%{_rpmmacrodir}/macros.%{name} touch -r %{S:2} %{buildroot}%{_rpmmacrodir}/macros.%{name} install -p -m0644 -D %{S:3} %{buildroot}%{_fileattrsdir}/cmake.attr install -p -m0755 -D %{S:4} %{buildroot}%{_rpmconfigdir}/cmake.prov @@ -190,6 +189,19 @@ cp -pr %{buildroot}%{_datadir}/cmake/Help %{buildroot}%{_pkgdocdir} cp -p Utilities/cmcppdap/LICENSE LICENSE.cppdap cp -p Utilities/cmcppdap/NOTICE NOTICE.cppdap +# Cleanup pre-installed documentation +%if %{with sphinx} +mv %{buildroot}%{_docdir}/%{name}/html . +%endif +rm -rf %{buildroot}%{_docdir}/%{name} +# Install documentation to _pkgdocdir +mkdir -p %{buildroot}%{_pkgdocdir} +cp -pr %{buildroot}%{_datadir}/%{name}/Help %{buildroot}%{_pkgdocdir} +mv %{buildroot}%{_pkgdocdir}/Help %{buildroot}%{_pkgdocdir}/rst +%if %{with sphinx} +mv html %{buildroot}%{_pkgdocdir} +%endif + %if %{with cmake_gui} %if 0%{?build_cross} == 0 desktop-file-install --delete-original \ @@ -199,8 +211,6 @@ desktop-file-install --delete-original \ install -d %{buildroot}%{_metainfodir} %endif -rm -f %{buildroot}%{_datadir}/cmake/Templates/Windows/Windows_TemporaryKey.pfx - find %{buildroot}%{_datadir}/cmake -type d | sed -e 's!^%{buildroot}!%%dir "!g' -e 's!$!"!g' > data_dirs.mf find %{buildroot}%{_datadir}/cmake -type f | sed -e 's!^%{buildroot}!"!g' -e 's!$!"!g' > data_files.mf find %{buildroot}%{_libdir}/cmake -type d | sed -e 's!^%{buildroot}!%%dir "!g' -e 's!$!"!g' > lib_dirs.mf @@ -223,7 +233,7 @@ popd %files -f lib_files.mf %doc %dir %{_pkgdocdir} -%license Copyright_* COPYING* Copyright.txt +%license Copyright_* COPYING* LICENSE.rst %license LICENSE.cppdap NOTICE.cppdap %files data -f data_files.mf @@ -256,22 +266,27 @@ popd %{_rpmconfigdir}/cmake.req %files help +%{_datadir}/doc/%{name}/rst %if %{with sphinx} %{_mandir}/man1/ccmake.1.* %{_mandir}/man1/cmake.1.* %{_mandir}/man1/cpack.1.* %{_mandir}/man1/ctest.1.* %{_mandir}/man7/*.7.* +%{_datadir}/doc/%{name}/html %if %{with cmake_gui} %if 0%{?build_cross} == 0 %{_mandir}/man1/cmake-gui.1.* %endif %endif %endif -%doc %{_pkgdocdir} -%exclude %{_pkgdocdir}/Copyright.txt %changelog +* Thu Nov 20 2025 Funda Wang - 4.2.0-1 +- update to 4.2.0 +- remove non-standard path definition of cmake macro +- use ninja as default generator + * Tue Nov 18 2025 Funda Wang - 3.31.10-1 - update to 3.31.10 diff --git a/cmake.yaml b/cmake.yaml index ace387e..63ae854 100644 --- a/cmake.yaml +++ b/cmake.yaml @@ -1,4 +1,4 @@ -version_control: github -src_repo: Kitware/Cmake +version_control: git +src_repo: https://gitlab.kitware.com/cmake/cmake.git tag_prefix: ^v -seperator: . +separator: . diff --git a/macros.cmake.in b/macros.cmake.in index 24e3806..79b010e 100644 --- a/macros.cmake.in +++ b/macros.cmake.in @@ -2,7 +2,6 @@ # Macros for cmake # -%_cmake_lib_suffix64 -DLIB_SUFFIX=64 %_cmake_shared_libs -DBUILD_SHARED_LIBS:BOOL=ON %_cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=ON %_cmake_version @@CMAKE_VERSION@@ @@ -11,32 +10,27 @@ %__cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.} %_cmake_module_linker_flags %(echo %build_ldflags|sed -e 's#-Wl,--no-undefined##') +%_cmake_generator "Ninja" + # - Set default compile flags # - CMAKE_*_FLAGS_RELEASE are added *after* the *FLAGS environment variables # and default to -O3 -DNDEBUG. Strip the -O3 so we can override with *FLAGS # - Turn on verbose makefiles so we can see and verify compile flags # - Turn off stripping by default so RPM can do it separately -# - Set default install prefixes and library install directories +# - Set default install prefixes # - Turn on shared libraries by default %cmake \ %{set_build_flags} \ %__cmake \\\ -S "%{_vpath_srcdir}" \\\ -B "%{__cmake_builddir}" \\\ + %{?_cmake_generator:-G %{_cmake_generator}} \\\ -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \\\ -DCMAKE_INSTALL_DO_STRIP:BOOL=OFF \\\ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \\\ - -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\ - -DLIB_INSTALL_DIR:PATH=%{_libdir} \\\ - -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\ - -DCMAKE_INSTALL_RUNSTATEDIR:PATH=%{_rundir} \\\ - -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\ -%if "%{?_lib}" == "lib64" \ - %{?_cmake_lib_suffix64} \\\ -%endif \ %{?_cmake_shared_libs} \\\ %{?_cmake_module_linker_flags:-DCMAKE_MODULE_LINKER_FLAGS="%_cmake_module_linker_flags%{?_cmake_module_linker_flags_extra: %_cmake_module_linker_flags_extra}"} \\\ %{nil} @@ -56,14 +50,8 @@ %ifarch riscv64 \ --timeout 6000 \\\ %endif \ - %{?_smp_mflags} %{**} - - -%cmake@@CMAKE_MAJOR_VERSION@@ %cmake -%cmake@@CMAKE_MAJOR_VERSION@@_build %cmake_build -%cmake@@CMAKE_MAJOR_VERSION@@_install %cmake_install -%ctest@@CMAKE_MAJOR_VERSION@@(:-:h:j:u:v:A:C:D:E:F:H:I:L:M:N:O:Q:R:S:T:U:V:) \ - %ctest %{**} + %{?_smp_mflags} \\\ + %{lua:print((string.gsub(rpm.expand('%{**}'),"%-%-%s","")))} # Declarative buildsystem, requires RPM 4.20+ to work # https://rpm-software-management.github.io/rpm/manual/buildsystem.html -- Gitee