diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/cmake-fedora-flag_release.patch b/cmake-fedora-flag_release.patch deleted file mode 100644 index 7b1ad64..0000000 --- a/cmake-fedora-flag_release.patch +++ /dev/null @@ -1,168 +0,0 @@ -Index: cmake-3.17.0-rc1/Modules/Compiler/Absoft-Fortran.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/Absoft-Fortran.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/Absoft-Fortran.cmake -@@ -1,7 +1,7 @@ - string(APPEND CMAKE_Fortran_FLAGS_INIT " ") - string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " ") --string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3") -+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O2") - string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") - set(CMAKE_Fortran_MODDIR_FLAG "-YMOD_OUT_DIR=") - set(CMAKE_Fortran_MODPATH_FLAG "-p") -Index: cmake-3.17.0-rc1/Modules/Compiler/G95-Fortran.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/G95-Fortran.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/G95-Fortran.cmake -@@ -1,7 +1,7 @@ - string(APPEND CMAKE_Fortran_FLAGS_INIT " ") - string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os") --string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3") -+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O2") - string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") - set(CMAKE_Fortran_MODDIR_FLAG "-fmod=") - set(CMAKE_Fortran_VERBOSE_FLAG "-v") -Index: cmake-3.17.0-rc1/Modules/Compiler/GNU.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/GNU.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/GNU.cmake -@@ -55,7 +55,7 @@ macro(__compiler_gnu lang) - string(APPEND CMAKE_${lang}_FLAGS_INIT " ") - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG") -- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG") -+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2 -DNDEBUG") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG") - set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE " -E > ") - set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") -Index: cmake-3.17.0-rc1/Modules/Compiler/GNU-Fortran.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/GNU-Fortran.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/GNU-Fortran.cmake -@@ -14,7 +14,7 @@ set(CMAKE_Fortran_POSTPROCESS_FLAG "-fpr - - # No -DNDEBUG for Fortran. - string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os") --string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3") -+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O2") - - # No -isystem for Fortran because it will not find .mod files. - unset(CMAKE_INCLUDE_SYSTEM_FLAG_Fortran) -Index: cmake-3.17.0-rc1/Modules/Compiler/Intel.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/Intel.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/Intel.cmake -@@ -22,7 +22,7 @@ else() - string(APPEND CMAKE_${lang}_FLAGS_INIT " ") - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os") -- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3") -+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") - - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") -Index: cmake-3.17.0-rc1/Modules/Compiler/NVIDIA-CUDA.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/NVIDIA-CUDA.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/NVIDIA-CUDA.cmake -@@ -36,7 +36,7 @@ if(NOT "x${CMAKE_CUDA_SIMULATE_ID}" STRE - set(CMAKE_SHARED_LIBRARY_CUDA_FLAGS -fPIC) - string(APPEND CMAKE_CUDA_FLAGS_INIT " ") - string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -g") -- string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -O3 -DNDEBUG") -+ string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -O2 -DNDEBUG") - string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG") - string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG") - endif() -Index: cmake-3.17.0-rc1/Modules/Compiler/PathScale.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/PathScale.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/PathScale.cmake -@@ -16,6 +16,6 @@ macro(__compiler_pathscale lang) - string(APPEND CMAKE_${lang}_FLAGS_INIT " ") - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os") -- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3") -+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g -O2") - endmacro() -Index: cmake-3.17.0-rc1/Modules/Compiler/PGI.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/PGI.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/PGI.cmake -@@ -18,7 +18,7 @@ macro(__compiler_pgi lang) - string(APPEND CMAKE_${lang}_FLAGS_INIT " ") - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O2 -s") -- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -fast -O3") -+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -fast -O2") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -gopt") - - if(CMAKE_HOST_WIN32) -Index: cmake-3.17.0-rc1/Modules/Compiler/SunPro-ASM.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/SunPro-ASM.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/SunPro-ASM.cmake -@@ -11,7 +11,7 @@ set(CMAKE_SHARED_LIBRARY_SONAME_ASM_FLAG - string(APPEND CMAKE_ASM_FLAGS_INIT " ") - string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG") --string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG") -+string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -xO2 -DNDEBUG") - string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG") - - # Initialize ASM link type selection flags. These flags are used when -Index: cmake-3.17.0-rc1/Modules/Compiler/SunPro-C.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/SunPro-C.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/SunPro-C.cmake -@@ -19,7 +19,7 @@ set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG " - string(APPEND CMAKE_C_FLAGS_INIT " ") - string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG") --string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG") -+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -xO2 -DNDEBUG") - string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG") - - set(CMAKE_DEPFILE_FLAGS_C "-xMD -xMF ") -Index: cmake-3.17.0-rc1/Modules/Compiler/SunPro-CXX.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/SunPro-CXX.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/SunPro-CXX.cmake -@@ -19,7 +19,7 @@ set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG - string(APPEND CMAKE_CXX_FLAGS_INIT " ") - string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG") --string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG") -+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -xO2 -DNDEBUG") - string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG") - - set(CMAKE_DEPFILE_FLAGS_CXX "-xMD -xMF ") -Index: cmake-3.17.0-rc1/Modules/Compiler/SunPro-Fortran.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Compiler/SunPro-Fortran.cmake -+++ cmake-3.17.0-rc1/Modules/Compiler/SunPro-Fortran.cmake -@@ -17,7 +17,7 @@ set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLA - string(APPEND CMAKE_Fortran_FLAGS_INIT " ") - string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g") - string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG") --string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG") -+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -xO2 -DNDEBUG") - string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG") - set(CMAKE_Fortran_MODDIR_FLAG "-moddir=") - set(CMAKE_Fortran_MODPATH_FLAG "-M") -Index: cmake-3.17.0-rc1/Modules/Platform/Windows-Clang.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Platform/Windows-Clang.cmake -+++ cmake-3.17.0-rc1/Modules/Platform/Windows-Clang.cmake -@@ -79,7 +79,7 @@ macro(__windows_compiler_clang_gnu lang) - - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -Xclang -gcodeview -O0 ${__ADDED_FLAGS_DEBUG}") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG ${__ADDED_FLAGS}") -- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG ${__ADDED_FLAGS}") -+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2 -DNDEBUG ${__ADDED_FLAGS}") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG -Xclang -gcodeview ${__ADDED_FLAGS}") - endif() - set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ") diff --git a/cmake-findruby.patch b/cmake-findruby.patch index b5d4fae..8a06752 100644 --- a/cmake-findruby.patch +++ b/cmake-findruby.patch @@ -1,21 +1,22 @@ -Index: cmake-3.17.0-rc1/Modules/FindRuby.cmake +Index: cmake-3.31.4/Modules/FindRuby.cmake =================================================================== ---- cmake-3.17.0-rc1.orig/Modules/FindRuby.cmake -+++ cmake-3.17.0-rc1/Modules/FindRuby.cmake -@@ -110,14 +110,8 @@ if(RUBY_EXECUTABLE AND NOT RUBY_VERSIO - _RUBY_CONFIG_VAR("sitearchdir" RUBY_SITEARCH_DIR) - _RUBY_CONFIG_VAR("sitelibdir" RUBY_SITELIB_DIR) +--- 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_ + _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) +- execute_process(COMMAND ${Ruby_EXECUTABLE} -r vendor-specific -e "print 'true'" +- OUTPUT_VARIABLE Ruby_HAS_VENDOR_RUBY ERROR_QUIET) - -- if(RUBY_HAS_VENDOR_RUBY) -- _RUBY_CONFIG_VAR("vendorlibdir" RUBY_VENDORLIB_DIR) -- _RUBY_CONFIG_VAR("vendorarchdir" RUBY_VENDORARCH_DIR) +- if(Ruby_HAS_VENDOR_RUBY) +- _RUBY_CONFIG_VAR("vendorlibdir" Ruby_VENDORLIB_DIR) +- _RUBY_CONFIG_VAR("vendorarchdir" Ruby_VENDORARCH_DIR) - endif() -+ _RUBY_CONFIG_VAR("vendorlibdir" RUBY_VENDORLIB_DIR) -+ _RUBY_CONFIG_VAR("vendorarchdir" RUBY_VENDORARCH_DIR) ++ # 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_VERSION_MAJOR ${Ruby_VERSION_MAJOR} CACHE PATH "The Ruby major version" FORCE) diff --git a/cmake-mingw-dl.patch b/cmake-mingw-dl.patch deleted file mode 100644 index ef24234..0000000 --- a/cmake-mingw-dl.patch +++ /dev/null @@ -1,21 +0,0 @@ -Index: cmake-3.17.0-rc1/Modules/Platform/Windows-GNU.cmake -=================================================================== ---- cmake-3.17.0-rc1.orig/Modules/Platform/Windows-GNU.cmake -+++ cmake-3.17.0-rc1/Modules/Platform/Windows-GNU.cmake -@@ -25,12 +25,14 @@ endif() - - if(MINGW) - set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") -- set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib") -+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib") - set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32") - set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") -+ set(CMAKE_DL_LIBS "dl") -+else() -+ set(CMAKE_DL_LIBS "") - endif() - --set(CMAKE_DL_LIBS "") - set(CMAKE_LIBRARY_PATH_FLAG "-L") - set(CMAKE_LINK_LIBRARY_FLAG "-l") - set(CMAKE_LINK_DEF_FILE_FLAG "") # Empty string: passing the file is enough diff --git a/cmake.spec b/cmake.spec index 89f605c..0bd47ae 100644 --- a/cmake.spec +++ b/cmake.spec @@ -16,7 +16,7 @@ # Run git tests %bcond_without git_test -# Set to bcond_with or use --without gui to disable qt4 gui build +# Set to bcond_with or use --without gui to disable qt gui build %bcond_without gui # Use ncurses for colorful output @@ -32,21 +32,31 @@ # Enable RPM dependency generators for cmake files written in Python %bcond_without rpm -# Sphinx-build cannot import CMakeLexer on EPEL <= 6 -%if 0%{?rhel} && 0%{?rhel} <= 6 -%bcond_with sphinx -%else %bcond_without sphinx + +%if !0%{?rhel} +%bcond_with bundled_jsoncpp +%bcond_with bundled_rhash +%else +%bcond_without bundled_jsoncpp +%bcond_without bundled_rhash %endif +# cppdap is currently shipped as a static lib from upstream, +# so we do not have it in the repos. +%bcond_without bundled_cppdap + # Run tests %bcond_without test # Enable X11 tests %bcond_without X11_test -# Place rpm-macros into proper location -%global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) +# Do not build non-lto objects to reduce build time significantly. +%global build_cflags %(echo '%{build_cflags}' | sed -e 's!-ffat-lto-objects!-fno-fat-lto-objects!g') +%global build_cxxflags %(echo '%{build_cxxflags}' | sed -e 's!-ffat-lto-objects!-fno-fat-lto-objects!g') +%global build_fflags %(echo '%{build_fflags}' | sed -e 's!-ffat-lto-objects!-fno-fat-lto-objects!g') +%global build_fcflags %(echo '%{build_fflags}' | sed -e 's!-ffat-lto-objects!-fno-fat-lto-objects!g') # Setup _pkgdocdir if not defined already %{!?_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}} @@ -55,19 +65,30 @@ %{!?_vpath_builddir:%global _vpath_builddir %{_target_platform}} %global major_version 3 -%global minor_version 17 -# Set to RC version if building RC, else %%{nil} -#global rcsuf rc3 -%{?rcsuf:%global relsuf .%{rcsuf}} -%{?rcsuf:%global versuf -%{rcsuf}} +%global minor_version 31 +%global patch_version 10 + +# For handling bump release by rpmdev-bumpspec and mass rebuild +%global baserelease 3 + +# Set to RC version if building RC, else comment out. +#%%global rcsuf rc3 + +%if 0%{?rcsuf:1} +%global pkg_version %{major_version}.%{minor_version}.%{patch_version}~%{rcsuf} +%global tar_version %{major_version}.%{minor_version}.%{patch_version}-%{rcsuf} +%else +%global pkg_version %{major_version}.%{minor_version}.%{patch_version} +%global tar_version %{major_version}.%{minor_version}.%{patch_version} +%endif # Uncomment if building for EPEL #global name_suffix %%{major_version} %global orig_name cmake Name: %{orig_name}%{?name_suffix} -Version: %{major_version}.%{minor_version}.4 -Release: 2%{?relsuf}%{?dist} +Version: %{pkg_version} +Release: %{baserelease}%{?dist} Summary: Cross-platform make system # most sources are BSD @@ -75,15 +96,16 @@ Summary: Cross-platform make system # Source/kwsys/MD5.c is zlib # some GPL-licensed bison-generated files, which all include an # exception granting redistribution under terms of your choice -License: BSD and MIT and zlib +License: BSD-3-Clause AND MIT-open-group AND Zlib%{?with_bundled_cppdap: AND Apache-2.0} URL: http://www.cmake.org -Source0: http://www.cmake.org/files/v%{major_version}.%{minor_version}/%{orig_name}-%{version}%{?versuf}.tar.gz +Source0: http://www.cmake.org/files/v%{major_version}.%{minor_version}/%{orig_name}-%{tar_version}.tar.gz Source1: %{name}-init.el -Source2: macros.%{name} +Source2: macros.%{name}.in +Source3: macros.aaa-%{name}-srpm # See https://bugzilla.redhat.com/show_bug.cgi?id=1202899 -Source3: %{name}.attr -Source4: %{name}.prov -Source5: %{name}.req +Source4: %{name}.attr +Source5: %{name}.prov +Source6: %{name}.req # Always start regular patches with numbers >= 100. # We need lower numbers for patches in compat package. @@ -93,19 +115,10 @@ Source5: %{name}.req # http://public.kitware.com/Bug/view.php?id=12965 # https://bugzilla.redhat.com/show_bug.cgi?id=822796 Patch100: %{name}-findruby.patch -# replace release flag -O3 with -O2 for fedora -Patch101: %{name}-fedora-flag_release.patch -# Add dl to CMAKE_DL_LIBS on MINGW -# https://gitlab.kitware.com/cmake/cmake/issues/17600 -Patch102: %{name}-mingw-dl.patch - # Patch for renaming on EPEL %if 0%{?name_suffix:1} -Patch1: %{name}-rename.patch -%if 0%{?rhel} && 0%{?rhel} <= 6 -Patch2: %{name}-libarchive3.patch -%endif +Patch1: %{name}-rename.patch %endif BuildRequires: coreutils @@ -131,17 +144,31 @@ BuildRequires: %{_bindir}/sphinx-build %if %{without bootstrap} BuildRequires: bzip2-devel BuildRequires: curl-devel +%if %{with bundled_cppdap} +Provides: bundled(cppdap) +%else +BuildRequires: cppdap-devel +%endif BuildRequires: expat-devel +%if %{with bundled_jsoncpp} +Provides: bundled(jsoncpp) +%else BuildRequires: jsoncpp-devel +%endif %if 0%{?fedora} || 0%{?rhel} >= 7 BuildRequires: libarchive-devel %else BuildRequires: libarchive3-devel %endif BuildRequires: libuv-devel +%if %{with bundled_rhash} +Provides: bundled(rhash) +%else BuildRequires: rhash-devel +%endif BuildRequires: xz-devel BuildRequires: zlib-devel +BuildRequires: vim-filesystem %endif %if %{with emacs} BuildRequires: emacs @@ -155,9 +182,10 @@ BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python2-devel %endif %endif -#BuildRequires: xmlrpc-c-devel %if %{with gui} -%if 0%{?fedora} || 0%{?rhel} > 7 +%if 0%{?fedora} || 0%{?rhel} > 9 +BuildRequires: pkgconfig(Qt6Widgets) +%elif 0%{?rhel} > 7 BuildRequires: pkgconfig(Qt5Widgets) %else BuildRequires: pkgconfig(QtGui) @@ -165,13 +193,17 @@ BuildRequires: pkgconfig(QtGui) BuildRequires: desktop-file-utils %endif +BuildRequires: pkgconfig(bash-completion) +%global bash_completionsdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null || echo '%{_datadir}/bash-completion/completions') + %if %{without bootstrap} # Ensure we have our own rpm-macros in place during build. BuildRequires: %{name}-rpm-macros %endif +BuildRequires: make Requires: %{name}-data = %{version}-%{release} -Requires: %{name}-rpm-macros = %{version}-%{release} +Requires: (%{name}-rpm-macros = %{version}-%{release} if rpm-build) Requires: %{name}-filesystem%{?_isa} = %{version}-%{release} # Explicitly require make. (rhbz#1862014) @@ -200,12 +232,13 @@ generation, code generation, and template instantiation. Summary: Common data-files for %{name} Requires: %{name} = %{version}-%{release} Requires: %{name}-filesystem = %{version}-%{release} -Requires: %{name}-rpm-macros = %{version}-%{release} +Requires: (%{name}-rpm-macros = %{version}-%{release} if rpm-build) %if %{with emacs} %if 0%{?fedora} || 0%{?rhel} >= 7 Requires: emacs-filesystem%{?_emacs_version: >= %{_emacs_version}} %endif %endif +Requires: vim-filesystem BuildArch: noarch @@ -253,8 +286,29 @@ BuildArch: noarch This package contains common RPM macros for %{name}. +%package srpm-macros +Summary: Common SRPM macros for %{name} +Requires: rpm + +BuildArch: noarch + +%description srpm-macros +This package contains common SRPM macros for %{name}. + + +%package -n python3-cmake +Summary: Python metadata for packages depending on %{name} +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +BuildArch: noarch + +%description -n python3-cmake +Package provides metadata for Python packages depending on cmake. +This is to make automatic dependency resolution work. The package is NOT +using anything from the PyPI package called cmake. + + %prep -%autosetup -n %{orig_name}-%{version}%{?versuf} -p 1 +%autosetup -n %{orig_name}-%{tar_version} -p 1 %if %{with rpm} %if %{with python3} @@ -264,37 +318,61 @@ echo '#!%{__python3}' > %{name}.req echo '#!%{__python2}' > %{name}.prov echo '#!%{__python2}' > %{name}.req %endif -tail -n +2 %{SOURCE4} >> %{name}.prov -tail -n +2 %{SOURCE5} >> %{name}.req +tail -n +2 %{SOURCE5} >> %{name}.prov +tail -n +2 %{SOURCE6} >> %{name}.req %endif %build -%if 0%{?set_build_flags:1} %{set_build_flags} -%else -CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS -CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS -FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS -FCFLAGS="${FCFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FCFLAGS -%{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;} -%endif SRCDIR="$(/usr/bin/pwd)" mkdir %{_vpath_builddir} pushd %{_vpath_builddir} -$SRCDIR/bootstrap --prefix=%{_prefix} --datadir=/share/%{name} \ - --docdir=/share/doc/%{name} --mandir=/share/man \ +$SRCDIR/bootstrap --prefix=%{_prefix} \ + --datadir=/share/%{name} \ + --docdir=/share/doc/%{name} \ + --mandir=/share/man \ --%{?with_bootstrap:no-}system-libs \ - --parallel=`/usr/bin/getconf _NPROCESSORS_ONLN` \ + --parallel="$(echo %{?_smp_mflags} | sed -e 's|-j||g')" \ +%if %{with bundled_cppdap} + --no-system-cppdap \ +%endif +%if %{with bundled_rhash} + --no-system-librhash \ +%endif +%if %{with bundled_jsoncpp} + --no-system-jsoncpp \ +%endif %if %{with sphinx} --sphinx-man --sphinx-html \ %else --sphinx-build=%{_bindir}/false \ %endif --%{!?with_gui:no-}qt-gui \ -; + -- \ + -DCMAKE_C_FLAGS_RELEASE:STRING="-O2 -g -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="-O2 -g -DNDEBUG" \ + -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-O2 -g -DNDEBUG" \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DCMAKE_INSTALL_DO_STRIP:BOOL=OFF \ + -DCMake_TEST_NO_NETWORK:BOOL=ON popd -%make_build -C %{_vpath_builddir} VERBOSE=1 +%make_build -C %{_vpath_builddir} + +# Provide Python metadata +%global cmake_distinfo cmake-%{major_version}.%{minor_version}.%{patch_version}%{?rcsuf}.dist-info +mkdir %{cmake_distinfo} +cat > %{cmake_distinfo}/METADATA << EOF +Metadata-Version: 2.1 +Name: cmake +Version: %{major_version}.%{minor_version}.%{patch_version}%{?rcsuf} +Summary: %{summary} +Description-Content-Type: text/plain + +Metadata only package for automatic dependency resolution in the RPM +ecosystem. This package is separate from the PyPI package called cmake. +EOF +echo rpm > %{cmake_distinfo}/INSTALLER %install @@ -306,27 +384,24 @@ find %{buildroot}%{_datadir}/%{name}/Modules -type f | xargs chmod -x exit 1 # Install major_version name links %{!?name_suffix:for f in ccmake cmake cpack ctest; do ln -s $f %{buildroot}%{_bindir}/${f}%{major_version}; done} -# Install bash completion symlinks -mkdir -p %{buildroot}%{_datadir}/bash-completion/completions -for f in %{buildroot}%{_datadir}/%{name}/completions/* -do - ln -s ../../%{name}/completions/$(basename $f) %{buildroot}%{_datadir}/bash-completion/completions -done + %if %{with emacs} # Install emacs cmake mode -mkdir -p %{buildroot}%{_emacs_sitelispdir}/%{name} -install -p -m 0644 Auxiliary/cmake-mode.el %{buildroot}%{_emacs_sitelispdir}/%{name}/%{name}-mode.el +mkdir -p %{buildroot}%{_emacs_sitelispdir}/%{name} %{buildroot}%{_emacs_sitestartdir} +mv %{buildroot}%{_emacs_sitelispdir}/%{name}-mode.el %{buildroot}%{_emacs_sitelispdir}/%{name} %{_emacs_bytecompile} %{buildroot}%{_emacs_sitelispdir}/%{name}/%{name}-mode.el -mkdir -p %{buildroot}%{_emacs_sitestartdir} install -p -m 0644 %{SOURCE1} %{buildroot}%{_emacs_sitestartdir} +%else +rm -f %{buildroot}%{_emacs_sitelispdir} %endif # RPM macros -install -p -m0644 -D %{SOURCE2} %{buildroot}%{rpm_macros_dir}/macros.%{name} -sed -i -e "s|@@CMAKE_VERSION@@|%{version}|" -e "s|@@CMAKE_MAJOR_VERSION@@|%{major_version}|" %{buildroot}%{rpm_macros_dir}/macros.%{name} -touch -r %{SOURCE2} %{buildroot}%{rpm_macros_dir}/macros.%{name} +install -p -m0644 -D %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name} +install -p -m0644 -D %{SOURCE3} %{buildroot}%{_rpmmacrodir}/macros.aaa-%{name}-srpm +sed -i -e "s|@@CMAKE_VERSION@@|%{version}|" -e "s|@@CMAKE_MAJOR_VERSION@@|%{major_version}|" %{buildroot}%{_rpmmacrodir}/macros.%{name} +touch -r %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name} %if %{with rpm} && 0%{?_rpmconfigdir:1} # RPM auto provides -install -p -m0644 -D %{SOURCE3} %{buildroot}%{_prefix}/lib/rpm/fileattrs/%{name}.attr +install -p -m0644 -D %{SOURCE4} %{buildroot}%{_prefix}/lib/rpm/fileattrs/%{name}.attr install -p -m0755 -D %{name}.prov %{buildroot}%{_prefix}/lib/rpm/%{name}.prov install -p -m0755 -D %{name}.req %{buildroot}%{_prefix}/lib/rpm/%{name}.req %endif @@ -339,6 +414,10 @@ do dname=$(basename $dir) cp -p $f ./${fname}_${dname} done +%if %{with bundled_cppdap} +cp -p Utilities/cmcppdap/LICENSE LICENSE.cppdap +cp -p Utilities/cmcppdap/NOTICE NOTICE.cppdap +%endif # Cleanup pre-installed documentation %if %{with sphinx} mv %{buildroot}%{_docdir}/%{name}/html . @@ -410,27 +489,39 @@ find %{buildroot}%{_libdir}/%{orig_name} -type f | \ find %{buildroot}%{_bindir} -type f -or -type l -or -xtype l | \ sed -e '/.*-gui$/d' -e '/^$/d' -e 's!^%{buildroot}!"!g' -e 's!$!"!g' >> lib_files.mf +# Install Python metadata +mkdir -p %{buildroot}%{python3_sitelib} +cp -a %{cmake_distinfo} %{buildroot}%{python3_sitelib} + %if %{with test} %check -%if 0%{?rhel} && 0%{?rhel} <= 6 -mv -f Modules/FindLibArchive.cmake Modules/FindLibArchive.disabled -%endif pushd %{_vpath_builddir} -# CTestTestUpload require internet access -# CPackComponentsForAll-RPM-IgnoreGroup failing wih rpm 4.15 - https://gitlab.kitware.com/cmake/cmake/issues/19983 -NO_TEST="CTestTestUpload|CPackComponentsForAll-RPM-IgnoreGroup" -# kwsys.testProcess-{4,5} are flaky on s390x. -%ifarch s390x -NO_TEST="$NO_TEST|kwsys.testProcess-4|kwsys.testProcess-5" +# CTestTestUpload requires internet access. +NO_TEST="CTestTestUpload" +# Likely failing for hardening flags from system. +NO_TEST="$NO_TEST|CustomCommand|RunCMake.PositionIndependentCode" +# Failing for rpm 4.19 +NO_TEST="$NO_TEST|CPackComponentsForAll-RPM-default" +NO_TEST="$NO_TEST|CPackComponentsForAll-RPM-OnePackPerGroup" +NO_TEST="$NO_TEST|CPackComponentsForAll-RPM-AllInOne" +# curl test may fail during bootstrap +%if %{with bootstrap} +NO_TEST="$NO_TEST|curl" +%endif +%ifarch riscv64 +# These three tests timeout on riscv64, skip them. +NO_TEST="$NO_TEST|Qt5Autogen.ManySources|Qt5Autogen.MocInclude|Qt5Autogen.MocIncludeSymlink|Qt6Autogen.MocIncludeSymlink" +%endif +%if 0%{?fedora} == 41 +# Test failing on Fedora 41, only. +NO_TEST="$NO_TEST|RunCMake.Make|RunCMake.BuildDepends|Qt6Autogen.RerunMocBasic|Qt6Autogen.RerunRccDepends" %endif bin/ctest%{?name_suffix} %{?_smp_mflags} -V -E "$NO_TEST" --output-on-failure +## do this only periodically, not for every build -- besser82 20221102 # Keep an eye on failing tests -bin/ctest%{?name_suffix} %{?_smp_mflags} -V -R "$NO_TEST" --output-on-failure || : +#bin/ctest%{?name_suffix} %{?_smp_mflags} -V -R "$NO_TEST" --output-on-failure || : popd -%if 0%{?rhel} && 0%{?rhel} <= 6 -mv -f Modules/FindLibArchive.disabled Modules/FindLibArchive.cmake -%endif %endif @@ -438,6 +529,10 @@ mv -f Modules/FindLibArchive.disabled Modules/FindLibArchive.cmake %doc %dir %{_pkgdocdir} %license Copyright.txt* %license COPYING* +%if %{with bundled_cppdap} +%license LICENSE.cppdap +%license NOTICE.cppdap +%endif %if %{with sphinx} %{_mandir}/man1/c%{name}.1.* %{_mandir}/man1/%{name}.1.* @@ -449,7 +544,7 @@ mv -f Modules/FindLibArchive.disabled Modules/FindLibArchive.cmake %files data -f data_files.mf %{_datadir}/aclocal/%{name}.m4 -%{_datadir}/bash-completion +%{bash_completionsdir}/c* %if %{with emacs} %if 0%{?fedora} || 0%{?rhel} >= 7 %{_emacs_sitelispdir}/%{name} @@ -459,6 +554,8 @@ mv -f Modules/FindLibArchive.disabled Modules/FindLibArchive.cmake %{_emacs_sitestartdir} %endif %endif +%{vimfiles_root}/indent/%{name}.vim +%{vimfiles_root}/syntax/%{name}.vim %files doc @@ -487,34 +584,553 @@ mv -f Modules/FindLibArchive.disabled Modules/FindLibArchive.cmake %files rpm-macros -%{rpm_macros_dir}/macros.%{name} +%{_rpmmacrodir}/macros.%{name} %if %{with rpm} && 0%{?_rpmconfigdir:1} %{_rpmconfigdir}/fileattrs/%{name}.attr %{_rpmconfigdir}/%{name}.prov %{_rpmconfigdir}/%{name}.req %endif +%files srpm-macros +%{_rpmmacrodir}/macros.aaa-%{name}-srpm + + +%files -n python3-cmake +%{python3_sitelib}/%{cmake_distinfo} + %changelog -* Wed Sep 30 13:08:53 CEST 2020 Björn Esser - 3.17.4-2 -- Make %ctest non-verbose by default +* Fri Dec 12 2025 Miro Hrončok - 3.31.10-3 +- Declarative %%generate_buildrequires: Keep the BRs stable + +* Thu Dec 11 2025 Neal Gompa - 3.31.10-2 +- macros: Enable support for RPM 4.20+ declarative buildsystem feature + +* Tue Dec 02 2025 Yaakov Selkowitz - 3.31.10-1 +- Update to 3.31.10 + +* Wed Jul 23 2025 Fedora Release Engineering - 3.31.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 3.31.6-3 +- Rebuilt for Python 3.14 + +* Tue Mar 18 2025 Yaakov Selkowitz - 3.31.6-2 +- Revert to 3.31.6 +- Rebuild (jsoncpp) +- Fix build with latest curl + +* Mon Feb 24 2025 Björn Esser - 3.31.6-1 +- cmake-3.31.6 + Fixes rhbz#2347346 + +* Fri Jan 24 2025 Björn Esser - 3.31.5-1 +- cmake-3.31.5 + Fixes rhbz#2341786 + +* Thu Jan 23 2025 Orion Poplawski - 3.31.4-3 +- Define CMAKE_INSTALL_FULL_SBINDIR/CMAKE_INSTALL_SBINDIR to help with sbin + merge + +* Thu Jan 16 2025 Fedora Release Engineering - 3.31.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sun Jan 12 2025 Björn Esser - 3.31.4-1 +- cmake-3.31.4 + Fixes rhbz#2336980 + +* Sun Dec 22 2024 Björn Esser - 3.31.3-1 +- cmake-3.31.3 + Fixes rhbz#2333376 + +* Thu Dec 05 2024 Björn Esser - 3.31.2-1 +- cmake-3.31.2 + Fixes rhbz#2330603 + +* Sun Dec 01 2024 Björn Esser - 3.31.1-1 +- cmake-3.31.1 + Fixes rhbz#2324190 +- macros: Fix handling of double-dash without argument for ctest + +* Fri Nov 08 2024 Björn Esser - 3.31.0-1 +- cmake-3.31.0 + Fixes rhbz#2324190 + +* Sun Nov 03 2024 Björn Esser - 3.30.5-1 +- cmake-3.30.5 + Fixes rhbz#2262837 + +* Thu Oct 17 2024 Miro Hrončok - 3.28.3-8 +- FindPython: Add Python 3.14 to the list of hardcoded Python versions + +* Wed Jul 17 2024 Fedora Release Engineering - 3.28.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 3.28.3-6 +- Rebuilt for Python 3.13 + +* Wed May 15 2024 Sandro - 3.28.3-5 +- Add python3-cmake sub package providing metadata for Python packages + depending on CMake to facilitate automatic dependency resolution. + +* Tue Apr 23 2024 Orion Poplawski - 3.28.3-4 +- Build with gui again + +* Tue Apr 23 2024 Orion Poplawski - 3.28.3-3 +- Rebuild for rhash 1.4.4 soname bump +- Build without gui to avoid circular dep on self + +* Wed Mar 06 2024 David Abdurachmanov - 3.28.3-2 +- Disable another timeout test on riscv64 + +* Tue Feb 27 2024 Orion Poplawski - 3.28.3-1 +- Update to 3.28.3 (should fix bz#2261013) + +* Thu Feb 01 2024 Frantisek Zatloukal - 3.28.2-1 +- cmake-3.28.2 (fixes RHBZ#2261037 and RHBZ#2243343) + +* Wed Jan 24 2024 Fedora Release Engineering - 3.28.0~rc3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 3.28.0~rc3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Nov 23 2023 Florian Weimer - 3.28.0~rc3-2 +- Improve C compatibility of LoadCommand tests + +* Tue Oct 24 2023 Björn Esser - 3.28.0~rc3-1 +- cmake-3.28.0-rc3 + Fixes rhbz#2243343 + +* Thu Oct 19 2023 Björn Esser - 3.28.0~rc2-1 +- cmake-3.28.0-rc2 + Fixes rhbz#2243343 + +* Thu Oct 12 2023 Björn Esser - 3.28.0~rc1-1 +- cmake-3.28.0-rc1 + Fixes rhbz#2243343 + +* Sat Oct 07 2023 Björn Esser - 3.27.7-1 +- cmake-3.27.7 + Fixes rhbz#2242491 + +* Tue Oct 03 2023 Björn Esser - 3.27.6-2 +- Include new upstream patches + +* Wed Sep 27 2023 Björn Esser - 3.27.6-1 +- cmake-3.27.6 + Fixes rhbz#2239015, rhbz#2240311 +- Include new upstream patch + +* Fri Sep 15 2023 Björn Esser - 3.27.5-1 +- cmake-3.27.5 + Fixes rhbz#2239015 + +* Fri Sep 15 2023 Björn Esser - 3.27.4-9 +- Fix CI failure finally + +* Thu Sep 14 2023 Björn Esser - 3.27.4-8 +- Fix CI failure + +* Thu Sep 14 2023 Björn Esser - 3.27.4-7 +- Add upstream patches from milestone to cmake-3.27.5 + +* Wed Sep 06 2023 Panu Matilainen - 3.27.4-6 +- Only require cmake-rpm-macros when rpm-build is installed part II + +* Sat Sep 02 2023 Tom Stellard - 3.27.4-5 +- Convert license to SPDX + +* Fri Sep 01 2023 Björn Esser - 3.27.4-4 +- Fix outdated CI configuration + +* Thu Aug 31 2023 Panu Matilainen - 3.27.4-3 +- Only require cmake-rpm-macros when rpm-build is installed + +* Mon Aug 28 2023 Björn Esser - 3.27.4-2 +- Add upstream patch to fix linking non-builtin libatomic on some arches + +* Thu Aug 24 2023 Björn Esser - 3.27.4-1 +- cmake-3.27.4 + Fixes rhbz#2233852 + +* Thu Aug 17 2023 Björn Esser - 3.27.3-1 +- cmake-3.27.3 + Fixes rhbz#2232421 + +* Thu Aug 10 2023 Björn Esser - 3.27.2-1 +- cmake-3.27.2 + Fixes rhbz#2231131 + +* Tue Jul 25 2023 Björn Esser - 3.27.1-1 +- cmake-3.27.1 + Fixes rhbz#2226276 + +* Wed Jul 19 2023 Fedora Release Engineering - 3.27.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 18 2023 Björn Esser - 3.27.0-1 +- cmake-3.27.0 + Fixes rhbz#2223754 + +* Fri Jul 14 2023 Björn Esser - 3.27.0~rc5-1 +- cmake-3.27.0-rc5 + Fixes rhbz#2222977 + +* Thu Jul 06 2023 Björn Esser - 3.27.0~rc4-2 +- Fix FTBFS for redhat-rpm-config v260 and later +- Re-include tests that were failing with rc1 + +* Fri Jun 30 2023 Björn Esser - 3.27.0~rc4-1 +- cmake-3.27.0-rc4 + Fixes rhbz#2218941 + +* Tue Jun 20 2023 Björn Esser - 3.27.0~rc3-1 +- cmake-3.27.0-rc3 + Fixes rhbz#2214407 + +* Mon Jun 19 2023 Björn Esser - 3.27.0~rc2-2 +- Backport some upstream patches which will be included in rc3 + +* Mon Jun 12 2023 Björn Esser - 3.27.0~rc2-1 +- cmake-3.27.0-rc2 + +* Thu Jun 08 2023 Björn Esser - 3.27.0~rc1-1 +- cmake-3.27.0-rc1 +- Use CMake-provided cppdap +- Add licensing information for cppdap to packaged files if needed +- Exclude tests that started failing + +* Thu Jun 01 2023 Björn Esser - 3.26.4-4 +- Backport several bugfixes and support for Boost v1.82 from upstream + +* Sat May 27 2023 Björn Esser - 3.26.4-3 +- Rename macros.cmake -> macros.cmake.in +- macros: Fix formatting and indentation +- macros: Directly use %%set_build_flags, as it is supported since EPEL 7 +- Exclude tests that are failing for rpm 4.19 + +* Fri May 19 2023 Neal Gompa - 3.26.4-2 +- macros: Use the language build flag macros for compiler flags + +* Fri May 19 2023 Björn Esser - 3.26.4-1 +- cmake-3.26.4 + Fixes rhbz#2208383 + +* Mon May 08 2023 Björn Esser - 3.26.3-3 +- Build cmake-gui with Qt6 + +* Fri May 05 2023 Nianqing Yao - 3.26.3-2 +- Fix build on riscv64 + +* Wed Apr 05 2023 Björn Esser - 3.26.3-1 +- cmake-3.26.3 + Fixes rhbz#2184478 + +* Thu Mar 30 2023 Björn Esser - 3.26.2-1 +- cmake-3.26.2 + Fixes rhbz#2182863 + +* Thu Mar 23 2023 Björn Esser - 3.26.1-1 +- cmake-3.26.1 + Fixes rhbz#2181278 + +* Tue Mar 14 2023 Björn Esser - 3.26.0-1 +- cmake-3.26.0 + Fixes rhbz#2178221 + +* Thu Mar 09 2023 Björn Esser - 3.26.0~rc6-1 +- cmake-3.26.0-rc6 + Fixes rhbz#2176581 + +* Wed Mar 01 2023 Björn Esser - 3.26.0~rc5-1 +- cmake-3.26.0-rc5 + +* Wed Feb 22 2023 Björn Esser - 3.26.0~rc4-1 +- cmake-3.26.0-rc4 + Fixes rhbz#2172604 + +* Wed Feb 15 2023 Björn Esser - 3.26.0~rc3-1 +- cmake-3.26.0-rc3 + Fixes rhbz#2170100 + +* Thu Feb 09 2023 Björn Esser - 3.26.0~rc2-1 +- cmake-3.26.0-rc2 + Fixes rhbz#2167064 + +* Thu Jan 19 2023 Björn Esser - 3.25.2-1 +- cmake-3.25.2 + Fixes rhbz#2162459 + +* Thu Jan 19 2023 Fedora Release Engineering - 3.25.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sun Jan 15 2023 Björn Esser - 3.25.1-3 +- Backport upstream patch for Boost v1.81 support + +* Fri Jan 13 2023 Neal Gompa - 3.25.1-2 +- Adjust ctest macro to use native out-of-tree support + +* Mon Dec 05 2022 Björn Esser - 3.25.1-1 +- cmake-3.25.1 + Fixes rhbz#2149681 + +* Wed Nov 16 2022 Björn Esser - 3.25.0-1 +- cmake-3.25.0 + Fixes rhbz#2143345 + +* Wed Nov 09 2022 Björn Esser - 3.25.0-0.6.rc4 +- cmake-3.25.0-rc4 + Fixes rhbz#2141122 + +* Wed Nov 02 2022 Björn Esser - 3.25.0-0.5.rc3 +- Re-enable BundleUtilities, CMakeLib.testCTestResourceAllocator, + CMakeLib.testCTestResourceSpec, CTest.UpdateGIT, ExternalProject + during testsuite run +- Re-enable kwsys.testProcess-{4,5} on s390x + +* Wed Nov 02 2022 Björn Esser - 3.25.0-0.4.rc3 +- cmake-3.25.0-rc3 + Fixes rhbz#2062783 + +* Sun Oct 30 2022 Björn Esser - 3.25.0-0.3.rc2 +- Allow valid short arguments for %%ctest macro + Fixes rhbz#2127650 + +* Sun Oct 30 2022 Björn Esser - 3.25.0-0.2.rc2 +- Drop non-upstream CMAKE_DL_LIBS windows patch + Fixes rhbz#2127529 + +* Sat Oct 29 2022 Björn Esser - 3.25.0-0.1.rc2 +- cmake-3.25.0-rc2 + Fixes rhbz#2062783 + +* Sat Oct 29 2022 Björn Esser - 3.24.2-1 +- cmake-3.24.2 + +* Thu Aug 18 2022 Björn Esser - 3.24.1-1 +- cmake-3.24.1 + +* Fri Aug 05 2022 Leigh Scott - 3.24.0-1 +- cmake-3.24.0 + +* Fri Jul 29 2022 Leigh Scott - 3.23.3-1 +- cmake-3.23.3 + +* Wed Jul 20 2022 Fedora Release Engineering - 3.23.0-0.2.rc2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Feb 23 2022 Björn Esser - 3.23.0-0.1.rc2 +- cmake-3.23.0-rc2 + Fixes rhbz#2052100 + +* Tue Jan 25 2022 Björn Esser - 3.22.2-1 +- cmake-3.22.2 + Fixes rhbz#2045074 + +* Thu Jan 20 2022 Björn Esser - 3.22.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jan 19 2022 Björn Esser - 3.22.1-6 +- Add patch to fix compatibility of FortranCInterface with GCC gfortran 12 LTO + Fixes rhbz#2041904 +- Skip tests failing with GCC 12 + +* Sun Dec 26 2021 Björn Esser - 3.22.1-5 +- Backport two patches fixing regressions in FindBoost and FindGLUT + +* Fri Dec 17 2021 Björn Esser - 3.22.1-4 +- Backport patch to add support for Python >= 3.10 in FindBoost.cmake + +* Thu Dec 16 2021 Björn Esser - 3.22.1-3 +- Backport patch to add Boost 1.78 support + +* Thu Dec 16 2021 Tomáš Hrnčiar - 3.22.1-2 +- Backport patch to add Python 3.11 support + +* Tue Dec 07 2021 Björn Esser - 3.22.1-1 +- cmake-3.22.1 + Fixes rhbz#2029974 + +* Thu Dec 02 2021 Stephan Bergmann - 3.22.0-4 +- Fixes RPATH_CHANGE fails when shared object is a GNU ld script + +* Wed Dec 01 2021 Björn Esser - 3.22.0-3 +- Update fix for rhbz#2027118 with upstream solution + +* Sun Nov 28 2021 Björn Esser - 3.22.0-2 +- Add patch to partially revert incompatible changes in GNUInstallDirs.cmake + Fixes rhbz#2027118 + +* Thu Nov 18 2021 Rex Dieter - 3.22.0-1 +- cmake-3.22.0 (#2024712) + +* Fri Nov 12 2021 Björn Esser - 3.22.0-0.6.rc3 +- cmake-3.22.0-rc3 + Fixes rhbz#2022785 + +* Wed Nov 03 2021 Björn Esser - 3.22.0-0.5.rc2 +- Disable bootstrap build for jsoncpp + +* Wed Nov 03 2021 Björn Esser - 3.22.0-0.4.rc2 +- Rebuild (jsoncpp) + +* Thu Oct 28 2021 Björn Esser - 3.22.0-0.3.rc2 +- cmake-3.22.0-rc2 + Fixes rhbz#2018235 +- Remove debug compiler flag in macros.cmake (CMAKE_Fortran_FLAGS_RELEASE) + Fixes rhbz#2017942 + +* Thu Oct 28 2021 Björn Esser - 3.22.0-0.2.rc1 +- Revert previous changes to macros.cmake (-O2 -g) + Fixes rhbz#2017942 + +* Thu Oct 14 2021 Björn Esser - 3.22.0-0.1.rc1 +- cmake-3.22.0-rc1 + Fixes rhbz#2014190 +- Do not build non-lto objects to reduce build time significantly +- Explicitly force optimization level 2 and debuginfo for release builds + +* Mon Sep 20 2021 Björn Esser - 3.21.3-1 +- cmake-3.21.3 + Fixes rhbz#2006054 + +* Wed Aug 25 2021 Björn Esser - 3.21.2-1 +- cmake-3.21.2 + Fixes rhbz#1997708 + +* Tue Jul 27 2021 Björn Esser - 3.21.1-1 +- cmake-3.21.1 + Fixes rhbz#1986449 + +* Wed Jul 21 2021 Fedora Release Engineering - 3.21.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jul 15 2021 Björn Esser - 3.21.0-5 +- cmake-3.21.0 + +* Thu Jul 08 2021 Björn Esser - 3.21.0-4.rc3 +- cmake-3.21.0-rc3 + +* Mon Jul 05 2021 Björn Esser - 3.21.0-3.rc2 +- cmake-3.21.0-rc2 +- Drop libdl patch for glibc >= 2.34, as it is upstreamed + +* Tue Jun 29 2021 Björn Esser - 3.21.0-2.rc1 +- Rebuilt with upstreamed cmake-3.20.4-glibc_libdl.patch + +* Wed Jun 23 2021 Björn Esser - 3.21.0-1.rc1 +- cmake-3.21.0-rc1 (#1975377) + +* Mon Jun 21 2021 Björn Esser - 3.20.5-1 +- cmake-3.20.5 (#1942118) + +* Fri Jun 18 2021 Rex Dieter - 3.20.4-1 +- cmake-3.20.4 (#1942118) +- workaround libdl-related FTBFS (#1972535) + +* Sun May 30 2021 Rex Dieter - 3.20.3-1 +- cmake-3.20.3 + +* Thu Apr 29 2021 Rex Dieter - 3.20.2-1 +- cmake-3.20.2 (#1942118) +- bash-completion fixes (#1924340) +- Release build type optimization options differ from upstream package (#1751155) +- parse parallel build from %%_smp_mflags instead of _NPROCESSORS_ONLN +- drop old dist references (rhel6) + +* Mon Mar 15 2021 Rex Dieter - 3.19.7-1 +- cmake-3.19.7 + +* Thu Feb 25 2021 Rex Dieter - 3.19.6-2 +- cmake-3.19.6 + +* Sat Feb 06 2021 Rex Dieter - 3.19.4-2 +- CMake warning when searching for Boost 1.75 (#1925355) + +* Thu Jan 28 2021 Rex Dieter - 3.19.4-1 +- cmake-3.19.4 + +* Tue Jan 26 2021 Fedora Release Engineering - 3.19.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jan 13 2021 Rex Dieter - 3.19.3-1 +- cmake-3.19.3 + +* Mon Jan 11 2021 Cristian Morales Vega - 3.19.2-1 +- Update to 3.19.2 + +* Tue Dec 15 2020 Tom Stellard - 3.18.4-4 +- Update BuildRequires for eln + +* Fri Nov 20 2020 Neal Gompa - 3.18.4-3 +- Ensure CMake does not strip binaries with package builds + +* Mon Nov 09 2020 Miro Hrončok - 3.18.4-2 +- Add support for Python 3.10 + +* Tue Oct 13 2020 Björn Esser - 3.18.4-1 +- Update to 3.18.4 + +* Wed Sep 30 2020 Björn Esser - 3.18.3-1 +- Update to 3.18.3 - Explicitly require make +- Add patch to support FlexiBLAS -* Sat Aug 01 2020 Björn Esser - 3.17.4-1 -- Update to cmake-3.17.4 +* Tue Sep 29 2020 Christoph Junghans - 3.18.2-2 +- Make %%ctest non-verbose by default -* Wed Jul 29 2020 Orion Poplawski - 3.17.3-5 +* Thu Aug 20 2020 Björn Esser - 3.18.2-1 +- Update to 3.18.2 + +* Sat Aug 01 2020 Björn Esser - 3.18.1-1 +- Update to 3.18.1 + +* Wed Jul 29 2020 Orion Poplawski - 3.18.0-5 - Handle arguments for ctest3 macro -* Wed Jul 22 2020 Björn Esser - 3.17.3-4 +* Mon Jul 27 2020 Fedora Release Engineering - 3.18.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 22 2020 Björn Esser - 3.18.0-3 - Default to --verbose for ctest as well -* Sun Jul 19 2020 Neal Gompa - 3.17.3-3 +* Sun Jul 19 2020 Neal Gompa - 3.18.0-2 - Make in-source builds behave like before -* Fri Jul 03 2020 Igor Raits - 3.17.3-2 -- Add %%cmake_build/%%cmake_install/%%ctest macros -- Add %%__cmake_in_source_build macro to control in-source/out-of-source builds +* Sat Jul 18 2020 Igor Raits - 3.18.0-1.1 +- Enable out-of-source builds by default + +* Thu Jul 16 2020 Björn Esser - 3.18.0-1 +- Update to 3.18.0 + +* Sat Jul 04 2020 Björn Esser - 3.18.0-0.8.rc3 +- Update to 3.18.0-rc3 + +* Fri Jul 03 2020 Neal Gompa - 3.18.0-0.7.rc2 +- Switch to implementation that is backwards compatible to older RPM +- Change control macro for in-source/out-of-source to %%__cmake_in_source_build + +* Fri Jul 03 2020 Igor Raits - 3.18.0-0.6.rc2 +- Add out-of-source builds controlled by a macro (%%__cmake_out_of_source_build) + +* Wed Jul 01 2020 Igor Raits - 3.18.0-0.5.rc2 +- Undo out-of-source-builds + +* Tue Jun 30 2020 Tom Callaway - 3.18.0-0.4.rc2 +- fix FindLua to support lua 5.4 + +* Mon Jun 29 2020 Björn Esser - 3.18.0-0.3.rc2 +- Apply change: CMake to do out-of-source builds (#1852036) + +* Sat Jun 20 2020 Björn Esser - 3.18.0-0.2.rc2 +- Update to 3.18.0-rc2 + +* Fri Jun 12 2020 Björn Esser - 3.18.0-0.1.rc1 +- Update to 3.18.0-rc1 + +* Sat May 30 2020 Björn Esser - 3.17.3-2 +- Rebuild (jsoncpp) * Fri May 29 2020 Björn Esser - 3.17.3-1 - Update to cmake-3.17.3 diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..aaa7415 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,21 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional +baseos-ci.brew-build.tier1.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional +baseos-ci.brew-build.tier1.functional} diff --git a/macros.aaa-cmake-srpm b/macros.aaa-cmake-srpm new file mode 100644 index 0000000..e62f0fb --- /dev/null +++ b/macros.aaa-cmake-srpm @@ -0,0 +1,12 @@ +# Declarative buildsystem macros (usable with rpm >= 4.20) +# https://rpm-software-management.github.io/rpm/manual/buildsystem.html + +# When this file is installed but macros.cmake is not, +# this macro will just cause the real macros to get installed. +%cmake_generate_buildrequires(-) echo "cmake-rpm-macros" + +%buildsystem_cmake_generate_buildrequires() %cmake_generate_buildrequires %{*} +%buildsystem_cmake_conf() %{nil} +%buildsystem_cmake_build() %{nil} +%buildsystem_cmake_install() %{nil} +%buildsystem_cmake_check() %{nil} diff --git a/macros.cmake b/macros.cmake.in similarity index 55% rename from macros.cmake rename to macros.cmake.in index b8a5182..3eb0ef5 100644 --- a/macros.cmake +++ b/macros.cmake.in @@ -7,25 +7,18 @@ %_cmake_version @@CMAKE_VERSION@@ %__cmake /usr/bin/cmake %__ctest /usr/bin/ctest -%__cmake_in_source_build 1 %__cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.} + # - 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 +# 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 # - Turn on shared libraries by default %cmake \ -%if 0%{?set_build_flags:1} \ - %set_build_flags \ -%else \ - CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ - CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ - FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ; \ - FCFLAGS="${FCFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FCFLAGS ; \ - %{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;} \ -%endif \ + %{set_build_flags} \ %__cmake \\\ %{!?__cmake_in_source_build:-S "%{_vpath_srcdir}"} \\\ %{!?__cmake_in_source_build:-B "%{__cmake_builddir}"} \\\ @@ -33,7 +26,10 @@ -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} \\\ + -DCMAKE_INSTALL_FULL_SBINDIR:PATH=%{_sbindir} \\\ + -DCMAKE_INSTALL_SBINDIR:PATH=%(s=%{_sbindir}; echo ${s##*/}) \\\ -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\ -DLIB_INSTALL_DIR:PATH=%{_libdir} \\\ -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\ @@ -49,13 +45,32 @@ %cmake_install \ DESTDIR="%{buildroot}" %__cmake --install "%{__cmake_builddir}" -%ctest(:-:) \ - cd "%{__cmake_builddir}" \ - %__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} \ - cd - +%ctest(:-:h:j:u:v:A:C:D:E:F:H:I:L:M:N:O:Q:R:S:T:U:V:) \ + %__ctest --test-dir "%{__cmake_builddir}" \\\ + --output-on-failure \\\ + --force-new-ctest-process \\\ +%ifarch riscv64 \ + --timeout 6000 \\\ +%endif \ + %{?_smp_mflags} \\\ + %{lua:print((string.gsub(rpm.expand('%{**}'),"%-%-%s","")))} +# Declarative buildsystem macros (usable with rpm >= 4.20) +# https://rpm-software-management.github.io/rpm/manual/buildsystem.html +%cmake_generate_buildrequires(-) echo "cmake-rpm-macros"; echo "cmake" + +%buildsystem_cmake_generate_buildrequires() %cmake_generate_buildrequires %{*} +%buildsystem_cmake_conf() %cmake %{*} +%buildsystem_cmake_build() %cmake_build %{*} +%buildsystem_cmake_install() %cmake_install %{*} +%buildsystem_cmake_check() %{?with_ctest:%ctest %{*}} %{!?with_ctest:%{nil}} + + +# Legacy cmakeX macros for multiversioned CMake + %cmake@@CMAKE_MAJOR_VERSION@@ %cmake %cmake@@CMAKE_MAJOR_VERSION@@_build %cmake_build %cmake@@CMAKE_MAJOR_VERSION@@_install %cmake_install -%ctest@@CMAKE_MAJOR_VERSION@@(:-:) %ctest %{**} +%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 %{**} diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..85710d6 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + directory: tests +execute: + how: tmt diff --git a/sources b/sources index c14c35f..5f1214c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cmake-3.17.4.tar.gz) = 6af879502e52388f3be02a4edfb006274840ad1afa8f28ffd6ec69b0310c7f718812b2272e5f77ffa422717f61407a6d482deb95941555c21c73fc5f62356a4e +SHA512 (cmake-3.31.10.tar.gz) = ae1eed42c143b5afd70124853367dab130b3a668fd161a8fd794a44d2eb42f0a64367d152eb43edbf167ffa95612ffe10f8f18c6db9410ff473b97d4f04a978e diff --git a/tests/cmake-testsuite-sanity/Makefile b/tests/cmake-testsuite-sanity/Makefile new file mode 100644 index 0000000..1202d64 --- /dev/null +++ b/tests/cmake-testsuite-sanity/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/cmake/Sanity/cmake-testsuite-sanity +# Description: cmake testing by upstream testsuite +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/cmake/Sanity/cmake-testsuite-sanity +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE tests + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Michal Kolar " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: cmake testing by upstream testsuite" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 1h" >> $(METADATA) + @echo "RunFor: cmake" >> $(METADATA) + @echo "Requires: cmake dnf-utils rpm-build" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5 -RHEL6 -RHEL7 -RHEL8" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/cmake-testsuite-sanity/PURPOSE b/tests/cmake-testsuite-sanity/PURPOSE new file mode 100644 index 0000000..21b627e --- /dev/null +++ b/tests/cmake-testsuite-sanity/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/cmake/Sanity/cmake-testsuite-sanity +Description: cmake testing by upstream testsuite +Author: Michal Kolar diff --git a/tests/cmake-testsuite-sanity/main.fmf b/tests/cmake-testsuite-sanity/main.fmf new file mode 100644 index 0000000..298b6e2 --- /dev/null +++ b/tests/cmake-testsuite-sanity/main.fmf @@ -0,0 +1,15 @@ +summary: cmake testing by upstream testsuite +description: '' +contact: +- Michal Kolar +component: +- cmake +test: ./runtest.sh +framework: beakerlib +recommend: +- cmake +- dnf-utils +- rpm-build +duration: 1h +extra-summary: /tools/cmake/Sanity/cmake-testsuite-sanity +extra-task: /tools/cmake/Sanity/cmake-testsuite-sanity diff --git a/tests/cmake-testsuite-sanity/runtest.sh b/tests/cmake-testsuite-sanity/runtest.sh new file mode 100755 index 0000000..5753827 --- /dev/null +++ b/tests/cmake-testsuite-sanity/runtest.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/cmake/Sanity/cmake-testsuite-sanity +# Description: cmake testing by upstream testsuite +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +BUILD_USER=${BUILD_USER:-cmkbld} +TESTS_COUNT_MIN=${TESTS_COUNT_MIN:-50} +PACKAGE="cmake" +REQUIRES="$PACKAGE rpm-build" +if rlIsFedora; then + REQUIRES="$REQUIRES dnf-utils" +else + REQUIRES="$REQUIRES yum-utils" +fi +export CLICOLOR=0 + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm --all + rlRun "TmpDir=`mktemp -d`" + rlRun "cp tests $TmpDir" + rlRun "pushd $TmpDir" + rlFetchSrcForInstalled $PACKAGE + rlRun "useradd -M -N $BUILD_USER" 0,9 + [ "$?" == "0" ] && rlRun "del=yes" + rlRun "chown -R $BUILD_USER:users $TmpDir" + rlPhaseEnd + + rlPhaseStartSetup "build cmake" + rlRun "rpm -D \"_topdir $TmpDir\" -U *.src.rpm" + rlRun "dnf builddep -y $TmpDir/SPECS/*.spec" + rlRun "su -c 'rpmbuild -D \"_topdir $TmpDir\" -bp $TmpDir/SPECS/*.spec &>$TmpDir/rpmbuild.log' $BUILD_USER" + rlRun "rlFileSubmit $TmpDir/rpmbuild.log" + rlRun "BuildDir=`rpmbuild -D \"_topdir $TmpDir\" -bc --short-circuit --define '__spec_build_pre echo %{_builddir}; exit 0' $TmpDir/SPECS/*.spec | tail -1`" + rlRun "CMakeDir=`ls $BuildDir | grep -E '^cmake-[0-9]+(\.[0-9]+)+(-rc[0-9]+)?$' | tail -n 1`" + rlRun "cd $BuildDir/$CMakeDir" + rlRun "su -c './bootstrap &>$TmpDir/bootstrap.log' $BUILD_USER" + rlRun "rlFileSubmit $TmpDir/bootstrap.log" + rlRun "ln -fs /usr/bin/cmake bin/cmake" + rlRun "make exit_code" + rlPhaseEnd + + rlPhaseStartTest "run testsuite" + while read test; do + rlRun "su -c '/usr/bin/ctest -R \"$test\" &>>$TmpDir/testsuite.log' $BUILD_USER" + done <$TmpDir/tests + rlRun "rlFileSubmit $TmpDir/testsuite.log" + rlPhaseEnd + + rlPhaseStartTest "evaluate results" + rlRun "cd $TmpDir" + rlRun "grep -E '\*\*\*(F|f)ailed' testsuite.log" 1 "There should be no failure" + rlRun "tests_count=\$(grep -E 'Test #[0-9]+: .+\.\.\. (P|p)assed' testsuite.log | wc -l)" + [ "$tests_count" -ge "$TESTS_COUNT_MIN" ] && rlLogInfo "Test counter: $tests_count" || rlFail "Test counter $tests_count should be greater than or equal to $TESTS_COUNT_MIN" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + [ "$del" == "yes" ] && rlRun "userdel -f $BUILD_USER" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/cmake-testsuite-sanity/tests b/tests/cmake-testsuite-sanity/tests new file mode 100644 index 0000000..5f9ae48 --- /dev/null +++ b/tests/cmake-testsuite-sanity/tests @@ -0,0 +1,85 @@ +RunCMake.CMakeRoleGlobalProperty +RunCMake.CompilerChange +RunCMake.CompilerNotFound +RunCMake.DisallowedCommands +RunCMake.ExportCompileCommands +RunCMake.ExcludeFromAll +RunCMake.ExternalData +RunCMake.FeatureSummary +RunCMake.GeneratorInstance +RunCMake.GeneratorPlatform +RunCMake.GeneratorToolset +RunCMake.GetPrerequisites +RunCMake.GNUInstallDirs +RunCMake.Languages +RunCMake.LinkStatic +RunCMake.ParseImplicitIncludeInfo +RunCMake.ParseImplicitLinkInfo +RunCMake.ScriptMode +RunCMake.TargetObjects +RunCMake.TargetProperties +RunCMake.ToolchainFile +RunCMake.find_dependency +RunCMake.CompileDefinitions +RunCMake.PolicyScope +RunCMake.WriteBasicConfigVersionFile +RunCMake.SourceProperties +RunCMake.WorkingDirectory +RunCMake.add_custom_target +RunCMake.add_dependencies +RunCMake.add_executable +RunCMake.build_command +RunCMake.cmake_minimum_required +RunCMake.cmake_parse_arguments +RunCMake.continue +RunCMake.ctest_cmake_error +RunCMake.ctest_configure +RunCMake.ctest_coverage +RunCMake.ctest_start +RunCMake.ctest_disabled_test +RunCMake.ctest_skipped_test +RunCMake.ctest_update +RunCMake.ctest_upload +RunCMake.file-CHMOD +RunCMake.find_file +RunCMake.find_library +RunCMake.find_path +RunCMake.find_program +RunCMake.foreach +RunCMake.function +RunCMake.get_filename_component +RunCMake.get_property +RunCMake.if +RunCMake.include +RunCMake.include_directories +RunCMake.include_guard +RunCMake.load_cache +RunCMake.math +RunCMake.message +RunCMake.option +RunCMake.project_injected +RunCMake.return +RunCMake.separate_arguments +RunCMake.set_property +RunCMake.string +RunCMake.test_include_dirs +RunCMake.BundleUtilities +RunCMake.try_run +RunCMake.set +RunCMake.variable_watch +RunCMake.while +RunCMake.TargetPolicies +RunCMake.no_install_prefix +RunCMake.SymlinkTrees +RunCMake.File_Archive +RunCMake.File_Configure +RunCMake.ExportWithoutLanguage +RunCMake.target_compile_definitions +RunCMake.target_compile_options +RunCMake.target_include_directories +RunCMake.target_sources +RunCMake.CommandLineTar +RunCMake.CPackCommandLine +RunCMake.CacheNewline +RunCMake.CPackSymlinks +RunCMake.CTestCommandExpandLists