Skip to content

Main sync - #116

Merged
henriqueaklein merged 67 commits into
mainfrom
develop
Sep 15, 2026
Merged

henriqueaklein merged 67 commits into
mainfrom
develop

Conversation

@henriqueaklein

Copy link
Copy Markdown
Contributor

No description provided.

EduMenges and others added 30 commits July 8, 2026 10:29
Fixed ASAN reports in `ipfs-pubsub` and `libp2p`
Fixed MNN and `wallet-core` warnings
…nned git submodules

- shaderc pinned at v2024.3 (ff84893) — GLSL->SPIR-V compilation, matches Vulkan-1.3-targeting
  release line consistent with this project's pinned Vulkan-Headers/Loader ~1.3.302
- SPIRV-Tools pinned at 01c8438e — the exact commit shaderc's own DEPS file references for its
  v2024.3 tag (NOT shaderc main's current DEPS, which has since moved to a665e21f) — vendored as
  a separate, directly-linkable dependency so spvtools::SpirvTools::Validate() is callable
  without reaching into shaderc's internal, non-exported build tree
- SPIRV-Headers pinned at 2a9b6f95 — same shaderc-v2024.3-DEPS-file cross-check, required
  transitive dependency of the standalone SPIRV-Tools build
- shaderc's own nested glslang/spirv-tools/spirv-headers/etc. third_party/ deps are gclient-style
  (DEPS file + ./utils/git-sync-deps script), not git submodules, and are gitignored inside
  shaderc's own repo — populated via git-sync-deps for shaderc's own internal build, never
  committed anywhere
…d vendoring + IMPORTED targets

Adds shaderc::shaderc and SPIRV-Tools::SPIRV-Tools CMake targets to CommonTargets.cmake,
following the existing Vulkan-Headers/Vulkan-Loader/vk-bootstrap ExternalProject_Add
convention, with the deviations a real local build+install spike confirmed are required:

- SPIRV-Tools DOES install a CMake package config by default, but the exported target is
  the bare, non-namespaced SPIRV-Tools-static/-shared (the upstream SPIRV-Tools ALIAS is
  build-tree-only, never exported) -- resolved via find_package(SPIRV-Tools CONFIG) +
  an ALIAS to the project-controlled SPIRV-Tools::SPIRV-Tools name, with a hand-rolled
  IMPORTED fallback if the installed config is ever unavailable.
- shaderc installs no CMake package config at all (confirmed via the same spike, matching
  github.com/google/shaderc/issues/1369 and github.com/microsoft/vcpkg/issues/23208) --
  hand-written IMPORTED target against the confirmed-real installed libshaderc_combined.a.

Verified via an actual local configure+build+install of all three ExternalProject_Add
targets (MinGW GCC 13.2.0/Ninja, the toolchain available in this environment) plus a
standalone consumer executable that links both shaderc::shaderc and SPIRV-Tools::SPIRV-Tools,
compiles a trivial GLSL fragment shader to SPIR-V via shaderc, and validates the result via
spvtools::SpirvTools::Validate() -- both targets configure, build, link, and the compile+
validate round-trip is functionally correct end-to-end.
…RTED targets

The hand-written IMPORTED targets hardcoded .a extensions with a "lib"
prefix (libshaderc_combined.a, libSPIRV-Tools.a) -- GCC/MinGW static-lib
naming. Under this project's real MSVC/VS2022 generator the actual files
are shaderc_combined.lib / SPIRV-Tools.lib (no prefix, .lib suffix), so
the hardcoded path silently failed to find the built libraries. Switched
to CMAKE_STATIC_LIBRARY_PREFIX/SUFFIX, which resolve correctly per
toolchain. Confirmed by an actual rebuild against the real Windows/Release
tree: shaderc_combined.lib and SPIRV-Tools.lib are found and linked.

Also disables SPIRV-Tools' shared-lib build (BUILD_SHARED_LIBS:BOOL=OFF)
since only the static targets are consumed.
…form-conditional Vulkan wiring

- Move SPIRV-Headers, SPIRV-Tools, vk-bootstrap, shaderc ExternalProject_Add blocks
  and their IMPORTED targets outside if(NOT ANDROID) to unconditional scope
- Keep Vulkan-Headers and Vulkan-Loader inside if(NOT ANDROID) (NDK provides on Android,
  MoltenVK on Apple)
- Add _VK_BOOTSTRAP_VULKAN_HEADERS_DIR platform-conditional variable:
  desktop uses Vulkan-Loader prefix, Android/iOS build Vulkan-Headers from source
- Replace hardcoded VulkanHeaders_DIR in vk-bootstrap with _VK_BOOTSTRAP_VULKAN_HEADERS_DIR
- Verify SGShaderCompiler and SGProcessors link chains: no changes needed
  (all render targets already linked unconditionally)
…S Xcode

- Document prerequisites: NDK r26+, Xcode 15+, CMake 3.22+, Python 3.7+
- Android build commands for arm64-v8a and armeabi-v7a ABIs
- iOS build commands for arm64 device (PLATFORM=OS64, DEPLOYMENT_TARGET=15)
- Expected static library outputs per platform
- Link verification procedure via SuperGenius platform CMake configure
- Troubleshooting: Python, ANDROID_STL, VulkanHeaders_DIR, memory, Xcode
Super-Genius and others added 29 commits August 29, 2026 12:24
The reference bot commit ("updated references") moved MNN back to
84b4cac, which predates the MoltenVK framework linking fix, so the
iOS CI failed with undefined ObjC/Foundation/QuartzCore symbols when
linking MNN's LLM demos against libMoltenVK.a. Point MNN at the fork
tip, which additionally links UIKit (iOS) and the objc runtime.

Co-Authored-By: Claude <noreply@anthropic.com>
MNN a2b29259 adds the missing IF(MNN_BUILD_LLM) INSTALL rule to the
ELSEIF(NOT APPLE) branch, so Linux/Android/Windows thirdparty builds
ship MNN/llm/llm.hpp alongside libMNN.a (library already contained
the Transformer symbols; only the header was dropped).
- libp2p: Autonat detached threads no longer touch a destroyed instance
  (SIGSEGV in child_tokens_test on macOS Release).
- ipfs-pubsub: batch flush timer can no longer wedge PublishBuffered().

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- libp2p: Autonat joins its background threads (fixes shutdown crash).
- ipfs-lite-cpp: graphsync sends requests synchronously again; keeps the
  block-attribution fix.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Pairs with the SuperGenius change that stops handing GraphsyncDAGSyncer
itself to graphsync as the service it answers remote requests from. Without
this bump a responder that lacks a block answers nothing and the requester
waits out its full in-progress timeout.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MNN's dlopen-wrapper mode (the default when MNN_USE_SYSTEM_LIB is off)
compiles vulkan_wrapper.cpp with -DMNN_USE_LIB_WRAPPER, defining every
vk* name as a global function-pointer VARIABLE -- data/STT_OBJECT
symbols inside libMNN.a / MNN.lib. SGProcessors in SuperGenius calls
the vk* API directly against the real Vulkan prototypes, so those data
definitions collide with its direct call sites at link time:

- armeabi-v7a: Thumb BL relocations (R_ARM_THM_CALL) require an
  STT_FUNC target; lld hard-errors with 'interworking not performed'
- arm64-v8a: the same binding silently resolves direct calls to the
  address of the pointer table -- a latent crash on the shipped path
- Windows: same silent data/function binding collision in MNN.lib

Android now links the NDK's libvulkan.so stub (STT_FUNC exports, same
runtime loader on device); Windows links the thirdparty-built
Vulkan-Loader import library. Linux/iOS/OSX already passed
MNN_USE_SYSTEM_LIB=ON via _MNN_EXTRA_PARAM, so all platforms are now
consistent.
A publish whose strand wait expired still publishes, so it now
reports errc::timed_out instead of PUBLISH_FAILED. Lets SuperGenius
keep the transaction queued rather than failing it and demoting the
node to SYNCING for a message that was delivered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…_PATH

The default binary dir (<prefix>/src/shaderc-build) pushes spirv-tools'
MSBuild .tlog paths to 272 chars on Windows, past the 260-char MAX_PATH
limit on runners without OS long-path support (MSB3491, seen on
SG-I9-WIN11 in PR #116). Build in <build>/scb instead (~250 chars worst
case). Install tree and shaderc::shaderc target are unaffected.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@henriqueaklein
henriqueaklein merged commit 969e644 into main Sep 15, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants