Fedora 43 changes system Python version to 3.14. Update do_cmake.sh
Tested on Fedora Rawhide as of Jan 1 2026
Ref: https://fedoraproject.org/wiki/Changes/Python3.14
Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
This change improves the CMAKE variable detection logic in do_cmake.sh
to allow users to override the CMAKE binary used for building.
Changes:
- Add conditional check to only set CMAKE if not already set
- Add detection for cmake version 4.x and later (prioritized)
- Maintain backward compatibility with cmake3 fallback
- Allow users to specify custom CMAKE path via environment variable
- Pass CMAKE_POLICY_VERSION_MINIMUM if set to submodule build steps for
older modules
This enables users to use a specific cmake binary by setting the CMAKE
environment variable before running the script:
CMAKE=/custom/path/to/cmake ./do_cmake.sh
Additionally, the script now automatically detects and uses cmake 4.x+
when available, falling back to cmake3 or cmake as needed. This supports
building Ceph with newer cmake versions while maintaining compatibility
with existing build environments.
Fixes: https://tracker.ceph.com/issues/73523
Signed-off-by: Edwin Rodriguez <edwin.rodriguez1@ibm.com>
the "official" Python shipped along with Ubuntu 24.04 (Noble Numbat) is
Python 3.12. And some of our building have been upgraded to Ubuntu
24.04. But we are still using Python 3.10 on Ubuntu >= 22, this breaks
the build. And CMake fails like:
```
CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Python3 (missing: Python3_EXECUTABLE Python3_INCLUDE_DIRS
Python3_LIBRARIES Interpreter Development Development.Module
Development.Embed) (Required is exact version "3.10")
Reason given by package:
Interpreter: Wrong version for the interpreter "/bin/python3"
Call Stack (most recent call first):
/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
cmake/modules/FindPython/Support.cmake:3863 (find_package_handle_standard_args)
cmake/modules/FindPython3.cmake:545 (include)
CMakeLists.txt:597 (find_package)
```
This build failure should also happen on developers who build Ceph on
Ubuntu >= 24.
In this change, we use Python 3.12 on Ubuntu >= 24
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
The "Building Ceph" section of README.md instructs the user to run:
ARGS="-DCMAKE_C_COMPILER=gcc-7" ./do_cmake.sh
But, very early on do_cmake.sh was doing ARGS="-GNinja", ignoring the existing
value.
Signed-off-by: Zack Cerza <zack@redhat.com>
If do_cmake.sh is being exeuted on Fedora 39 set Python version to 3.12.
Remove versions for anything earlier than Fedora 37
Signed-off-by: Brad Hubbard <bhubbard@redhat.com>
Ceph has lots of submodules that needs to be cloned before building
binaries from the repository. Seeing the progress when these submodules
are being cloned is useful, especially when developers/users have a
network issue or a slow network.
Signed-off-by: Rishabh Dave <ridave@redhat.com>
despite that we are using clang in `run-make-check.sh`, `do_cmake.sh`
is still used by some workflows like jenkins' ceph-pr-api job.
now that we've migrated to C++20, we need to use GCC-11 or up for
building the tree. GCC-11 is installed from PPA repo in
`install-deps.sh`, but to avoid interfere with the build of older
branches which do not use GCC-11, as their builds might break if
we use GCC-11 for building them. we don't use the alternative machinary
to point gcc to gcc-11, see 8f342a32ce.
so, in this change, we try to use the newest GCC in system when
running `do_cmake.sh`.
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
do_cmake.sh is called by src/script/run-make.sh in configure() function,
in src/script/run-make.sh, BOOST_J is also set if it is not set. so we
can drop the code setting BOOST_J in do_cmake.sh.
this helps to silence the cmake warning like:
CMake Warning:
Manually-specified variables were not used by the project:
BOOST_J
Signed-off-by: Kefu Chai <kchai@redhat.com>
Fedora-33 (rawhide) now has python-3.9.
Build breaks on Fedoa-33 with Traceback:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
Could NOT find Python3: Found unsuitable version "3.9.0", but required is
exact version "3.8" (found /usr/bin/python3, found components: Interpreter
Development)
Fixes: https://tracker.ceph.com/issues/47971
Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
do_cmake.sh forgets to check the arguments passed to it and ends up warning
about debug build even if a user specifies a release build.
Signed-off-by: Abutalib Aghayev <agayev@gmail.com>
Fedora-32 now has python-3.8.
Fedora-29 is EOL. All non-EOL versions of Fedora have python-3.7, except
Fedora-32
(Unclear to me why PYBUILD="3" isn't used, like Ubuntu and FreeBSD. That
would eliminate breakage when pyhon versions change in Rawhide.)
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* drop WITH_PYTHON2 option
* print warning message if WITH_PYTHON3 is disabled
* drop MGR_PYTHON_VERSION option, as we don't support use different
python version for python binding and ceph-mgr embedded python
interpreter anymore. as before switching to python3-only build,
we can build python3 and python2 python bindings, and ceph-mgr
can use either of them. but after switching to python3-only
build, ceph-mgr has to use whatever python version used to
build python binding.
* move WITH_PYTHON3 option to $top_srcdir/CMakeLists.txt, as ceph-mgr
and python binding will share this option.
* hardware ${PYTHON_VERSION} to 3
* hardware ${Python${PYTHON_VERSION}_VERSION_MAJOR} to 3
* only build boost library with python3
* s/Python_EXECUTABLE/Python3_EXECUTABLE/
* update the build scripts and packagings accordingly
* rename all cython${PYTHON_VERSION}_* targets to cython_*
* update distutils_install_module() so it does not take python_version
parameter anymore.
Signed-off-by: Kefu Chai <kchai@redhat.com>
This patch adds a new env variables that users can set to define the
location of the checked out ceph git repo.
The documentation mentions having to go edit the script directly to
point to the ceph git directory if the build dir isn't in the
top directory of the checked out git repo. This patch changes the '..'
into an env variable, CEPH_GIT_DIR, that defaults to '..'. To make it
easy to script and change.
This allows someone to do things like:
export CEPH_GIT_DIR=~/git/ceph
./do_cmake.sh
or
CEPH_GIT_DIR=~/git/ceph ./do_cmake.sh
Which is much better then editing the script directly.
The README.md has been modified to mention this variable and also
includes a drive by to mention `make -j` for new contributors to
build ceph quicker.
Signed-off-by: Matthew Oliver <moliver@suse.com>
RHEL/CentOS 8 does not offer librabbitmq-devel, libibverbs-devel and
librdmacm-devel at this moment. so disable these features now.
Signed-off-by: Kefu Chai <kchai@redhat.com>
there is chance that a distro offer a newer python3 version than the
supported one, so we need to avoid using the latest python3 version by
specifying the supported python3
Signed-off-by: Kefu Chai <kchai@redhat.com>
Without this patch, "make check" fails on SUSE systems because
WITH_RADOS_AMQP_ENDPOINT defaults to "ON".
Signed-off-by: Nathan Cutler <ncutler@suse.com>