Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions ceph-dev-cron/config/definitions/ceph-dev-cron.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
DISTROS=noble jammy centos9 windows
# build tentacle on:
# default: noble jammy centos9 windows
# crimson: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
regex: .*tentacle.*
Expand All @@ -98,12 +98,11 @@
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-debug
FLAVOR=debug
ARCHS=x86_64
# build main on:
# default: noble jammy centos9 windows
# crimson-debug: centos9
# crimson-release: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
regex: .*main.*
Expand All @@ -125,14 +124,7 @@
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-debug
ARCHS=x86_64
- project: 'ceph-dev'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-release
FLAVOR=debug
ARCHS=x86_64

wrappers:
Expand Down
11 changes: 11 additions & 0 deletions ceph-dev-new-setup/build/build
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,17 @@ else
printf 'No cmake debug options added to branch %s.\n' "$BRANCH"
fi

# Tentacle is the last release that needs dedicated Crimson builds,
# Later releases are able to use Crimson with the default build.
# As the "Crimson flavor" is no longer available, we need a *temporary* way
# to be able build Crimson for tentacle.
# Note: This could be removed once Crimson we have Umbrella release builds.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will still need to be able to build Tentacle until upgrade testing from T to V is no longer necessary (probably when V is EOL).

Copy link
Copy Markdown
Contributor Author

@Matan-B Matan-B Dec 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is only true for Crimson. We only build the last stable release (and main) as there's no upgrade testing/support yet. Starting U we will probably start working on upgradability. We still break on-disk data structures from time to time as we are still flexible with this - the plan is to stop with this approach starting U.
This is why we should be able to remove this bit once U is out as Crimson will no longer be supported in T at all. I'll mention this in this comment to avoid confusion.

if [[ "$BRANCH" == *-crimson-tentacle ]]; then
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's have -<suffix> only be -debug otherwise you can't have both of these?

Alternatively: why not just turn these switches on unconditionally for tentacle?

Copy link
Copy Markdown
Contributor Author

@Matan-B Matan-B Dec 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's have - only be -debug otherwise you can't have both of these?

I guess the -debug suffix could be removed with the new "debug" flavor introduced. @batrick, WDYT?

I'll try moving this logic to git trailers instead of branch name suffix

Alternatively: why not just turn these switches on unconditionally for tentacle?

Unless I misunderstand the suggestion, this way every Tentacle build will be with Crimson enabled. We only want to be able to enable Crimson with tentacle iff specifically needed for some reason.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's have - only be -debug otherwise you can't have both of these?

I guess the -debug suffix could be removed with the new "debug" flavor introduced. @batrick, WDYT?

Ah, I missed that. That sounds even better!

I'll try moving this logic to git trailers instead of branch name suffix

That would be great. I've tried to make it easier to build branches with these new git trailers here:

https://github.com/ceph/ceph/blob/2e87714b94a9e16c764ef6f97de50aecf1b0c41e/src/script/ptl-tool.py#L604-L605

Please give it a try! Maybe you can submit a change for the new git trailer?

Alternatively: why not just turn these switches on unconditionally for tentacle?

Unless I misunderstand the suggestion, this way every Tentacle build will be with Crimson enabled. We only want to be able to enable Crimson with tentacle iff specifically needed for some reason.

Got it, nevermind.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@batrick Are these suggestions 'nice to haves' or must haves? I think CentOS9 builds are blocked by this PR not being merged.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice to haves

CEPH_EXTRA_RPMBUILD_ARGS="--with crimson"
CEPH_EXTRA_CMAKE_ARGS+=" -DWITH_CRIMSON=true"
printf 'Added Crimson Tentacle cmake configs to branch %s. CEPH_EXTRA_CMAKE_ARGS: %s\n' "$BRANCH" "$CEPH_EXTRA_CMAKE_ARGS"
fi

ceph_build_args_from_flavor ${FLAVOR}

