[
https://issues.apache.org/jira/browse/THRIFT-6186?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jens Geyer updated THRIFT-6186:
-------------------------------
Description:
lib/erl itself compiles on OTP 29, but {{make -C lib/erl check}} cannot get as
far as running a test, because the eunit-only {{meck}} dependency does not
compile there.
rebar.config pins it in the test profile:
{code}
{profiles, [
{test, [
{deps, [{meck, "0.9.2"}]},
{code}
meck 0.9.2 compiles with warnings treated as errors, and {{catch ...}} became
deprecated in OTP 29:
{code}
===> Fetching meck v0.9.2
===> Compiling meck
===> Compiling _build/test/lib/meck/src/meck_matcher.erl failed
/-- _build/test/lib/meck/src/meck_matcher.erl:
|
76 | (catch erlang:apply(hamcrest, assert_that, [Value, HamcrestMatcher])) ==
true;
| \-- 'catch ...' is deprecated; please use 'try ... catch ... end'
instead.
Compile directive 'nowarn_deprecated_catch' can be used to suppress warnings in
selected modules.
{code}
Verified on a clean ubuntu:24.04 with the prebuilt OTP 29.0.6 build from
builds.hex.pm. 25.3.2.9, 26.2.5.21, 27.3.4.17 and 28.5.0.6 all give 349 tests
and 0 failures on the same tree, so this is specific to 29.
Worth noting that lib/erl's own sources use the same deprecated construct in
several places -- thrift_sslsocket_transport, thrift_reconnecting_client and
thrift_socket_server among them. Those are warnings rather than errors because
the project does not set warnings_as_errors, so they do not block the build
today, but they are the same cleanup and could reasonably be done in the same
pass.
Options, roughly in order of preference:
# Raise the meck pin. 1.0.0 is current and compiles on 29.
# Keep 0.9.2 and add {{nowarn_deprecated_catch}} for the dependency, which is
awkward to do cleanly for a hex dep.
The CI job added in THRIFT-6171 covers 25.3, 26.2, 27.3 and 28.5 and
deliberately leaves 29 out, with a comment in the matrix pointing here. Once
this is fixed, 29 should be added to that matrix.
----
Investigated and written with AI assistance (Claude Opus 5). The build failures
quoted above were reproduced by hand in clean containers.
was:
lib/erl itself compiles on OTP 29, but {{make -C lib/erl check}} cannot get as
far as running a test, because the eunit-only {{meck}} dependency does not
compile there.
rebar.config pins it in the test profile:
{code}
{profiles, [
{test, [
{deps, [{meck, "0.9.2"}]},
{code}
meck 0.9.2 compiles with warnings treated as errors, and {{catch ...}} became
deprecated in OTP 29:
{code}
===> Fetching meck v0.9.2
===> Compiling meck
===> Compiling _build/test/lib/meck/src/meck_matcher.erl failed
/-- _build/test/lib/meck/src/meck_matcher.erl:
|
76 | (catch erlang:apply(hamcrest, assert_that, [Value, HamcrestMatcher])) ==
true;
| \-- 'catch ...' is deprecated; please use 'try ... catch ... end'
instead.
Compile directive 'nowarn_deprecated_catch' can be used to suppress warnings in
selected modules.
{code}
Verified on a clean ubuntu:24.04 with the prebuilt OTP 29.0.6 build from
builds.hex.pm. 25.3.2.9, 26.2.5.21, 27.3.4.17 and 28.5.0.6 all give 349 tests
and 0 failures on the same tree, so this is specific to 29.
Worth noting that lib/erl's own sources use the same deprecated construct in
several places -- thrift_sslsocket_transport, thrift_reconnecting_client and
thrift_socket_server among them. Those are warnings rather than errors because
the project does not set warnings_as_errors, so they do not block the build
today, but they are the same cleanup and could reasonably be done in the same
pass.
Options, roughly in order of preference:
# Raise the meck pin. 1.0.0 is current and compiles on 29.
# Keep 0.9.2 and add {{nowarn_deprecated_catch}} for the dependency, which is
awkward to do cleanly for a hex dep.
The CI job added in THRIFT-6171 covers 25.3, 26.2, 27.3 and 28.5 and
deliberately leaves 29 out, with a comment in the matrix pointing here. Once
this is fixed, 29 should be added to that matrix.
> lib/erl eunit tests cannot run on OTP 29: the pinned meck 0.9.2 does not
> compile
> --------------------------------------------------------------------------------
>
> Key: THRIFT-6186
> URL: https://issues.apache.org/jira/browse/THRIFT-6186
> Project: Thrift
> Issue Type: Bug
> Components: Build Process, Erlang - Library
> Reporter: Jens Geyer
> Priority: Major
>
> lib/erl itself compiles on OTP 29, but {{make -C lib/erl check}} cannot get
> as far as running a test, because the eunit-only {{meck}} dependency does not
> compile there.
> rebar.config pins it in the test profile:
> {code}
> {profiles, [
> {test, [
> {deps, [{meck, "0.9.2"}]},
> {code}
> meck 0.9.2 compiles with warnings treated as errors, and {{catch ...}} became
> deprecated in OTP 29:
> {code}
> ===> Fetching meck v0.9.2
> ===> Compiling meck
> ===> Compiling _build/test/lib/meck/src/meck_matcher.erl failed
> /-- _build/test/lib/meck/src/meck_matcher.erl:
> |
> 76 | (catch erlang:apply(hamcrest, assert_that, [Value, HamcrestMatcher]))
> == true;
> | \-- 'catch ...' is deprecated; please use 'try ... catch ... end'
> instead.
> Compile directive 'nowarn_deprecated_catch' can be used to suppress warnings
> in selected modules.
> {code}
> Verified on a clean ubuntu:24.04 with the prebuilt OTP 29.0.6 build from
> builds.hex.pm. 25.3.2.9, 26.2.5.21, 27.3.4.17 and 28.5.0.6 all give 349 tests
> and 0 failures on the same tree, so this is specific to 29.
> Worth noting that lib/erl's own sources use the same deprecated construct in
> several places -- thrift_sslsocket_transport, thrift_reconnecting_client and
> thrift_socket_server among them. Those are warnings rather than errors
> because the project does not set warnings_as_errors, so they do not block the
> build today, but they are the same cleanup and could reasonably be done in
> the same pass.
> Options, roughly in order of preference:
> # Raise the meck pin. 1.0.0 is current and compiles on 29.
> # Keep 0.9.2 and add {{nowarn_deprecated_catch}} for the dependency, which is
> awkward to do cleanly for a hex dep.
> The CI job added in THRIFT-6171 covers 25.3, 26.2, 27.3 and 28.5 and
> deliberately leaves 29 out, with a comment in the matrix pointing here. Once
> this is fixed, 29 should be added to that matrix.
> ----
> Investigated and written with AI assistance (Claude Opus 5). The build
> failures quoted above were reproduced by hand in clean containers.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)