Open andrea-cassioli-maersk opened 4 days ago
Hi @andrea-cassioli-maersk
Thanks for reporting. This is a bit unexpected, we do builds with Apple armv8 architecture in ConanCenter, not sure what would be the issue, or how it passed.
I don't have a Mac to test, I am going to ask for help to @franramirez688.
@memsharded let me know if you need more information. Btw, could it help if protobuf were to depend on the latest abseil?
I've tried to reproduce this issue in a similar configuration, and I'm able to compile abseil without issue:
thanks @AbrilRBS here what I get
➜ XXXXXXX git:(DSCT-2631-pb-2-files-are-from-different-version) ✗ conan install --requires="protobuf/5.27.0" -b="abseil/*" -u
Using lockfile: '/Users/XXXXXXX/workspace/DST-Network-Design/conan.lock'
======== Input profiles ========
Profile host:
[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.cppstd=gnu17
compiler.libcxx=libc++
compiler.version=14
os=Macos
Profile build:
[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.cppstd=gnu17
compiler.libcxx=libc++
compiler.version=14
os=Macos
======== Computing dependency graph ========
protobuf/5.27.0: Checking remote: conancenter
zlib/1.3.1: Checking remote: conancenter
abseil/20240116.2: Checking remote: conancenter
Graph root
cli
Requirements
abseil/20240116.2#54f81a20ccd26a6558e18d57059847e2 - Cache (conancenter)
protobuf/5.27.0#ccce9aa25886556c6d66c77b2be4d806 - Cache (conancenter)
zlib/1.3.1#f52e03ae3d251dec704634230cd806a2 - Cache (conancenter)
======== Computing necessary packages ========
abseil/20240116.2: Forced build from source
zlib/1.3.1: WARN: Can't update, no package in remote
protobuf/5.27.0: Main binary package 'fc002b7f4063b4c1e456597347cce63f955b604b' missing
protobuf/5.27.0: Checking 7 compatible configurations
protobuf/5.27.0: '40f3ff84a0e99985a352262f7464e678a5ed82bd': compiler.cppstd=14
protobuf/5.27.0: '457c99dda9a0ac534f8f7717f8fe7cff68dad400': compiler.cppstd=gnu14
protobuf/5.27.0: '0940dec530dae2498b3965997bad1f7aa9e0c246': compiler.cppstd=17
protobuf/5.27.0: 'c921298dbbfb76af5b422b5f2b56bc57c55e77d3': compiler.cppstd=20
protobuf/5.27.0: '9b1f403f0f83fd68b257602559608f80a0debcb0': compiler.cppstd=gnu20
protobuf/5.27.0: 'e379cf95d508155196e0de6d0c266ddc4c9ca2c1': compiler.cppstd=23
protobuf/5.27.0: 'be021411e5bbcc8872712d9f3f970bc949e08ca1': compiler.cppstd=gnu23
Requirements
abseil/20240116.2#54f81a20ccd26a6558e18d57059847e2:c8791fc52b59bf6c9813a10e89216b6956010ac6 - Build
protobuf/5.27.0#ccce9aa25886556c6d66c77b2be4d806:fc002b7f4063b4c1e456597347cce63f955b604b - Missing
zlib/1.3.1#f52e03ae3d251dec704634230cd806a2:76f7d863f21b130b4e6527af3b1d430f7f8edbea#88e9f67800dbd456d90f8fb3452950ae - Cache
ERROR: Missing binary: protobuf/5.27.0:fc002b7f4063b4c1e456597347cce63f955b604b
protobuf/5.27.0: WARN: Can't find a 'protobuf/5.27.0' package binary 'fc002b7f4063b4c1e456597347cce63f955b604b' for the configuration:
[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.cppstd=gnu17
compiler.libcxx=libc++
compiler.version=14
os=Macos
[options]
debug_suffix=True
fPIC=True
lite=False
shared=False
upb=False
with_rtti=True
with_zlib=True
[requires]
abseil/20240116.2.Z
zlib/1.3.Z
ERROR: Missing prebuilt package for 'protobuf/5.27.0'. You can try:
- List all available packages using 'conan list "protobuf/5.27.0:*" -r=remote'
- Explain missing binaries: replace 'conan install ...' with 'conan graph explain ...'
- Try to build locally from sources using the '--build=protobuf/5.27.0' argument
More Info at 'https://docs.conan.io/2/knowledge/faq.html#error-missing-prebuilt-package'
Could you run the same command with -b=missing
instead of -b=abseil/*
? This way Conan will try to also compile the missing protobuf binary instead of expecting it to be already available, thanks!
Sure, here we go
======== Input profiles ========
Profile host:
[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.cppstd=gnu17
compiler.libcxx=libc++
compiler.version=14
os=Macos
Profile build:
[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.cppstd=gnu17
compiler.libcxx=libc++
compiler.version=14
os=Macos
======== Computing dependency graph ========
protobuf/5.27.0: Checking remote: conancenter
zlib/1.3.1: Checking remote: conancenter
abseil/20240116.2: Checking remote: conancenter
Graph root
cli
Requirements
abseil/20240116.2#54f81a20ccd26a6558e18d57059847e2 - Cache (conancenter)
protobuf/5.27.0#ccce9aa25886556c6d66c77b2be4d806 - Cache (conancenter)
zlib/1.3.1#f52e03ae3d251dec704634230cd806a2 - Cache (conancenter)
======== Computing necessary packages ========
abseil/20240116.2: Main binary package 'c8791fc52b59bf6c9813a10e89216b6956010ac6' missing
abseil/20240116.2: Checking 7 compatible configurations
abseil/20240116.2: '90a555152d21c66463dc701dd297c3af47bac623': compiler.cppstd=14
abseil/20240116.2: '0d270b5dac29309f151cf159d6bddd4cf5c00dc5': compiler.cppstd=gnu14
abseil/20240116.2: 'd8b3817cfaed643e7901be467919a05da49a8b19': compiler.cppstd=17
abseil/20240116.2: '21d04ad180ea8842f07b01f01a04a78bc24aad99': compiler.cppstd=20
abseil/20240116.2: '4344b4ebd9c54e1e855ca7c364db39a9e2894367': compiler.cppstd=gnu20
abseil/20240116.2: '8a0506305326ddba14b20dcf51c3a232d86b7a94': compiler.cppstd=23
abseil/20240116.2: '1b473d9753578ecc0934373083b2516edaeb68a2': compiler.cppstd=gnu23
zlib/1.3.1: WARN: Can't update, no package in remote
protobuf/5.27.0: Main binary package 'fc002b7f4063b4c1e456597347cce63f955b604b' missing
protobuf/5.27.0: Checking 7 compatible configurations
protobuf/5.27.0: '40f3ff84a0e99985a352262f7464e678a5ed82bd': compiler.cppstd=14
protobuf/5.27.0: '457c99dda9a0ac534f8f7717f8fe7cff68dad400': compiler.cppstd=gnu14
protobuf/5.27.0: '0940dec530dae2498b3965997bad1f7aa9e0c246': compiler.cppstd=17
protobuf/5.27.0: 'c921298dbbfb76af5b422b5f2b56bc57c55e77d3': compiler.cppstd=20
protobuf/5.27.0: '9b1f403f0f83fd68b257602559608f80a0debcb0': compiler.cppstd=gnu20
protobuf/5.27.0: 'e379cf95d508155196e0de6d0c266ddc4c9ca2c1': compiler.cppstd=23
protobuf/5.27.0: 'be021411e5bbcc8872712d9f3f970bc949e08ca1': compiler.cppstd=gnu23
Requirements
abseil/20240116.2#54f81a20ccd26a6558e18d57059847e2:c8791fc52b59bf6c9813a10e89216b6956010ac6 - Build
protobuf/5.27.0#ccce9aa25886556c6d66c77b2be4d806:fc002b7f4063b4c1e456597347cce63f955b604b - Build
zlib/1.3.1#f52e03ae3d251dec704634230cd806a2:76f7d863f21b130b4e6527af3b1d430f7f8edbea#88e9f67800dbd456d90f8fb3452950ae - Cache
======== Installing packages ========
-------- Installing package abseil/20240116.2 (1 of 3) --------
abseil/20240116.2: Building from source
abseil/20240116.2: Package abseil/20240116.2:c8791fc52b59bf6c9813a10e89216b6956010ac6
abseil/20240116.2: Copying sources to build folder
abseil/20240116.2: Building your package in /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b
abseil/20240116.2: Calling generate()
abseil/20240116.2: Generators folder: /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release/generators
abseil/20240116.2: CMakeToolchain generated: conan_toolchain.cmake
abseil/20240116.2: CMakeToolchain generated: /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release/generators/CMakePresets.json
abseil/20240116.2: CMakeToolchain generated: /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/src/CMakeUserPresets.json
abseil/20240116.2: Generating aggregated env files
abseil/20240116.2: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh']
abseil/20240116.2: Calling build()
abseil/20240116.2: Apply patch (portability): link libm to absl string
abseil/20240116.2: Apply patch (portability): Fix GCC 7 including <filesystem> in C++17 mode when it is not available (until GCC 8)
abseil/20240116.2: Apply patch (portability): Do not build test_allocator target when tests are disabled
abseil/20240116.2: Running CMake.configure()
abseil/20240116.2: RUN: cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/Users/andreacassioli/.conan2/p/b/absei32b2567f27808/p" -DCMAKE_POLICY_DEFAULT_CMP0067="NEW" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/src"
-- Using Conan toolchain: /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release/generators/conan_toolchain.cmake
-- Conan toolchain: Setting CMAKE_POSITION_INDEPENDENT_CODE=ON (options.fPIC)
-- Conan toolchain: Defining libcxx as C++ flags: -stdlib=libc++
-- Conan toolchain: C++ Standard 17 with extensions ON
-- Conan toolchain: Setting BUILD_SHARED_LIBS = OFF
-- The CXX compiler identification is Clang 18.1.8
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/homebrew/opt/llvm@18/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX17
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX17 - Success
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX20
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX20 - Failed
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test USE_STD_STRING_VIEW
-- Performing Test USE_STD_STRING_VIEW - Success
-- Performing Test USE_STD_ANY
-- Performing Test USE_STD_ANY - Success
-- Performing Test USE_STD_OPTIONAL
-- Performing Test USE_STD_OPTIONAL - Success
-- Performing Test USE_STD_VARIANT
-- Performing Test USE_STD_VARIANT - Success
-- Configuring done (2.5s)
-- Generating done (0.4s)
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_POLICY_DEFAULT_CMP0067
-- Build files have been written to: /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release
abseil/20240116.2: Running CMake.build()
abseil/20240116.2: RUN: cmake --build "/Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release" -- -j8
[ 0%] Building CXX object absl/base/CMakeFiles/log_severity.dir/log_severity.cc.o
[ 0%] Building CXX object absl/profiling/CMakeFiles/exponential_biased.dir/internal/exponential_biased.cc.o
[ 1%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_fixed.cc.o
[ 1%] Building CXX object absl/base/CMakeFiles/spinlock_wait.dir/internal/spinlock_wait.cc.o
[ 2%] Building CXX object absl/time/CMakeFiles/civil_time.dir/internal/cctz/src/civil_time_detail.cc.o
[ 2%] Building CXX object absl/base/CMakeFiles/strerror.dir/internal/strerror.cc.o
[ 3%] Building CXX object absl/debugging/CMakeFiles/leak_check.dir/leak_check.cc.o
[ 4%] Building CXX object absl/numeric/CMakeFiles/int128.dir/int128.cc.o
[ 4%] Linking CXX static library libabsl_leak_check.a
[ 4%] Built target leak_check
[ 5%] Building CXX object absl/flags/CMakeFiles/flags_commandlineflag_internal.dir/internal/commandlineflag.cc.o
[ 6%] Linking CXX static library libabsl_spinlock_wait.a
[ 6%] Linking CXX static library libabsl_flags_commandlineflag_internal.a
[ 6%] Built target spinlock_wait
[ 7%] Building CXX object absl/log/CMakeFiles/log_internal_nullguard.dir/internal/nullguard.cc.o
[ 7%] Built target flags_commandlineflag_internal
[ 7%] Linking CXX static library libabsl_exponential_biased.a
[ 7%] Building CXX object absl/random/CMakeFiles/random_seed_gen_exception.dir/seed_gen_exception.cc.o
[ 7%] Built target exponential_biased
[ 7%] Building CXX object absl/random/CMakeFiles/random_internal_platform.dir/internal/randen_round_keys.cc.o
[ 8%] Linking CXX static library libabsl_strerror.a
[ 9%] Linking CXX static library libabsl_random_internal_platform.a
[ 9%] Built target strerror
[ 9%] Built target random_internal_platform
[ 9%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_format.cc.o
[ 10%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_if.cc.o
[ 10%] Linking CXX static library libabsl_log_internal_nullguard.a
[ 10%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_impl.cc.o
[ 11%] Linking CXX static library libabsl_log_severity.a
[ 11%] Built target log_internal_nullguard
[ 12%] Building CXX object absl/profiling/CMakeFiles/periodic_sampler.dir/internal/periodic_sampler.cc.o
[ 12%] Built target log_severity
[ 13%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_info.cc.o
[ 13%] Linking CXX static library libabsl_civil_time.a
[ 13%] Linking CXX static library libabsl_int128.a
[ 13%] Linking CXX static library libabsl_periodic_sampler.a
[ 13%] Built target civil_time
[ 13%] Built target int128
[ 14%] Building CXX object absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/internal/randen_hwaes.cc.o
[ 14%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_libc.cc.o
[ 14%] Built target periodic_sampler
clang++: error: unsupported option '-msse4.1' for target 'arm64-apple-darwin23.6.0'
make[2]: *** [absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/internal/randen_hwaes.cc.o] Error 1
make[1]: *** [absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 14%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_lookup.cc.o
[ 14%] Building CXX object absl/random/CMakeFiles/random_internal_randen_slow.dir/internal/randen_slow.cc.o
[ 14%] Linking CXX static library libabsl_random_seed_gen_exception.a
[ 14%] Built target random_seed_gen_exception
[ 15%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/time_zone_posix.cc.o
[ 15%] Building CXX object absl/time/CMakeFiles/time_zone.dir/internal/cctz/src/zone_info_source.cc.o
[ 16%] Linking CXX static library libabsl_random_internal_randen_slow.a
[ 16%] Built target random_internal_randen_slow
[ 17%] Linking CXX static library libabsl_time_zone.a
[ 17%] Built target time_zone
make: *** [all] Error 2
abseil/20240116.2: ERROR:
Package 'c8791fc52b59bf6c9813a10e89216b6956010ac6' build failed
abseil/20240116.2: WARN: Build folder /Users/andreacassioli/.conan2/p/b/absei32b2567f27808/b/build/Release
ERROR: abseil/20240116.2: Error in build() method, line 127
cmake.build()
ConanException: Error 2 while executing
it is definitely abseil.
Hi @andrea-cassioli-maersk -
I believe your issue is that CMake is finding the clang compiler from LLVM
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/homebrew/opt/llvm@18/bin/clang++ - skipped
while your Conan profiles are specifying apple-clang
version 14. I can confirm that with apple-clang 14 the package builds correctly.
The issue is that that particular file - and only that file!- appears to be compiled with x86_64 flags because it appears its being built with universal support (arm64 and x86_64) - and apple-clang has support for that, but maybe your llvm clang 18 isn't built with this support (it's unclear).
Looking at the build scripts there's a small chance there's an issue in the upstream project - I'll double check.
this is an issue stemming from the uptream project, where this file is being explicitly built with multiple architectures where supported
https://github.com/abseil/abseil-cpp/blob/master/absl/copts/AbseilConfigureCopts.cmake#L13-L47
but it does not build with llvm-clang 18 as provided by Homebrew .
We can probably patch this in Conan Center, however it's worth reporting this to abseil - I'm unsure if it's a case of the llvm build itself, from what I can see in homebrew, it does support multiple targets - but I'm not entirely sure.
You may have better luck actually asking Conan to enforce the compiler, it depends on whether you explicitly want to use homebrew's or not.
OK, thanks @jcar87 for the deep analysis!
If you could patch it in Conan would be great.
As for reporting upstream, I am not sure I can push the issue myself. Will you do it?
Describe the bug
I have bumped the
protobuf
version to the latest (5.27.0
) and this seems to trigger a dependency onabseil/20240116.2
, forcing a build from source.The build however fails with the message:
In my understanding
'-msse4.1'
is an intel specific option that hsould not be used running on Apple silicon and building on clang.Some more from the logs
How to reproduce it
No response