Skip to content

change in libcxx does not cause recompilation of abseil #180128

@planetmarshall

Description

@planetmarshall

Summary

A change in the libcxx configuration does not cause a recompilation of abseil

Expected behaviour

A change in any of the libcxx configuration files should result in a recompilation of anything downstream that depends on it.

Actual behaviour

The abseil library does not recompile, which results in linking errors if libcxx is changed, eg:

FAILED: [code=1] shader_archiver exe.unstripped/shader_archiver 
../../flutter/buildtools/linux-x64/clang/bin/clang++ -Wl,--fatal-warnings -m64 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -pthread -Wl,--undefined-version --sysroot=../../build/linux/debian_bullseye_amd64-sysroot  -Wl,-rpath=\$ORIGIN/ -Wl,-rpath-link= -Wl,--disable-new-dtags  -o ./exe.unstripped/shader_archiver -Wl,--build-id=sha1 -Wl,--start-group @./shader_archiver.rsp  -Wl,--end-group  -ldl  && ../../flutter/buildtools/linux-x64/clang/bin/llvm-objcopy --strip-all ./exe.unstripped/shader_archiver ./shader_archiver
ld.lld: error: undefined symbol: std::_fl::chrono::steady_clock::now()
>>> referenced by kernel_timeout.cc:43 (out/host_debug_unopt/../../third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc:43)
>>>               obj/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout_internal.kernel_timeout.o:(absl::synchronization_internal::KernelTimeout::SteadyClockNow())

Steps to reproduce.

  1. Build the engine on Linux
  2. Edit engine/src/flutter/build/secondary/flutter/third_party/libcxx/config/__config_site as follows -
- #define _LIBCPP_ABI_NAMESPACE _fl
+ #define _LIBCPP_ABI_NAMESPACE __fl
  1. rebuild the engine with ninja, eg
ninja -C engine/src/out/host_debug_unopt

Workaround

Delete the output folder and perform a complete rebuild from scratch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listengineflutter/engine related. See also e: labels.team-engineOwned by Engine teamtriaged-engineTriaged by Engine teamworkaround availableThere is a workaround available to overcome the issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions