LTO version mismatch breaks dependent package builds (rebuild required)
Description:
When building a package that depends on this one, gcc complains about a LTO version mismatch, causing the build to fail:
$ (cd _build/default && /sbin/ocamlopt.opt -g -w -24 -o .ppx/76afa9a9ea6f41e3cf2507aa1a341689/ppx.exe /usr/lib/ocaml/compiler-libs/ocamlcommon.cmxa /usr/lib/ocaml/ocaml-compiler-libs/common/ocaml_common.cmxa /usr/lib/ocaml/ppxlib/astlib/astlib.cmxa /usr/lib/ocaml/stdlib-shims/stdlib_shims.cmxa /usr/lib/ocaml/ppxlib/ast/ppxlib_ast.cmxa /usr/lib/ocaml/ocaml-compiler-libs/shadow/ocaml_shadow.cmxa /usr/lib/ocaml/ppxlib/print_diff/ppxlib_print_diff.cmxa /usr/lib/ocaml/ppx_derivers/ppx_derivers.cmxa /usr/lib/ocaml/ppxlib/traverse_builtins/ppxlib_traverse_builtins.cmxa /usr/lib/ocaml/sexplib0/sexplib0.cmxa /usr/lib/ocaml/ppxlib/stdppx/stdppx.cmxa /usr/lib/ocaml/ppxlib/ppxlib.cmxa /usr/lib/ocaml/base/base_internalhash_types/base_internalhash_types.cmxa -I /usr/lib/ocaml/base/base_internalhash_types /usr/lib/ocaml/base/caml/caml.cmxa /usr/lib/ocaml/base/shadow_stdlib/shadow_stdlib.cmxa /usr/lib/ocaml/base/base.cmxa -I /usr/lib/ocaml/base /usr/lib/ocaml/ppx_cold/ppx_cold.cmxa /usr/lib/ocaml/ppxlib/metaquot_lifters/ppxlib_metaquot_lifters.cmxa /usr/lib/ocaml/ppx_sexp_conv/expander/ppx_sexp_conv_expander.cmxa /usr/lib/ocaml/ppx_sexp_conv/ppx_sexp_conv.cmxa /usr/lib/ocaml/ppx_compare/expander/ppx_compare_expander.cmxa /usr/lib/ocaml/ppx_compare/ppx_compare.cmxa /usr/lib/ocaml/ppx_enumerate/ppx_enumerate.cmxa /usr/lib/ocaml/ppx_globalize/ppx_globalize.cmxa /usr/lib/ocaml/ppx_hash/expander/ppx_hash_expander.cmxa /usr/lib/ocaml/ppx_hash/ppx_hash.cmxa /usr/lib/ocaml/ppx_base/ppx_base.cmxa /usr/lib/ocaml/ppx_here/expander/ppx_here_expander.cmxa /usr/lib/ocaml/ppx_assert/ppx_assert.cmxa /usr/lib/ocaml/ppx_inline_test/libname/ppx_inline_test_libname.cmxa /usr/lib/ocaml/ppx_bench/ppx_bench.cmxa /usr/lib/ocaml/ppx_bin_prot/shape-expander/bin_shape_expand.cmxa /usr/lib/ocaml/ppx_bin_prot/ppx_bin_prot.cmxa /usr/lib/ocaml/ppx_custom_printf/ppx_custom_printf.cmxa /usr/lib/ocaml/ppx_disable_unused_warnings/ppx_disable_unused_warnings.cmxa /usr/lib/ocaml/ppx_fields_conv/ppx_fields_conv.cmxa /usr/lib/ocaml/ppx_fixed_literal/ppx_fixed_literal.cmxa /usr/lib/ocaml/ppx_here/ppx_here.cmxa /usr/lib/ocaml/ppx_inline_test/ppx_inline_test.cmxa /usr/lib/ocaml/ppx_let/expander/ppx_let_expander.cmxa /usr/lib/ocaml/ppx_let/ppx_let.cmxa /usr/lib/ocaml/ppx_module_timer/ppx_module_timer.cmxa /usr/lib/ocaml/ppx_optional/ppx_optional.cmxa /usr/lib/ocaml/ppx_pipebang/ppx_pipebang.cmxa /usr/lib/ocaml/ppx_sexp_message/expander/ppx_sexp_message_expander.cmxa /usr/lib/ocaml/ppx_sexp_message/ppx_sexp_message.cmxa /usr/lib/ocaml/ppx_sexp_value/ppx_sexp_value.cmxa /usr/lib/ocaml/ppx_stable_witness/ppx_stable_witness.cmxa /usr/lib/ocaml/ppx_sexp_conv/runtime-lib/ppx_sexp_conv_lib.cmxa /usr/lib/ocaml/ppx_compare/runtime-lib/ppx_compare_lib.cmxa /usr/lib/ocaml/ppx_enumerate/runtime-lib/ppx_enumerate_lib.cmxa /usr/lib/ocaml/ppx_hash/runtime-lib/ppx_hash_lib.cmxa /usr/lib/ocaml/ppx_string/ppx_string.cmxa /usr/lib/ocaml/ppx_tydi/ppx_tydi.cmxa /usr/lib/ocaml/ppx_typerep_conv/ppx_typerep_conv.cmxa /usr/lib/ocaml/ppx_variants_conv/ppx_variants_conv.cmxa /usr/lib/ocaml/ppx_ignore_instrumentation/ppx_ignore_instrumentation.cmxa kernel/src/ppx_jane_kernel.cmxa .ppx/76afa9a9ea6f41e3cf2507aa1a341689/dune__exe___ppx.cmx)
lto1: fatal error: bytecode stream in file ‘/usr/lib/ocaml/base/libbase_stubs.a’ generated with LTO version 13.0 instead of the expected 13.1
compilation terminated.
lto-wrapper: fatal error: gcc returned 1 exit status
compilation terminated.
/sbin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
Rebuilding ocaml-base manually fixes this and enables the build of the dependent package to go through.
Additional info:
$ pacman -Q ocaml ocaml-base gcc
ocaml 5.1.1-1
ocaml-base 0.16.3-3
gcc 13.2.1-6
Steps to reproduce:
- Try to build ocaml-ppx_jane from the AUR
- Observe the build failure
- Rebuild ocaml-base manually
- Try to rebuild ocaml-ppx_jane from the AUR
- Observe the build success
Edited by Daniel Peukert