mkdir -p release
Expand Down
34 changes: 6 additions & 28 deletions ceph-dev-new-trigger/config/definitions/ceph-dev-new-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
DISTROS=noble jammy centos9 windows
# build tentacle on:
# default: noble jammy centos9 windows
# crimson: centos9
# debug: centos9
- conditional-step:
condition-kind: regex-match
regex: .*tentacle.*
Expand All @@ -90,14 +90,14 @@
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-debug
FLAVOR=debug
ARCHS=x86_64
# If no release name is found in branch, build on all possible distro/flavor combos (except xenial, bionic, focal).
# regex matching and 'on-evaluation-failure: run' doesn't work here so triple negative it is.
- conditional-step:
condition-kind: shell
condition-command: |
echo "${{GIT_BRANCH}}" | grep -v '\(reef\|squid\|tentacle\|centos9-only\|crimson-only\)'
echo "${{GIT_BRANCH}}" | grep -v '\(reef\|squid\|tentacle\|centos9-only\)'
on-evaluation-failure: dont-run
steps:
- shell:
Expand All @@ -116,9 +116,9 @@
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-debug
FLAVOR=debug
ARCHS=x86_64
# build only centos9, no crimson
# build only centos9, default and debug
- conditional-step:
condition-kind: regex-match
regex: .*centos9-only.*
Expand All @@ -136,35 +136,13 @@
FORCE=True
DISTROS=centos9
ARCHS=x86_64
# Build only the `crimson` flavour, don't waste resources on the default one.
# Useful for the crimson's bug-hunt at Sepia
# crimson-debug: centos9
# crimson-release: centos9
- conditional-step:
condition-kind: regex-match
regex: .*crimson-only.*
label: '${{GIT_BRANCH}}'
on-evaluation-failure: dont-run
steps:
- shell:
!include-raw-verbatim:
- ../../../scripts/build_utils.sh
- ../../build/notify
- trigger-builds:
- project: 'ceph-dev-new'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-debug
ARCHS=x86_64
- trigger-builds:
- project: 'ceph-dev-new'
predefined-parameters: |
BRANCH=${{GIT_BRANCH}}
FORCE=True
DISTROS=centos9
FLAVOR=crimson-release
FLAVOR=debug
ARCHS=x86_64
# sccache
- conditional-step:
Expand Down
5 changes: 2 additions & 3 deletions ceph-dev-new/config/definitions/ceph-dev-new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,9 @@
name: FLAVOR
choices:
- default
- crimson-debug
- crimson-release
- debug
default: "default"
description: "Type of Ceph build, choices are: crimson-debug, crimson-release, default. Defaults to: 'default'"
description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"

