microsoft / microsoft/vcpkg

Binary caching cannot cross host

Open
#30,716 9 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

category:community-triplet
Dominant language
CMake
Stars
27.5k
Forks
7.7k
Avg merge
2d 19h
Merged PRs (30d)
321

Description

The triplet arm64-android-dynamic for testing.

set(VCPKG_CMAKE_SYSTEM_NAME Android)
set(VCPKG_CMAKE_SYSTEM_VERSION 24)
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_BUILD_TYPE release)
set(VCPKG_DISABLE_COMPILER_TRACKING ON)
set(VCPKG_C_FLAGS -s)
set(VCPKG_CXX_FLAGS -s)

It produces exactly same binary libsqlite3.so (same sha1) on Windows and Linux. But the two vcpkg_abi_info.txt are not same.

sqlite3 vcpkg_abi_info.txt on Linux
CMakeLists.txt c04c434a9550cc4f172e7a27500006cdef77b3d785b6c2a6e9b4d534293dd5ee
add-config-include.patch 11bd0e576cd75a7b87051a6af453f4fb32f1137d69b0710b9023158d366087b4
cmake 3.26.2
features core
fix-arm-uwp.patch f4397f84d931cccb44a038194c895e28c749f1825ab45db4b5dccd6e3b6b5967
portfile.cmake 898df7e2dee3446b3369c098e91d01a672a6e410fd731fd5d408cfc3a2d7d3ce
ports.cmake 47a3510fcec56fae26f4fb082afd972a70a04e26efa73e2de69123139500f02d
post_build_checks 2
sqlite3-config.in.cmake 7a44f5805ced746c4dcb497055bce06e45eb3ecb3506465fcde4d442a2179d96
sqlite3-vcpkg-config.h.in 2e5fd3bd5cf891e948516f911cc20412c414839598c9c19fbf9ffb65fd2a1643
sqlite3.pc.in 7d0eef3b49bc8c7fbb6a06b449855060ab5d9b4ab37d1781a0269dda8421a391
triplet arm64-android-dynamic
triplet_abi 54c15dc848f2118cb2e6ae9a5de541ab89f1bc26089412c06c410e243edb342e-4e1baa1a21b183d2ac6a852af84a3b06964cba5ea439fc3efdf9c47faf774189
usage 1cd1a4fe57d9caf51321f363f1d395074ac7d0c14b7035a5d2c218670be4b5b3
vcpkg-cmake d665dc8bb5dada261b51133b5f577f64ecedbd6dda5ab6881c00111e2ef0072f
vcpkg-cmake-config 051b0c262bcca4636d54b92bbeb63ec9d03a41295c3909cd6241425e052ede6a
vcpkg.json 6396727956f98b0a1c0dae40c6b7df9def7858e21975656cd4e0e2c7ed3fa371
vcpkg_check_features 3cdc889b7e6965ad5ddab803060aed2019c0177b6f314c7a5a947c01efa4db60
vcpkg_copy_pdbs d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c
vcpkg_download_distfile 2d57e1336ae9daab2f04c0623217094b026080d19bdca3a92396d68ea3e729c7
vcpkg_extract_source_archive a25e0132b36c30e9675f934042fb1164128864eeefa064ab8eabb1eb347aa381
vcpkg_fixup_pkgconfig 588d833ff057d3ca99c14616c7ecfb5948b5e2a9e4fc02517dceb8b803473457
sqlite3 vcpkg_abi_info.txt on Windows
CMakeLists.txt c04c434a9550cc4f172e7a27500006cdef77b3d785b6c2a6e9b4d534293dd5ee
add-config-include.patch 11bd0e576cd75a7b87051a6af453f4fb32f1137d69b0710b9023158d366087b4
cmake 3.26.2
features core
fix-arm-uwp.patch f4397f84d931cccb44a038194c895e28c749f1825ab45db4b5dccd6e3b6b5967
portfile.cmake 898df7e2dee3446b3369c098e91d01a672a6e410fd731fd5d408cfc3a2d7d3ce
ports.cmake 47a3510fcec56fae26f4fb082afd972a70a04e26efa73e2de69123139500f02d
post_build_checks 2
powershell 7.3.3
sqlite3-config.in.cmake 7a44f5805ced746c4dcb497055bce06e45eb3ecb3506465fcde4d442a2179d96
sqlite3-vcpkg-config.h.in 2e5fd3bd5cf891e948516f911cc20412c414839598c9c19fbf9ffb65fd2a1643
sqlite3.pc.in 7d0eef3b49bc8c7fbb6a06b449855060ab5d9b4ab37d1781a0269dda8421a391
triplet arm64-android-dynamic
triplet_abi 54c15dc848f2118cb2e6ae9a5de541ab89f1bc26089412c06c410e243edb342e-4e1baa1a21b183d2ac6a852af84a3b06964cba5ea439fc3efdf9c47faf774189
usage 1cd1a4fe57d9caf51321f363f1d395074ac7d0c14b7035a5d2c218670be4b5b3
vcpkg-cmake 458529b8fa343f7cc05966d710a660abe75f6bb5a8af0b8f017ccb8caac33339
vcpkg-cmake-config 3c2c9d3921efa04d262efa1ea137c4de1d404d994f1ad70e00d910a93ecf37e6
vcpkg.json 6396727956f98b0a1c0dae40c6b7df9def7858e21975656cd4e0e2c7ed3fa371
vcpkg_check_features 3cdc889b7e6965ad5ddab803060aed2019c0177b6f314c7a5a947c01efa4db60
vcpkg_copy_pdbs d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c
vcpkg_download_distfile 2d57e1336ae9daab2f04c0623217094b026080d19bdca3a92396d68ea3e729c7
vcpkg_extract_source_archive a25e0132b36c30e9675f934042fb1164128864eeefa064ab8eabb1eb347aa381
vcpkg_fixup_pkgconfig 588d833ff057d3ca99c14616c7ecfb5948b5e2a9e4fc02517dceb8b803473457

The first issue is that vcpkg_abi_info.txt on Windows contains powershell version.

The second issue is that vcpkg-cmake is a host dependency and it's vcpkg_abi_info.txt contains the host triplet information. This means that all package ABIs indirectly contain host infomation even we are cross-compiling.

vcpkg-cmake vcpkg_abi_info.txt on Linux
cmake 3.26.2
features core
portfile.cmake a711531b7f13b7da16fa1f25d7c5737a423d4a126465dc9e6689a0f043fcc1aa
ports.cmake 47a3510fcec56fae26f4fb082afd972a70a04e26efa73e2de69123139500f02d
post_build_checks 2
triplet x64-linux-dynamic
triplet_abi c94625e2b7091a6dfd70d5f606db688b255b19a34b70a4bd7a12bb5d230af8eb-8483608216601f5eb6d401f81f364008853b8e98a0ea3bebd6dc1e55e1e3edbb
vcpkg-port-config.cmake f0a30f77c8f5e3ac40436fe2518a61ad067f2955c7ef3be6d6a0ca4b81cd2a45
vcpkg.json df51210b477280bd0d98d51977bf94e3a2d539a9d7153cbab797b5dc03af48e3
vcpkg_add_to_path 5f5ae75cf37b2a58d1a8561ca96496b64cd91ec9a0afab0b976c3e5d59030bfe
vcpkg_cmake_build.cmake 6d1c27080fe3e768b5e7b968d6a28a37db154ebcb214297de25f10b6713511e1
vcpkg_cmake_configure.cmake 7175c1125b9ab851623861f1867d5c266a242fa3dd735f88dea76ecfa50ac0f2
vcpkg_cmake_install.cmake 3ae7886dc8434fac6f1e61190cc355fdec5fbd4f60758e2de20423cf49c91369
vcpkg_configure_cmake ac8c9920c3ea9613615144c771fe797013d5dc8cc03a25d97c92e167a692af24
vcpkg_execute_build_process 4145b3b23fcc2dd94a0fe3c818b63fcea40854e5aa94d08dc83ddcc09727cedf
vcpkg_execute_required_process 0c6f52ca848715efd88acfec9bdb2ed3b5f38a650baa6a614bf23ccc3eec150a
vcpkg_find_acquire_program fdd8d8e0bf5217df8f40239e826c6f37c0c052ee2024c265a5916e8f7eef4107
vcpkg_list f5de3ebcbc40a4db90622ade9aca918e2cf404dc0d91342fcde457d730e6fa29
vcpkg-cmake vcpkg_abi_info.txt on Windows
cmake 3.26.2
features core
portfile.cmake a711531b7f13b7da16fa1f25d7c5737a423d4a126465dc9e6689a0f043fcc1aa
ports.cmake 47a3510fcec56fae26f4fb082afd972a70a04e26efa73e2de69123139500f02d
post_build_checks 2
powershell 7.3.3
triplet x64-windows
triplet_abi 4556164a2cd3dd6f4742101eabb46def7e71b6e5856faa88e5d005aac12a803c-2b9f5a18de013332e7068fafe850651fd91434ba2a08aae552b8565a2236f81b
vcpkg-port-config.cmake f0a30f77c8f5e3ac40436fe2518a61ad067f2955c7ef3be6d6a0ca4b81cd2a45
vcpkg.json df51210b477280bd0d98d51977bf94e3a2d539a9d7153cbab797b5dc03af48e3
vcpkg_add_to_path 5f5ae75cf37b2a58d1a8561ca96496b64cd91ec9a0afab0b976c3e5d59030bfe
vcpkg_cmake_build.cmake 6d1c27080fe3e768b5e7b968d6a28a37db154ebcb214297de25f10b6713511e1
vcpkg_cmake_configure.cmake 7175c1125b9ab851623861f1867d5c266a242fa3dd735f88dea76ecfa50ac0f2
vcpkg_cmake_install.cmake 3ae7886dc8434fac6f1e61190cc355fdec5fbd4f60758e2de20423cf49c91369
vcpkg_configure_cmake ac8c9920c3ea9613615144c771fe797013d5dc8cc03a25d97c92e167a692af24
vcpkg_execute_build_process 4145b3b23fcc2dd94a0fe3c818b63fcea40854e5aa94d08dc83ddcc09727cedf
vcpkg_execute_required_process 0c6f52ca848715efd88acfec9bdb2ed3b5f38a650baa6a614bf23ccc3eec150a
vcpkg_find_acquire_program fdd8d8e0bf5217df8f40239e826c6f37c0c052ee2024c265a5916e8f7eef4107
vcpkg_list f5de3ebcbc40a4db90622ade9aca918e2cf404dc0d91342fcde457d730e6fa29

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the generated vcpkg_abi_info.txt files for arm64-android-dynamic and the host vcpkg-cmake dependency, focusing on powershell and host triplet data. Done means equivalent target binaries can share cache entries across Windows and Linux without host-only information changing their ABI metadata.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cmake
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.