mirror of
https://github.com/logos-blockchain/logos-blockchain-module.git
synced 2026-02-21 05:23:12 +00:00
Refactor Nix, CMakeLists and codebase to enable proper nix building, and good IDE integration.
This commit is contained in:
parent
021939a4a0
commit
aa95ce5379
11
.gitignore
vendored
11
.gitignore
vendored
@ -3,19 +3,10 @@
|
||||
*.bak
|
||||
|
||||
# CMake generated files
|
||||
Makefile
|
||||
CMakeFiles/
|
||||
CMakeCache.txt
|
||||
cmake_install.cmake
|
||||
cmake-build-debug
|
||||
.cache/
|
||||
build/
|
||||
target/
|
||||
|
||||
# Artifacts
|
||||
liblogos-blockchain-module.so
|
||||
liblogos-blockchain-module.log
|
||||
result
|
||||
|
||||
# Node
|
||||
logos_blockchain_db/
|
||||
resources/
|
||||
|
||||
245
CMakeLists.txt
245
CMakeLists.txt
@ -4,124 +4,173 @@ project(logos-blockchain-module LANGUAGES CXX)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# ---- Options ----
|
||||
option(LOGOS_MODULE_BUNDLE "Create local runtime bundle in target/." ON)
|
||||
set(LOGOS_CORE_ROOT "" CACHE PATH "Path to logos-core root directory.")
|
||||
set(LOGOS_BLOCKCHAIN_ROOT "" CACHE PATH "Path to logos-blockchain source root.")
|
||||
set(LOGOS_BLOCKCHAIN_LIB "" CACHE PATH "Path to prebuilt logos-blockchain lib.")
|
||||
set(LOGOS_BLOCKCHAIN_INCLUDE "" CACHE PATH "Path to prebuilt logos-blockchain include.")
|
||||
|
||||
set(LOGOS_CORE_ROOT "$ENV{LOGOS_CORE_ROOT}" CACHE PATH "Path to logos-core root")
|
||||
set(LOGOS_BLOCKCHAIN_ROOT "$ENV{LOGOS_BLOCKCHAIN_ROOT}" CACHE PATH "Path to logos-blockchain source root")
|
||||
set(HAS_LOGOS_CORE_ROOT FALSE)
|
||||
set(HAS_LOGOS_BLOCKCHAIN_ROOT FALSE)
|
||||
set(HAS_LOGOS_BLOCKCHAIN_LIB FALSE)
|
||||
set(HAS_LOGOS_BLOCKCHAIN_INCLUDE FALSE)
|
||||
|
||||
if(LOGOS_CORE_ROOT STREQUAL "")
|
||||
message(FATAL_ERROR "LOGOS_CORE_ROOT not set. Pass -DLOGOS_CORE_ROOT=/path/to/logos-core")
|
||||
endif()
|
||||
if(LOGOS_BLOCKCHAIN_ROOT STREQUAL "")
|
||||
message(FATAL_ERROR "LOGOS_BLOCKCHAIN_ROOT not set. Pass -DLOGOS_BLOCKCHAIN_ROOT=/path/to/logos-blockchain")
|
||||
if (DEFINED LOGOS_CORE_ROOT AND NOT "${LOGOS_CORE_ROOT}" STREQUAL "")
|
||||
set(HAS_LOGOS_CORE_ROOT TRUE)
|
||||
endif()
|
||||
|
||||
if (DEFINED LOGOS_BLOCKCHAIN_ROOT AND NOT "${LOGOS_BLOCKCHAIN_ROOT}" STREQUAL "")
|
||||
set(HAS_LOGOS_BLOCKCHAIN_ROOT TRUE)
|
||||
endif()
|
||||
|
||||
if(DEFINED LOGOS_BLOCKCHAIN_LIB AND NOT "${LOGOS_BLOCKCHAIN_LIB}" STREQUAL "")
|
||||
set(HAS_LOGOS_BLOCKCHAIN_LIB TRUE)
|
||||
endif()
|
||||
|
||||
if(DEFINED LOGOS_BLOCKCHAIN_INCLUDE AND NOT "${LOGOS_BLOCKCHAIN_INCLUDE}" STREQUAL "")
|
||||
set(HAS_LOGOS_BLOCKCHAIN_INCLUDE TRUE)
|
||||
endif()
|
||||
|
||||
if (NOT HAS_LOGOS_CORE_ROOT)
|
||||
message(FATAL_ERROR "LOGOS_CORE_ROOT must be set to the logos-core root directory.")
|
||||
endif()
|
||||
|
||||
if(HAS_LOGOS_BLOCKCHAIN_LIB AND HAS_LOGOS_BLOCKCHAIN_INCLUDE AND NOT HAS_LOGOS_BLOCKCHAIN_ROOT)
|
||||
message(STATUS "Using prebuilt logos-blockchain.")
|
||||
set(LOGOS_BLOCKCHAIN_PREBUILT TRUE)
|
||||
elseif(NOT HAS_LOGOS_BLOCKCHAIN_LIB AND NOT HAS_LOGOS_BLOCKCHAIN_INCLUDE AND HAS_LOGOS_BLOCKCHAIN_ROOT)
|
||||
message(STATUS "Building logos-blockchain from source.")
|
||||
set(LOGOS_BLOCKCHAIN_PREBUILT FALSE)
|
||||
else()
|
||||
message(FATAL_ERROR "Either both LOGOS_BLOCKCHAIN_LIB and LOGOS_BLOCKCHAIN_INCLUDE must be set for prebuilt logos-blockchain, or only LOGOS_BLOCKCHAIN_ROOT must be set for building from source.")
|
||||
endif()
|
||||
|
||||
# ---- Qt ----
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
# ---- Directory Structure ----
|
||||
set(WORKSPACE_ROOT "${CMAKE_BINARY_DIR}/workspace")
|
||||
set(INTERNAL_STAGE "${WORKSPACE_ROOT}/stage")
|
||||
set(FINAL_TARGET "${CMAKE_SOURCE_DIR}/target")
|
||||
# ---- Directories ----
|
||||
set(WORKSPACE_ROOT "${CMAKE_BINARY_DIR}/workspace")
|
||||
set(TARGET_DIR "${CMAKE_SOURCE_DIR}/target")
|
||||
file(MAKE_DIRECTORY "${WORKSPACE_ROOT}" "${TARGET_DIR}")
|
||||
|
||||
# Ensure directories exist
|
||||
file(MAKE_DIRECTORY "${INTERNAL_STAGE}/include" "${INTERNAL_STAGE}/lib" "${FINAL_TARGET}")
|
||||
|
||||
# ---- Internal Staging for C++ SDK (Symlinks) ----
|
||||
set(SDK_STAGED_LIB "${INTERNAL_STAGE}/lib/liblogos_sdk.a")
|
||||
if(NOT EXISTS "${SDK_STAGED_LIB}")
|
||||
file(CREATE_LINK "${LOGOS_CORE_ROOT}/lib/liblogos_sdk.a" "${SDK_STAGED_LIB}" SYMBOLIC)
|
||||
file(CREATE_LINK "${LOGOS_CORE_ROOT}/include/core" "${INTERNAL_STAGE}/include/core" SYMBOLIC)
|
||||
file(CREATE_LINK "${LOGOS_CORE_ROOT}/include/cpp" "${INTERNAL_STAGE}/include/cpp" SYMBOLIC)
|
||||
endif()
|
||||
|
||||
# ---- Rust Blockchain Build (Zero-Copy) ----
|
||||
find_program(CARGO_EXECUTABLE cargo REQUIRED)
|
||||
set(CARGO_TARGET_DIR "${WORKSPACE_ROOT}/logos-blockchain/target")
|
||||
# ---- Logos Core SDK ----
|
||||
set(SDK_LIB "${LOGOS_CORE_ROOT}/lib/liblogos_sdk.a")
|
||||
set(SDK_INC "${LOGOS_CORE_ROOT}/include")
|
||||
|
||||
# ---- OS Specifics ----
|
||||
if(APPLE)
|
||||
set(LOGOS_BLOCKCHAIN_EXT ".dylib")
|
||||
set(DYLIB_EXT ".dylib")
|
||||
elseif(WIN32)
|
||||
set(LOGOS_BLOCKCHAIN_EXT ".dll")
|
||||
set(DYLIB_EXT ".dll")
|
||||
set(IMPLIB_EXT ".lib")
|
||||
else()
|
||||
set(LOGOS_BLOCKCHAIN_EXT ".so")
|
||||
set(DYLIB_EXT ".so")
|
||||
endif()
|
||||
|
||||
set(LOGOS_BLOCKCHAIN_C_SOURCE_DYLIB_NAME "liblib_logos_blockchain${LOGOS_BLOCKCHAIN_EXT}")
|
||||
set(LOGOS_BLOCKCHAIN_C_STAGED_DYLIB_NAME "lib_logos_blockchain${LOGOS_BLOCKCHAIN_EXT}")
|
||||
set(LOGOS_BLOCKCHAIN_C_HEADER_NAME "lib_logos_blockchain.h")
|
||||
# NOTE (Windows):
|
||||
# Rust cdylib typically produces:
|
||||
# - logos_blockchain.dll (runtime)
|
||||
# - logos_blockchain.lib (import lib)
|
||||
# The Windows build hasn't been yet, so adjust accordingly if the DLL is named without the 'lib' prefix.
|
||||
|
||||
set(LOGOS_BLOCKCHAIN_STAGED_DYLIB "${INTERNAL_STAGE}/lib/${LOGOS_BLOCKCHAIN_C_STAGED_DYLIB_NAME}")
|
||||
set(LOGOS_BLOCKCHAIN_STAGED_HEADER "${INTERNAL_STAGE}/include/${LOGOS_BLOCKCHAIN_C_HEADER_NAME}")
|
||||
# ---- Logos Blockchain (build OR consume) ----
|
||||
if(LOGOS_BLOCKCHAIN_PREBUILT)
|
||||
set(LOGOS_BLOCKCHAIN_DYLIB "${LOGOS_BLOCKCHAIN_LIB}/liblogos_blockchain${DYLIB_EXT}")
|
||||
|
||||
set(PATCHELF_COMMANDS "")
|
||||
if(UNIX AND NOT APPLE AND NOT WIN32)
|
||||
find_program(PATCHELF_EXE patchelf REQUIRED)
|
||||
set(PATCHELF_COMMANDS
|
||||
COMMAND ${PATCHELF_EXE} --set-soname "${LOGOS_BLOCKCHAIN_C_STAGED_DYLIB_NAME}" "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
)
|
||||
if(WIN32)
|
||||
set(LOGOS_BLOCKCHAIN_IMPLIB "${LOGOS_BLOCKCHAIN_LIB}/logos_blockchain${IMPLIB_EXT}")
|
||||
endif()
|
||||
|
||||
add_custom_target(logos_blockchain_libs)
|
||||
|
||||
else()
|
||||
find_program(CARGO_EXECUTABLE cargo REQUIRED)
|
||||
|
||||
set(CARGO_TARGET_DIR "${WORKSPACE_ROOT}/logos-blockchain/target")
|
||||
set(INTERNAL_STAGE "${WORKSPACE_ROOT}/stage")
|
||||
set(INTERNAL_STAGE_LIB "${INTERNAL_STAGE}/lib")
|
||||
set(INTERNAL_STAGE_INCLUDE "${INTERNAL_STAGE}/include")
|
||||
file(MAKE_DIRECTORY "${CARGO_TARGET_DIR}" "${INTERNAL_STAGE_LIB}" "${INTERNAL_STAGE_INCLUDE}")
|
||||
|
||||
set(LOGOS_BLOCKCHAIN_LIB "${INTERNAL_STAGE_LIB}")
|
||||
set(LOGOS_BLOCKCHAIN_INCLUDE "${INTERNAL_STAGE_INCLUDE}")
|
||||
|
||||
set(LOGOS_BLOCKCHAIN_DYLIB "${INTERNAL_STAGE_LIB}/liblogos_blockchain${DYLIB_EXT}")
|
||||
set(LOGOS_BLOCKCHAIN_HEADER "${INTERNAL_STAGE_INCLUDE}/logos_blockchain.h")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${LOGOS_BLOCKCHAIN_DYLIB}"
|
||||
COMMAND ${CMAKE_COMMAND} -E env
|
||||
CARGO_TARGET_DIR=${CARGO_TARGET_DIR}
|
||||
${CARGO_EXECUTABLE} build --release
|
||||
--package logos-blockchain-c
|
||||
--manifest-path "${LOGOS_BLOCKCHAIN_ROOT}/Cargo.toml"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
"${CARGO_TARGET_DIR}/release/liblogos_blockchain${DYLIB_EXT}"
|
||||
"${LOGOS_BLOCKCHAIN_DYLIB}"
|
||||
DEPENDS "${LOGOS_BLOCKCHAIN_ROOT}/Cargo.toml"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${LOGOS_BLOCKCHAIN_HEADER}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${LOGOS_BLOCKCHAIN_ROOT}/c-bindings/logos_blockchain.h"
|
||||
"${LOGOS_BLOCKCHAIN_HEADER}"
|
||||
DEPENDS "${LOGOS_BLOCKCHAIN_DYLIB}"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(logos_blockchain_libs DEPENDS "${LOGOS_BLOCKCHAIN_DYLIB}" "${LOGOS_BLOCKCHAIN_HEADER}")
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CARGO_TARGET_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E env
|
||||
CARGO_TERM_COLOR=always
|
||||
CARGO_TARGET_DIR=${CARGO_TARGET_DIR}
|
||||
cargo build --release --package logos-blockchain-c --manifest-path "${LOGOS_BLOCKCHAIN_ROOT}/Cargo.toml"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
"${CARGO_TARGET_DIR}/release/${LOGOS_BLOCKCHAIN_C_SOURCE_DYLIB_NAME}"
|
||||
"${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
${PATCHELF_COMMANDS}
|
||||
DEPENDS "${LOGOS_BLOCKCHAIN_ROOT}/Cargo.toml"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${LOGOS_BLOCKCHAIN_STAGED_HEADER}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${LOGOS_BLOCKCHAIN_ROOT}/c-bindings/${LOGOS_BLOCKCHAIN_C_HEADER_NAME}"
|
||||
"${LOGOS_BLOCKCHAIN_STAGED_HEADER}"
|
||||
DEPENDS "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(logos_blockchain_libs DEPENDS "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}" "${LOGOS_BLOCKCHAIN_STAGED_HEADER}")
|
||||
|
||||
# ---- Imported targets ----
|
||||
add_library(logos_blockchain_interface SHARED IMPORTED GLOBAL)
|
||||
set_target_properties(logos_blockchain_interface PROPERTIES
|
||||
IMPORTED_LOCATION "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${INTERNAL_STAGE}/include"
|
||||
IMPORTED_LOCATION "${LOGOS_BLOCKCHAIN_DYLIB}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LOGOS_BLOCKCHAIN_INCLUDE}"
|
||||
)
|
||||
add_dependencies(logos_blockchain_interface logos_blockchain_libs)
|
||||
|
||||
# ---- C++ SDK Target (using staged symlinks) ----
|
||||
add_library(logos_cpp_sdk INTERFACE)
|
||||
target_include_directories(logos_cpp_sdk INTERFACE
|
||||
"${INTERNAL_STAGE}/include"
|
||||
)
|
||||
if(NOT LOGOS_BLOCKCHAIN_PREBUILT)
|
||||
add_dependencies(logos_blockchain_interface logos_blockchain_libs)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties(logos_blockchain_interface PROPERTIES IMPORTED_IMPLIB "${LOGOS_BLOCKCHAIN_IMPLIB}")
|
||||
endif()
|
||||
|
||||
add_library(logos_core STATIC IMPORTED)
|
||||
set_target_properties(logos_core PROPERTIES
|
||||
IMPORTED_LOCATION "${SDK_STAGED_LIB}"
|
||||
IMPORTED_LOCATION "${SDK_LIB}"
|
||||
)
|
||||
|
||||
add_library(logos_cpp_sdk INTERFACE)
|
||||
target_include_directories(logos_cpp_sdk INTERFACE "${SDK_INC}")
|
||||
|
||||
# ---- Plugin ----
|
||||
set(PLUGIN_TARGET "liblogos-blockchain-module")
|
||||
set(PLUGIN_TARGET liblogos-blockchain-module)
|
||||
|
||||
qt_add_plugin(${PLUGIN_TARGET} CLASS_NAME LogosBlockchainModule)
|
||||
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES
|
||||
OUTPUT_NAME "logos-blockchain-module"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${FINAL_TARGET}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${TARGET_DIR}"
|
||||
)
|
||||
|
||||
target_sources(${PLUGIN_TARGET} PRIVATE
|
||||
"library.cpp"
|
||||
"metadata.json"
|
||||
library.cpp
|
||||
metadata.json
|
||||
)
|
||||
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES
|
||||
PUBLIC_HEADER "library.h"
|
||||
)
|
||||
|
||||
|
||||
target_link_libraries(${PLUGIN_TARGET} PRIVATE
|
||||
Qt6::Core
|
||||
logos_blockchain_interface
|
||||
@ -129,36 +178,36 @@ target_link_libraries(${PLUGIN_TARGET} PRIVATE
|
||||
logos_core
|
||||
)
|
||||
|
||||
target_compile_definitions(${PLUGIN_TARGET} PRIVATE USING_QT)
|
||||
|
||||
# Ensure the Rust backend is always built before the plugin
|
||||
add_dependencies(${PLUGIN_TARGET} logos_blockchain_libs)
|
||||
|
||||
# RPATH so the plugin finds the Rust .so in the same folder
|
||||
if(APPLE)
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES BUILD_RPATH "@loader_path" INSTALL_RPATH "@loader_path")
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES
|
||||
BUILD_RPATH "@loader_path"
|
||||
INSTALL_RPATH "@loader_path"
|
||||
)
|
||||
elseif(UNIX)
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES BUILD_RPATH "$ORIGIN" INSTALL_RPATH "$ORIGIN")
|
||||
set_target_properties(${PLUGIN_TARGET} PROPERTIES
|
||||
BUILD_RPATH "$ORIGIN"
|
||||
INSTALL_RPATH "$ORIGIN"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Copy Rust library to final target folder next to the plugin
|
||||
add_custom_command(TARGET ${PLUGIN_TARGET} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
"${FINAL_TARGET}/${LOGOS_BLOCKCHAIN_C_STAGED_DYLIB_NAME}"
|
||||
VERBATIM
|
||||
)
|
||||
# ---- Optional local bundle ----
|
||||
if(LOGOS_MODULE_BUNDLE)
|
||||
add_custom_command(TARGET ${PLUGIN_TARGET} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${LOGOS_BLOCKCHAIN_DYLIB}"
|
||||
"${TARGET_DIR}/liblogos_blockchain${DYLIB_EXT}"
|
||||
VERBATIM
|
||||
)
|
||||
endif()
|
||||
|
||||
# ---- Installation ----
|
||||
# ---- Install ----
|
||||
install(TARGETS ${PLUGIN_TARGET}
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
install(FILES library.h DESTINATION include)
|
||||
|
||||
install(FILES "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}"
|
||||
DESTINATION lib
|
||||
RENAME "${LOGOS_BLOCKCHAIN_C_STAGED_DYLIB_NAME}"
|
||||
)
|
||||
install(DIRECTORY "${LOGOS_BLOCKCHAIN_INCLUDE}/" DESTINATION include)
|
||||
install(FILES "${LOGOS_BLOCKCHAIN_DYLIB}" DESTINATION lib)
|
||||
|
||||
344
flake.lock
generated
344
flake.lock
generated
@ -1,25 +1,90 @@
|
||||
{
|
||||
"nodes": {
|
||||
"logos-blockchain": {
|
||||
"flake": false,
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1768919760,
|
||||
"narHash": "sha256-YJ8VjYl8QgT7htdAsy38bgKzpYB2k4jn8Y820Swqbmg=",
|
||||
"lastModified": 1769287525,
|
||||
"narHash": "sha256-gABuYA6BzoRMLuPaeO5p7SLrpd4qExgkwEmYaYQY4bM=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "0314e365877a85c9e5758f9ea77a9972afbb4c21",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-blockchain": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"logos-blockchain-circuits": "logos-blockchain-circuits",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769692605,
|
||||
"narHash": "sha256-8V1SRCZw6o0vCgEI8FmBnw056jmFackhZJzwCXtjmj4=",
|
||||
"owner": "logos-blockchain",
|
||||
"repo": "logos-blockchain",
|
||||
"rev": "73d977aa5e9ffb2de8d7708b29be2f00636aa22b",
|
||||
"rev": "63e9806adda4a6ba9b75bef7adf478535a879b0a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-blockchain",
|
||||
"ref": "ci/circuits/integrate-binaries-on-tests-using-nix",
|
||||
"repo": "logos-blockchain",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-blockchain-circuits": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769615660,
|
||||
"narHash": "sha256-B2CYcJWuJIXAJaWgBcY4k0FTxo62mI8Hd9RqBECfq4o=",
|
||||
"owner": "logos-blockchain",
|
||||
"repo": "logos-blockchain-circuits",
|
||||
"rev": "1576b3a31ff784e21884a4509e71ee61fb10fa7e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-blockchain",
|
||||
"ref": "feat/nixify",
|
||||
"repo": "logos-blockchain-circuits",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-capability-module": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_2",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk",
|
||||
"logos-liblogos": "logos-liblogos_2",
|
||||
"nixpkgs": [
|
||||
"logos-liblogos",
|
||||
"logos-capability-module",
|
||||
"logos-liblogos",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767809111,
|
||||
"narHash": "sha256-jehjsB+BpDJlVu3I7x+vFVOdXmy9MDmFTJtRqzFUONo=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-capability-module",
|
||||
"rev": "7b35383e0aa4e28a4633ed18a87efb57636939b1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-capability-module",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-capability-module_2": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_4",
|
||||
"logos-liblogos": "logos-liblogos_3",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-capability-module",
|
||||
@ -43,7 +108,7 @@
|
||||
},
|
||||
"logos-core": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767724329,
|
||||
@ -61,14 +126,14 @@
|
||||
},
|
||||
"logos-cpp-sdk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764699992,
|
||||
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
|
||||
"lastModified": 1761230734,
|
||||
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
|
||||
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -79,7 +144,7 @@
|
||||
},
|
||||
"logos-cpp-sdk_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761230734,
|
||||
@ -96,42 +161,6 @@
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761230734,
|
||||
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764699992,
|
||||
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_5": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
@ -149,7 +178,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_6": {
|
||||
"logos-cpp-sdk_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
},
|
||||
@ -167,7 +196,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_7": {
|
||||
"logos-cpp-sdk_5": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
@ -185,9 +214,82 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_6": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764699992,
|
||||
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_7": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764699992,
|
||||
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_8": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_11"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761230734,
|
||||
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-cpp-sdk_9": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_12"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761230734,
|
||||
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-cpp-sdk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-liblogos": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk",
|
||||
"logos-capability-module": "logos-capability-module",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_3",
|
||||
"nixpkgs": [
|
||||
"logos-liblogos",
|
||||
"logos-cpp-sdk",
|
||||
@ -195,11 +297,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1768343028,
|
||||
"narHash": "sha256-4LvsuZTDTlLtfMF4C69ls+lmkYJWD7LZitS04Mc+8UI=",
|
||||
"lastModified": 1769640265,
|
||||
"narHash": "sha256-hwnkxGxY2V0N1U6iNW02gY7mfcPSg+KG2plZv/rEf9k=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-liblogos",
|
||||
"rev": "a76d33f5519af0ee12317c8f149eee2ac5d292a0",
|
||||
"rev": "02dd00d6a000f3d45bcf0f36f849ff14da2e6d75",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -210,9 +312,9 @@
|
||||
},
|
||||
"logos-liblogos_2": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_3",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_2",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-liblogos",
|
||||
"logos-capability-module",
|
||||
"logos-liblogos",
|
||||
"logos-cpp-sdk",
|
||||
@ -236,6 +338,31 @@
|
||||
"logos-liblogos_3": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_5",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-capability-module",
|
||||
"logos-liblogos",
|
||||
"logos-cpp-sdk",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761845775,
|
||||
"narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=",
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-liblogos",
|
||||
"rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "logos-co",
|
||||
"repo": "logos-liblogos",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-liblogos_4": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_7",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-liblogos",
|
||||
@ -257,9 +384,9 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"logos-liblogos_4": {
|
||||
"logos-liblogos_5": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_7",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_9",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-package-manager",
|
||||
@ -284,9 +411,9 @@
|
||||
},
|
||||
"logos-module-viewer": {
|
||||
"inputs": {
|
||||
"logos-capability-module": "logos-capability-module",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_4",
|
||||
"logos-liblogos": "logos-liblogos_3",
|
||||
"logos-capability-module": "logos-capability-module_2",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_6",
|
||||
"logos-liblogos": "logos-liblogos_4",
|
||||
"logos-package-manager": "logos-package-manager",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
@ -310,8 +437,8 @@
|
||||
},
|
||||
"logos-package-manager": {
|
||||
"inputs": {
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_6",
|
||||
"logos-liblogos": "logos-liblogos_4",
|
||||
"logos-cpp-sdk": "logos-cpp-sdk_8",
|
||||
"logos-liblogos": "logos-liblogos_5",
|
||||
"nixpkgs": [
|
||||
"logos-module-viewer",
|
||||
"logos-package-manager",
|
||||
@ -334,6 +461,54 @@
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1769461804,
|
||||
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_10": {
|
||||
"locked": {
|
||||
"lastModified": 1759036355,
|
||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_11": {
|
||||
"locked": {
|
||||
"lastModified": 1759036355,
|
||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_12": {
|
||||
"locked": {
|
||||
"lastModified": 1759036355,
|
||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||
@ -351,11 +526,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1759036355,
|
||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||
"lastModified": 1769461804,
|
||||
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
||||
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -461,6 +636,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1759036355,
|
||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"logos-blockchain": "logos-blockchain",
|
||||
@ -472,6 +663,27 @@
|
||||
"nixpkgs"
|
||||
]
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"logos-blockchain",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769568593,
|
||||
"narHash": "sha256-vf3cZf8imUlPzFtICa1uyReDzoPV0XhHOIRM3tqI5VY=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "6fe5039018d05cee5d01dda7df1c0846fb7943a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
||||
132
flake.nix
132
flake.nix
@ -1,112 +1,138 @@
|
||||
{
|
||||
description = "Logos Blockchain Module - Qt6 Plugin (Nix)";
|
||||
description = "Logos Blockchain Module - Qt6 Plugin";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.follows = "logos-liblogos/nixpkgs";
|
||||
|
||||
logos-liblogos.url = "github:logos-co/logos-liblogos";
|
||||
logos-core.url = "github:logos-co/logos-cpp-sdk";
|
||||
logos-blockchain = {
|
||||
url = "github:logos-blockchain/logos-blockchain";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
logos-blockchain.url = "github:logos-blockchain/logos-blockchain?ref=ci/circuits/integrate-binaries-on-tests-using-nix";
|
||||
|
||||
logos-module-viewer.url = "github:logos-co/logos-module-viewer";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, ... }@inputs:
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
logos-core,
|
||||
logos-blockchain,
|
||||
logos-module-viewer,
|
||||
...
|
||||
}:
|
||||
let
|
||||
systems = [ "aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux" ];
|
||||
forAllSystems = f: nixpkgs.lib.genAttrs systems (system:
|
||||
lib = nixpkgs.lib;
|
||||
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
|
||||
forAll = lib.genAttrs systems;
|
||||
|
||||
mkPkgs = system: import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
packages = forAll (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
pkgs = mkPkgs system;
|
||||
llvmPkgs = pkgs.llvmPackages;
|
||||
logosCore = inputs.logos-core.packages.${system}.default;
|
||||
logosBlockchain = inputs.logos-blockchain;
|
||||
|
||||
# 1. Environment variables shared by build and shell
|
||||
env = {
|
||||
LOGOS_CORE_ROOT = "${logosCore}";
|
||||
LOGOS_BLOCKCHAIN_ROOT = "${logosBlockchain}";
|
||||
LIBCLANG_PATH = "${llvmPkgs.libclang.lib}/lib";
|
||||
CLANG_PATH = "${llvmPkgs.clang}/bin/clang";
|
||||
};
|
||||
logosCore = logos-core.packages.${system}.default;
|
||||
logosBlockchainC = logos-blockchain.packages.${system}.logos-blockchain-c;
|
||||
|
||||
logosBlockchainModule = pkgs.stdenv.mkDerivation {
|
||||
pname = "logos-blockchain-module";
|
||||
version = "dev";
|
||||
src = ./.;
|
||||
|
||||
# 2. Tools and libraries shared by build and shell
|
||||
baseArgs = env // {
|
||||
nativeBuildInputs = [
|
||||
pkgs.cmake
|
||||
pkgs.ninja
|
||||
pkgs.pkg-config
|
||||
pkgs.patchelf
|
||||
pkgs.qt6.wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
pkgs.qt6.qtbase
|
||||
pkgs.qt6.qttools
|
||||
pkgs.rustc
|
||||
pkgs.cargo
|
||||
pkgs.git
|
||||
llvmPkgs.clang
|
||||
llvmPkgs.llvm
|
||||
llvmPkgs.libclang
|
||||
] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
|
||||
logosBlockchainC
|
||||
]
|
||||
++ lib.optionals pkgs.stdenv.isDarwin [
|
||||
pkgs.libiconv
|
||||
];
|
||||
};
|
||||
|
||||
viewer = inputs.logos-module-viewer.packages.${system}.default;
|
||||
LIBCLANG_PATH = "${llvmPkgs.libclang.lib}/lib";
|
||||
CLANG_PATH = "${llvmPkgs.clang}/bin/clang";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLOGOS_CORE_ROOT=${logosCore}"
|
||||
"-DLOGOS_BLOCKCHAIN_LIB=${logosBlockchainC}/lib"
|
||||
"-DLOGOS_BLOCKCHAIN_INCLUDE=${logosBlockchainC}/include"
|
||||
"-DLOGOS_MODULE_BUNDLE=OFF"
|
||||
];
|
||||
};
|
||||
in
|
||||
f { inherit pkgs system baseArgs viewer; });
|
||||
in
|
||||
{
|
||||
packages = forAllSystems ({ pkgs, baseArgs, ... }:
|
||||
{
|
||||
default = pkgs.stdenv.mkDerivation (baseArgs // {
|
||||
pname = "logos-blockchain-module";
|
||||
version = "dev";
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = baseArgs.nativeBuildInputs ++ [ pkgs.qt6.wrapQtAppsHook ];
|
||||
|
||||
CARGO_HOME = "${"$"}TMPDIR/cargo-home";
|
||||
preConfigure = "mkdir -p $CARGO_HOME";
|
||||
});
|
||||
logos-blockchain-module = logosBlockchainModule;
|
||||
default = logosBlockchainModule;
|
||||
}
|
||||
);
|
||||
|
||||
apps = forAllSystems ({ pkgs, system, viewer, ... }:
|
||||
apps = forAll (
|
||||
system:
|
||||
let
|
||||
pkg = self.packages.${system}.default;
|
||||
pkgs = mkPkgs system;
|
||||
logosBlockchainModule = self.packages.${system}.logos-blockchain-module;
|
||||
logosModuleViewer = logos-module-viewer.packages.${system}.default;
|
||||
in
|
||||
{
|
||||
default = {
|
||||
type = "app";
|
||||
program = "${pkgs.writeShellScriptBin "inspect-module" ''
|
||||
${viewer}/bin/logos-module-viewer --module ${pkg}/lib/liblogos-blockchain-module.so
|
||||
''}/bin/inspect-module";
|
||||
program =
|
||||
"${pkgs.writeShellScriptBin "inspect-module" ''
|
||||
exec ${logosModuleViewer}/bin/logos-module-viewer \
|
||||
--module ${logosBlockchainModule}/lib/liblogos-blockchain-module.so
|
||||
''}/bin/inspect-module";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
devShells = forAllSystems ({ pkgs, system, ... }:
|
||||
devShells = forAll (
|
||||
system:
|
||||
let
|
||||
pkgs = mkPkgs system;
|
||||
pkg = self.packages.${system}.default;
|
||||
logosCore = logos-core.packages.${system}.default;
|
||||
logosBlockchainC = logos-blockchain.packages.${system}.logos-blockchain-c;
|
||||
in
|
||||
{
|
||||
default = pkgs.mkShell {
|
||||
inputsFrom = [ pkg ];
|
||||
|
||||
# Inherit environment variables from the package
|
||||
inherit (pkg) LOGOS_CORE_ROOT LOGOS_BLOCKCHAIN_ROOT LIBCLANG_PATH CLANG_PATH;
|
||||
inherit (pkg)
|
||||
LIBCLANG_PATH
|
||||
CLANG_PATH;
|
||||
|
||||
LOGOS_CORE_ROOT = "${logosCore}";
|
||||
LOGOS_BLOCKCHAIN_LIB = "${logosBlockchainC}/lib";
|
||||
LOGOS_BLOCKCHAIN_INCLUDE = "${logosBlockchainC}/include";
|
||||
|
||||
shellHook = ''
|
||||
BLUE='\e[1;34m'
|
||||
GREEN='\e[1;32m'
|
||||
YELLOW='\e[1;33m'
|
||||
RESET='\e[0m'
|
||||
|
||||
echo -e "\n''${BLUE}=== Logos Blockchain Module Development Environment ===''${RESET}"
|
||||
echo -e "''${GREEN}Core SDK:''${RESET} $LOGOS_CORE_ROOT"
|
||||
echo -e "''${GREEN}Blockchain:''${RESET} $LOGOS_BLOCKCHAIN_ROOT"
|
||||
echo -e "''${GREEN}LOGOS_CORE_ROOT:''${RESET} $LOGOS_CORE_ROOT"
|
||||
echo -e "''${GREEN}LOGOS_BLOCKCHAIN_LIB:''${RESET} $LOGOS_BLOCKCHAIN_LIB"
|
||||
echo -e "''${GREEN}LOGOS_BLOCKCHAIN_INCLUDE:''${RESET} $LOGOS_BLOCKCHAIN_INCLUDE"
|
||||
echo -e "''${BLUE}---------------------------------------------------------''${RESET}"
|
||||
'';
|
||||
};
|
||||
|
||||
31
justfile
31
justfile
@ -3,38 +3,19 @@ default: build
|
||||
configure:
|
||||
cmake -S . -B build -G Ninja \
|
||||
${LOGOS_CORE_ROOT:+-DLOGOS_CORE_ROOT="$LOGOS_CORE_ROOT"} \
|
||||
${LOGOS_BLOCKCHAIN_ROOT:+-DLOGOS_BLOCKCHAIN_ROOT="$LOGOS_BLOCKCHAIN_ROOT"} \
|
||||
-DCOPY_PLUGIN_TO_SOURCE_DIR=ON
|
||||
${LOGOS_BLOCKCHAIN_LIB:+-DLOGOS_BLOCKCHAIN_LIB="$LOGOS_BLOCKCHAIN_LIB"} \
|
||||
${LOGOS_BLOCKCHAIN_INCLUDE:+-DLOGOS_BLOCKCHAIN_INCLUDE="$LOGOS_BLOCKCHAIN_INCLUDE"}
|
||||
|
||||
build:
|
||||
build: configure
|
||||
cmake --build build --parallel --target liblogos-blockchain-module
|
||||
|
||||
update: clean-full
|
||||
cmake --build build --parallel --target logos_blockchain_libs
|
||||
just build
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
rm -rf target
|
||||
rm -f liblogos-blockchain-module.log
|
||||
rm -rf logos_blockchain_db/
|
||||
|
||||
clean-full: clean
|
||||
rm -rf build target
|
||||
|
||||
rebuild: clean configure build
|
||||
|
||||
run:
|
||||
RUST_BACKTRACE=full RUST_LOG=trace ../logos-module-viewer/result/bin/logos-module-viewer --module target/liblogos-blockchain-module.so > liblogos-blockchain-module.log 2>&1
|
||||
|
||||
nix:
|
||||
nix develop .#
|
||||
nix develop
|
||||
|
||||
# View the log with unicode characters rendered
|
||||
unicode-logs file:
|
||||
perl -pe 's/\\u([0-9A-Fa-f]{4})/chr(hex($1))/ge' {{ file }} | less -R
|
||||
|
||||
logs:
|
||||
just unicode-logs liblogos-blockchain-module.log
|
||||
|
||||
logs-tail:
|
||||
tail -f liblogos-blockchain-module.log | perl -pe 's/\\u([0-9A-Fa-f]{4})/chr(hex($1))/ge'
|
||||
perl -pe 's/\\u([0-9A-Fa-f]{4})/chr(hex($1))/ge' {{file}} | less -R
|
||||
|
||||
@ -37,7 +37,8 @@ public:
|
||||
// TODO: Ensure proper cleanup on SIGINT
|
||||
|
||||
const QByteArray path = config_path.toUtf8();
|
||||
auto [value, error] = start_lb_node(path.constData());
|
||||
const char* deployment = nullptr;
|
||||
auto [value, error] = start_lb_node(path.constData(), deployment);
|
||||
|
||||
if (!is_ok(&error)) {
|
||||
qCritical() << "Failed to start the node. Error:" << error;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user