- string:
name: CI_CONTAINER
Expand Down
16 changes: 5 additions & 11 deletions ceph-dev-pipeline/build/Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -200,15 +200,15 @@ pipeline {
}
axes {
name 'FLAVOR'
values 'default', 'crimson-release', 'crimson-debug'
values 'default', 'debug'
}
}
// crimson is only supported on centos9 x86_64
// debug flavor is currently only supported on centos9 x86_64
excludes {
exclude {
axis {
name 'FLAVOR'
values 'crimson-release', 'crimson-debug'
values 'debug'
}
axis {
name 'DIST'
Expand All @@ -218,7 +218,7 @@ pipeline {
exclude {
axis {
name 'FLAVOR'
values 'crimson-release', 'crimson-debug'
values 'debug'
}
axis {
name 'ARCH'
Expand Down Expand Up @@ -377,7 +377,6 @@ pipeline {
sh """#!/bin/bash
set -ex
echo > .env
[[ $FLAVOR == crimson* ]] && echo "WITH_CRIMSON=true" >> .env || true
cd dist/ceph
python3 src/script/build-with-container.py --env-file=${env.WORKSPACE}/.env --image-repo=${env.CEPH_BUILDER_IMAGE} --tag=${ceph_builder_tag} --image-variant=packages -d ${DIST} -e build-container
podman tag ${env.CEPH_BUILDER_IMAGE}:${ceph_builder_tag} ${env.CEPH_BUILDER_IMAGE}:${ceph_builder_tag_short}
Expand Down Expand Up @@ -449,13 +448,9 @@ pipeline {
ceph_extra_cmake_args += " -DWITH_STATIC_LIBSTDCXX=ON"
}
break
case "crimson-debug":
deb_build_profiles = "pkg.ceph.crimson"
case "debug":
ceph_extra_cmake_args += " -DCMAKE_BUILD_TYPE=Debug"
break
case "crimson-release":
deb_build_profiles = "pkg.ceph.crimson";
break
default:
println "FLAVOR=${env.FLAVOR} is invalid"
assert false
Expand All @@ -477,7 +472,6 @@ pipeline {
if ( env.SCCACHE == "true" ) rpmbuild_args += " -R--with=sccache"
if ( env.DWZ == "false" ) rpmbuild_args += " -R--without=dwz"
if ( env.FLAVOR == "default" ) rpmbuild_args += " -R--with=tcmalloc"
if ( env.FLAVOR.startsWith("crimson") ) rpmbuild_args += " -R--with=crimson"
bwc_command = "${bwc_command}${rpmbuild_args} -e rpm"
} else if ( env.DIST =~ /suse|sles/ ) {
throw new Exception("bwc not implemented for ${env.DIST}")
Expand Down
7 changes: 3 additions & 4 deletions ceph-dev-pipeline/config/definitions/ceph-dev-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

- string:
name: FLAVORS
description: "A list of flavors to build. Available options are: default, crimson-release, crimson-debug"
description: "A list of flavors to build. Available options are: default, debug"
default: "default"

- bool:
Expand All @@ -68,10 +68,9 @@
name: FLAVOR
choices:
- default
- crimson-debug
- crimson-release
- debug
default: "default"
description: "Type of Ceph build, choices are: crimson-debug, crimson-release, default. Defaults to: 'default'"
description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"

- bool:
name: CI_CONTAINER
Expand Down
5 changes: 2 additions & 3 deletions ceph-dev/config/definitions/ceph-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,9 @@ If this is checked, then the binaries will be built and pushed to chacra even if
name: FLAVOR
choices:
- default
- crimson-debug
- crimson-release
- debug
default: "default"
description: "Type of Ceph build, choices are: crimson-debug, crimson-release, default. Defaults to: 'default'"
description: "Type of Ceph build, choices are: default, debug. Defaults to: 'default'"

- bool:
name: CI_CONTAINER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
break
fi
done
if test {osd-flavor} = "crimson-release" ; then
if test {osd-flavor} = "crimson" ; then
export WITH_CRIMSON=true
# TODO use clang-10 on ubuntu/focal
timeout 7200 src/script/run-make.sh \
Expand Down Expand Up @@ -246,8 +246,7 @@
- project:
name: ceph-perf
osd-flavor:
Comment thread
Matan-B marked this conversation as resolved.
- crimson-debug
- crimson-release
- classic
- crimson
jobs:
- ceph-perf-{osd-flavor}
2 changes: 1 addition & 1 deletion ceph-trigger-build/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This pipeline's role is to:
|CEPH-BUILD-JOB|Which Jenkins job to trigger. Only ceph-dev-pipeline supports the options below.|ceph-dev-pipeline, ceph-dev-new|`ceph-dev-pipeline`|
|DISTROS|Space-sparated list of Linux distributions to build for|focal, jammy, noble, centos9, windows|Depends on keywords in branch name|
|ARCHS|Space-separated list of architectures to build on|x86_64, arm64|`x86_64 arm64`|
|FLAVORS|Crimson or non-Crimson|default, crimson-debug, crimson-release|`default`|
|FLAVORS|default or debug|default, debug|`default`|
|CI-COMPILE|Compile binaries and packages[^1]|Boolean|`true`|
|CI-CONTAINER|Build a dev container using the packages built|Boolean|`true`|
|DWZ|Use [DWZ](https://sourceware.org/dwz/) to make debuginfo packages smaller|Boolean|`true` when using ceph-dev-new<br>`false` when using ceph-dev-pipeline[^2]|
Expand Down
17 changes: 6 additions & 11 deletions ceph-trigger-build/build/Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,34 +58,29 @@ def params_from_branch(initialParams) {
params << params[0].clone()
params[-1]['ARCHS'] = 'x86_64'
params[-1]['DISTROS'] = 'centos9'
params[-1]['FLAVOR'] = 'crimson-debug'
params[-1]['FLAVOR'] = 'debug'
} else {
params[0]['ARCHS'] += ' arm64'
params[0]['FLAVOR'] += ' crimson-debug'
params[0]['FLAVOR'] += ' debug'
}
break
case ~/.*centos9-only.*/:
params[0]['DISTROS'] = 'centos9'
break
case ~/.*crimson-only.*/:
params[0]['ARCHS'] = 'x86_64'
params[0]['DISTROS'] = 'centos9'
if ( !singleSet ) {
params << params[0].clone()
params[0]['FLAVOR'] = 'crimson-debug'
params[1]['FLAVOR'] = 'crimson-release'
params[0]['FLAVOR'] = 'debug'
} else {
params[0]['FLAVOR'] = 'crimson-debug crimson-release'
params[0]['FLAVOR'] += ' debug'
}
break
default:
if ( !singleSet ) {
params << params[0].clone()
params[-1]['ARCHS'] = 'x86_64'
params[-1]['DISTROS'] = 'centos9'
params[-1]['FLAVOR'] = 'crimson-debug'
params[-1]['FLAVOR'] = 'debug'
} else {
params[0]['FLAVOR'] += ' crimson-debug'
params[0]['FLAVOR'] += ' debug'
}
}
if ( singleSet ) {
Expand Down
27 changes: 2 additions & 25 deletions scripts/build_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -884,15 +884,9 @@ ceph_build_args_from_flavor() {
CEPH_EXTRA_CMAKE_ARGS+=" -DWITH_SYSTEM_BOOST=OFF -DWITH_BOOST_VALGRIND=ON"
DEB_BUILD_PROFILES=""
;;
crimson-debug)
CEPH_EXTRA_RPMBUILD_ARGS="--with crimson"
DEB_BUILD_PROFILES="pkg.ceph.crimson"
debug)
CEPH_EXTRA_CMAKE_ARGS+=" -DCMAKE_BUILD_TYPE=Debug"
;;
crimson-release)
CEPH_EXTRA_RPMBUILD_ARGS="--with crimson"
DEB_BUILD_PROFILES="pkg.ceph.crimson"
;;
*)
echo "unknown FLAVOR: ${FLAVOR}" >&2
exit 1
Expand Down Expand Up @@ -1038,14 +1032,7 @@ EOF

extra_cmake_args() {
# statically link against libstdc++ for building new releases on old distros
if [ "${FLAVOR}" = "crimson-debug" ] || [ "${FLAVOR}" = "crimson-release" ] ; then
# seastar's exception hack assums dynamic linkage against libgcc. as
# otherwise _Unwind_RaiseException will conflict with its counterpart
# defined in libgcc_eh.a, when the linker comes into play. and more
# importantly, _Unwind_RaiseException() in seastar will not be able
# to call the one implemented by GCC.
echo "-DWITH_STATIC_LIBSTDCXX=OFF"
elif use_ppa; then
if use_ppa; then
echo "-DWITH_STATIC_LIBSTDCXX=ON"
fi
}
Expand Down Expand Up @@ -1499,16 +1486,6 @@ setup_rpm_build_deps() {

sed -e 's/@//g' < ceph.spec.in > $DIR/ceph.spec

# enable more build depends required by build flavor(crimson)
case "${FLAVOR}" in
crimson-debug)
sed -i -e 's/%bcond_with crimson/%bcond_without crimson/g' $DIR/ceph.spec
;;
crimson-release)
sed -i -e 's/%bcond_with crimson/%bcond_without crimson/g' $DIR/ceph.spec
;;
esac

# Make sure we have all the rpm macros installed and at the latest version
# before installing the dependencies, python3-devel requires the
# python-rpm-macro we use for identifying the python related dependencies
Expand Down