Skip to content

CHEF-37251: Update Erlang/OTP 26.2.5.21 -> 29.1.2 - #4252

Draft
lbakerchef wants to merge 7 commits into
mainfrom
CHEF-37251/lbaker
Draft

lbakerchef wants to merge 7 commits into
mainfrom
CHEF-37251/lbaker

Conversation

@lbakerchef

@lbakerchef lbakerchef commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Jira: CHEF-37251

Draft: not ready to merge. This branch only moves the Erlang version pins. chef-server does not compile on OTP 29 yet, and CI is expected to fail until the fixes under "Still to do" land.

Changes

  • require_otp_vsn 29.1.2 for oc_erchef, bookshelf and oc_bifrost
  • scripts/bk_tests/bk_install.sh and .expeditor/license_scout.sh: install Erlang 29.1.2 via asdf
  • Habitat plans for bookshelf, oc_bifrost and oc_erchef: core/erlang26 -> core/erlang29
  • chef-server-ctl notice: erlang 26.2.5.14 -> 29.1.2

Depends on

Still to do before merge (OTP 29 build breakers)

  • mochiweb: maybe is a reserved word from OTP 27. Update the lock to current upstream.
  • iso8601 1.2.3 (bookshelf): maybe type. Bump to 1.3.4 or later.
  • chef_license_worker.erl: deprecated catch Expr, which OTP 29 warns about (fatal under warnings_as_errors).
  • oc_chef_authz_cleanup.erl: gen_fsm callbacks are deprecated.
  • erlware_commons, mini_s3, ibrowse and sqerl (chef forks), prometheus and automeck: new OTP 29 warnings.
  • pc 1.8.0 rebar3 plugin (oc_bifrost): bump to 1.15.0.
  • Bundled rebar3 3.23.0 supports OTP 25-27 only. Bump to 3.27.x.

After the omnibus-software-private PR merges

Same steps as the last Erlang bump (chef/chef-server-omnibus-config#24, #4216):

  1. chef-server-omnibus-config: run bundle update omnibus-software so Gemfile.lock points at the merged main SHA, then open and merge that PR.
  2. Here: advance the omnibus submodule to that omnibus-config main HEAD.

Until then, omnibus builds of this branch still ship OTP 26.2.5.21. The adhoc build below overrides omnibus-software to test 29.1.2.

Testing

lbakerchef and others added 6 commits October 15, 2026 17:09
- require_otp_vsn 29.1.2 for oc_erchef, bookshelf and oc_bifrost
- bk_tests and license_scout: install Erlang 29.1.2 via asdf
- bookshelf and oc_bifrost habitat plans: core/erlang26 -> core/erlang29

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
- oc_erchef habitat plan: core/erlang26 -> core/erlang29, matching
  bookshelf and oc_bifrost
- chef-server-ctl notice: erlang 26.2.5.14 -> 29.1.2

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
rebar3 3.23.0 was compiled with OTP 24 and cannot load under OTP 29. rebar3 3.28.0 supports OTP 29 and includes CVE fixes introduced in 3.27.x.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pin the bookshelf and oc_erchef configurations and all three services' lockfiles to the upstream v1.2.0 commit, 3486bff5884e6db44f033a09f2b98dfd9e60d57e. This includes meck PR #260, which replaces the bare catch expression rejected by OTP 29 builds with warnings-as-errors. Remove the obsolete OTP 24 pinning comment.

Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
oc_erchef builds with warnings_as_errors. Under OTP 29:
- chef_license_worker: replace old-style catch with equivalent try.
- oc_chef_data_collector: stop exporting Code out of a case subexpression.
- oc_chef_authz_cleanup: also suppress deprecated gen_fsm callback warnings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
- mochiweb: lock v3.4.0 (OTP 29 support; quotes reserved 'maybe').
- iso8601: 1.2.3 -> 1.3.4 (unquoted maybe() type is a hard error).
- erlware_commons, ibrowse, mini_s3, sqerl: move to chef fork branches
  CHEF-37251/lbaker with OTP 29 warning fixes.
- prometheus: add nowarn_deprecated_catch via rebar3 override.
- oc_bifrost: pc plugin 1.8.0 -> 1.15.0 (code:lib_dir/2 deprecation).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
chef-server-ctl test limited PATH to embedded/bin and bin, which hides
basic utilities such as dirname. OTP 29's erl script needs dirname, so
the pedant reindex test hung. Append /usr/sbin, /usr/bin, /sbin and /bin
after the embedded paths so embedded tools still take precedence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant