name: sdk-linux-so-sync description: Sync A8 SDK deliveries into project sdk directories. Compare shared libraries from a release sdk/linux directory into project sdk/linux directories by SHA256, require an explicit version for every updated .so, recreate symlinks, delete old versioned payloads for updated libraries, copy the release sdk/x64 contents into each target sdk/win64 directory, and verify the final linux and win64 contents match the release package. Use when updating cpp-demo/sdk and cpp-unit-testing/sdk from a delivered SDK package.
SDK Linux SO Sync
Use this skill when a new A8 SDK delivery updates files under sdk/linux and sdk/x64 and you need to sync them into this repository.
Workflow
- Use the bundled script
scripts/sync_sdk_linux_so.sh. - Always pass the release directory with
--reference /path/to/sdk/linux. - Run
--check-onlyfirst to confirm which logical*.sofiles changed. - For every changed library, provide an explicit
--set-version libname.so=version. - Run the real update.
- Verify the logical symlink points to
libname.so.<version>in each targetsdk/linuxdirectory. - Verify the target
sdk/linuxlogical libraries match the releasesdk/linux. - Verify the target
sdk/win64files match the releasesdk/x64.
Rules
- The reference directory is the source of truth.
- Compare the SHA256 of the real payload file, not only the symlink name.
- Every updated
*.somust have an explicit version suffix. Do not guess or omit it. - After updating a library in a target directory, delete older versioned payload files for that same library and keep only:
libname.solibname.so.<new-version>
- Derive the release Windows source directory as the sibling
x64/directory next to the passedsdk/linuxreference directory. - For every target
sdk/linuxdirectory, derive the Windows target as its siblingsdk/win64directory. - Copy all files from the release
sdk/x64directory into each targetsdk/win64directory, overwriting files with the same name. - After syncing, verify each target
sdk/linuxlogical*.soentry matches the releasesdk/linuxby SHA256 of the real payload file. - After syncing, verify each target
sdk/win64file matches the releasesdk/x64by relative path and SHA256. - Fail the run if linux or win64 verification finds a mismatch or missing file.
- Ignore these delivered-but-unused libraries unless the user explicitly asks otherwise:
libhare_socket_efvi.solibhare_socket_exanic.solibhare_socket_instanta.solibhare_socket_rdma.solibhare_socket_td.so
Commands
Check only:
scripts/sync_sdk_linux_so.sh \
--reference /home/fxy/citics-workflow/tmp/a8clientsdk_install_c++_2.1.20/sdk/linux \
--check-only
Update with explicit versions:
scripts/sync_sdk_linux_so.sh \
--reference /home/fxy/citics-workflow/tmp/a8clientsdk_install_c++_2.1.20/sdk/linux \
--set-version liba8clientsdk.so=2.1.20 \
--set-version libhare_socket.so=1.0.2 \
--set-version libhare_socket_normal.so=1.0.2
Notes
- Default targets are
cpp-demo/sdk/linuxandcpp-unit-testing/sdk/linuxwhen they exist under the current working directory. - If a changed library is missing a
--set-version, the script exits with an error instead of prompting. - If the release directory contains plain
.sofiles instead of versioned symlinks, that is fine. The version still comes from the explicit--set-versionvalues. - When
--referenceis/path/to/sdk/linux, the script will also use/path/to/sdk/x64as the Windows source directory when that directory exists. - The verification step checks only release files against target files. It does not delete extra unrelated files under
win64.